腐蚀与膨胀:通过腐蚀与膨胀操作对二值图像区域进行“收缩”或“扩张”。
结构元素
结构元素一般由0和1的二值像素组成。结构元素的原点相当于“小窗”的中心,其尺寸大小具体由算子指定,结构元素的尺寸也决定着腐蚀或者膨胀的程度。结构元素的形状可以说圆形、矩形、椭圆形,甚至也可以是指定的多边形状。
二值图像
二值图像:仅有“0" "1”两个像素值的图像
腐蚀
腐蚀操作是对所选区域进行“收缩”的一种操作,可以用于消除边缘和杂点。腐蚀区域的大小与结构元素的大小和形状有关。
原理:使用一个结构元素(如矩形、圆形或自定义多边形),用其原点在二值图像上逐个进行移动,每移动一个位置,判断对应位置是否与结构元素完全相同,如果相同,则将结构元素的原点位置对应的二值图像位置的值赋值为“1”,否则,原点对应的原二值图像位置赋值为“0”(这里的结构元素都是奇数,因为要取其原点,然后对原点周边的像素进行减法)。
经过腐蚀操作,图像区域的边缘可能会变得平滑,区域的像素将会减少,相连的部分可能会断开,但是各部分仍然属于同一个区域。
腐蚀相关的算子有:
Morphology / Region 使用圆形结构元素进行腐蚀操作 erosion_circle(Region : RegionErosion : Radius : ) Region:输入参数,输入图像中的区域。 RegionErosion:输出参数,输出腐蚀后的区域。 Radius:输入参数,为圆形结构元素的半径。默认3.5,值的范围0.5 ≤ Radius ≤ 511.5 (lin)。 备注:圆形的直径去奇数是因为圆形是对称图形,着这样是为了使圆形的中心点左边为整数。 |
Morphology / Region 使用矩形结构元素进行腐蚀操作 erosion_rectangle1(Region : RegionErosion : Width, Height : ) |
Morphology / Region 用一个自定义的结构元素对输入区域进行腐蚀操作 erosion1(Region, StructElement : RegionErosion : Iterations : ) |
Morphology / Region 使用一个参考点对输入区域进行腐蚀操作 erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : ) |
Legacy / Morphology(旧版本) 使用的结构元素来自格雷字母表,通过定义结构元素对输入区域进行腐蚀操作 erosion_golay(Region : RegionErosion : GolayElement, Iterations, Rotation : ) |
Legacy / Morphology(旧版本) 与erosion_golay类似,使用格雷字母表中的元素对输入区域进行连续的腐蚀操作 erosion_seq(Region : RegionErosion : GolayElement, Iterations : ) |
膨胀
与腐蚀相反,膨胀是对选区进行“扩大”的一种操作。
原理:使用一个结构元素(如矩形、圆形或自定义多边形),用其原点在二值图像上逐个进行移动,每移动一个位置,判断映射后的结构元素与所覆盖的二值图像是否有重叠部分,如果存在重叠部分,则结构元素原点对应的二值图像位置赋值为“1”。否则,二值图像不进行任何改变。
(换一种理解腐蚀:可以用原点逐个放在有1的位置,然后此1周围变成和结构元素相同的1,其结果与本质理解相同)
经过膨胀操作,图像区域的边缘可能会变得平滑,区域的像素将会增加,不相连的部分可能会连接起来,这些都与腐蚀操作正好相反。即使如此,原本不相连的区域仍然属于各自区域,不会因为像素重叠就发生合并。
备注:膨胀后发生的重叠的区域可以用opening_seq算子分离开来。
膨胀相关的算子有:
Morphology / Region 使用圆形结构元素进行膨胀操作。 dilation_circle(Region : RegionDilation : Radius : ) |
Morphology / Region 使用矩形结构元素进行膨胀操作。 dilation_rectangle1(Region : RegionDilation : Width, Height : ) |
Morphology / Region 用一个自定义的结构元素对输入区域进行膨胀操作。 dilation1(Region, StructElement : RegionDilation : Iterations : ) |
Morphology / Region 使用一个参考点对输入区域进行膨胀操作。 dilation2(Region, StructElement : RegionDilation : Row, Column, Iterations : ) |
Legacy / Morphology(旧版本) 使用的结构元素来自格雷字母表,通过定义结构元素对输入区域进行膨胀操作。 dilation_golay(Region : RegionDilation : GolayElement, Iterations, Rotation : ) |
Legacy / Morphology(旧版本) 与dilation_golay类似,使用格雷字母表中的元素对输入区域进行连续的膨胀操作。 dilation_seq(Region : RegionDilation : GolayElement, Iterations : ) |
参考文献:《Halcon机器视觉算法原理与编程实战》杨青