哎呀终于又到了核心技术之一啦 激动惹!
目前比较成熟的图像分割技术有边缘检测方法、阈值分割法、区域分割技术等。近十几年来,又有形态学、小波变换、模糊数学等方法,形态学后面等说开闭变换的时候说,小波变换应该后面会有专门的一节来总结,这一节先说经典的几种方法好啦。。
边缘分割技术
边缘分割技术是通过边缘检测来实现的,而边缘检测又是通过物体和背景在图像特性上的差异来实现的。常见的边缘检测方法一般都是用滤波器,使用的算子有微分算子、Canny算子、Log算子等。微分算子又分Prewitt算子、Roberts算子、Sobel算子、Laplacian算子等。
1 间断点与线段的检测
前面也说了,对于图像中的间断点,检测模板一般是:
np.array([-1,-1,-1],
[-1, 8,-1],
[-1,-1,-1])
而对于线段,检测模板就有:
np.array([-1,-1,-1],
[ 2, 2, 2],
[-1,-1,-1]) # 水平线段
np.array([-1, 2,-1],
[-1, 2,-1],
[-1, 2,-1]) # 竖直线段
np.array([-1,-1, 2],
[-1, 2,-1],
[ 2,-1,-1]) # +45度线段
np.array([ 2,-1,-1],
[-1, 2,-1],
[-1,-1, 2]) # -45度线段
可以通过滤波函数用这四个滤波器对图像进行滤波(或者说卷积 无所谓啦),然后把得到的结果加在一起,就能覆盖整张图片中大部分的线段。
2 微分算子
用于边缘检测时,matlab中有edge
函数直接取,需要自己选择算子,而且这个函数还自动取阈值来得到边缘,输出的是二值图像。
2.1 Roberts算子
首先有Roberts算子,对于离散的图像f(x,y),边缘检测算子就是用水平和垂直差分逼近梯度算子,这种算子由两个2*2矩阵组成:
np.array([1 , 0],
[0 ,-1])
np