Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。对比其他边缘检测算子,Perwitt算子对边缘的定位精度不如Roberts算子,实现方法与Sobel算子类似,但是实现的功能差距很大,Sobel算子对边缘检测的准确性更优于Prewitt算子。
对于图像f(x,y),Prewitt边缘检测输出图像G,图像的Prewitt边缘检测算子可由下式确定:
对于输出的最后图像G,可以根据G = max(Gx,Gy)或者G = Gx+Gy得到,凡是灰度新值大于或等于阈值的像素点就认为是边缘点。根据上面的公式可得到Prewitt算子的模板如下:
Prewitt边缘检测的代码如下:
#include