Prewitt和Sobel算子
程序员文章站
2022-03-22 16:56:03
...
在3*3模板中:
我如下定义水平、垂直和两对角线方向的梯度:
该定义下的算子称之为Prewitt算子:
Sobel算子是在Prewitt算子的基础上改进的,在中心系数上使用一个权值2,相比较Prewitt算子,Sobel模板能够较好的抑制(平滑)噪声。
计算公式为:
Sobel算子:
上述所有算子都是通过求一阶导数来计算梯度的,用于线的检测,在图像处理中,通常用于边缘检测。在图像处理过程中,除了检测线,有时候也需要检测特殊点,这就需要用二阶导数进行检测。
Mat src = imread("test.png", IMREAD_GRAYSCALE);
imshow("src", src);
//X方向—Prewitt算子
Mat imgx;
Mat kernel_x = (Mat_<int>(3, 3) << -1, -1, -1, 0, 0, 0, 1, 1, 1);
filter2D(src, imgx, -1, kernel_x, Point(-1, -1), 0, 0);
imshow("x方向", imgx);
Mat imgy;
//Y方向—Prewitt算子
Mat kernel_y = (Mat_<int>(3, 3) << -1, 0, 1, -1, 0, 1, -1, 0, 1);
filter2D(src, imgy, -1, kernel_y, Point(-1, -1), 0, 0);
imshow("y方向", imgy);
waitKey();
参考:
推荐阅读
-
php和js实现根据子网掩码和ip计算子网功能示例
-
php和js实现根据子网掩码和ip计算子网功能示例
-
OpenCV图像处理教程C++(十五)边缘检测算法--sobel算子、拉普拉斯算子、Canny算子
-
【OpenCV】边缘检测:Sobel、拉普拉斯算子
-
python—opencv图像膨胀|图像腐蚀|图像边缘检测sobel算子/拉普拉斯算子/canny算子
-
Opencv图像处理——边缘处理Sobel、拉普拉斯算子
-
opencv使用sobel算子提取图像的边缘信息
-
Unity之梯度应用实现Roberts、Prewitt、Sobel边缘检测
-
Sobel算子和Scharr算子
-
MATLAB-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化