前言
针对阈值分割后的图像,如果存在一些孔洞需要去填充,则可以使用图像膨胀的方式来处理。
1、图像膨胀原理
原始图像A (前景为1/X)
. . . . . . . . .
. . . . . . . . .
. . X X X . . . .
. . X X X . . . .
. . . . . . . . .
. . . . . . . . .
圆形结构元素B (3x3圆形,原点在中心)
. . .
. X .
X X X
. X .
. . .
膨胀的工作流程就像用这个"探针"去扫描图像的每一个像素:
定位:将结构元素的中心点(或称"锚点")对准图像中一个待考察的像素。
探测:查看以该像素为中心、结构元素覆盖的所有邻域像素。
判定:如果结构元素覆盖的区域内,有一个或多个像素是白色的,那么中心像素的输出值就置为白色(被"膨胀"了)。否则,保持原状。
. . . . . . . . .
. . .X X X . . .
. X X X X X . . .
. X X X X X . . .
. . .X X X . . .
. . . . . . . . .
2、halcon算子应用
csharp
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
mean_image (Image, ImageMean, 15, 15)
threshold (Image, Region, 128, 255)
gen_circle (struct, 10, 10, 10)
dilation1 (Region, struct, RegionDilation, 1)
图像膨胀一般发生在阈值分割之后,上面的dilation1就是发生在阈值分割threshold 之后,dilation1 算子共有4个参数。
第1个参数是输入区域(注意不是图像)
第2个参数是自定义的结构元素,这里就是定义的圆形结构元素,gen_circle定义了一个圆心为(10,10),半径为10的圆形结构元素
第3个参数是膨胀后得到的区域
第4个参数是迭代次数,也就是膨胀操作执行的次数
3、dilation1 膨胀图像处理后效果
1)处理前

1)处理后

能看出很多的小孔都被填充了,只剩下一些原来就比较大的孔。