机器视觉——sobel算子边缘检测

  Sobel算法主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值, Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。 

  这次我们使用sobel算子边缘检测的方法来获取图像的边缘,任务图片如下:

 

   首先使用imshow()读取图片:

 

 

 

   接着使用Sobel()函数获取图片x,y轴上的边缘信息:

 

   其中CV_16S是为防止系统进行sobel运算后出现负值或大于255的值导致图片出现截断现象,而将图像数据类型改为16位有符号的数据类型。convertScaleAbs()函数是将其转换回原来的8位无符号数的形式将图片输出。经过sobel处理后得到如下两张图:

  x轴边缘

 

   y轴边缘

 

   接着使用addWeighted()函数将两张图组合起来,组合后的图片即是我们需要的图片边缘图像:

 

 

 

   最后一步,将图像反相,得到清晰的图片边缘图像:

 

 

 

   以上就是open CV使用Sobel算子边缘检测提取图片边缘的完整步骤。

posted @ 2020-03-08 00:38  寡人略帅  阅读(1183)  评论(0)    收藏  举报