erosion1(Region, StructElement : RegionErosion : Iterations : )
erosion1使用结构元素侵蚀输入区域Region。通过对一个区域施加侵蚀,它的边界变得平滑。
在此过程中,该区域的面积减小。
此外,连接的区域可能被分割。
然而,这些区域在逻辑上仍然是一个区域。
侵蚀是一种集论区域操作。
它使用交集运算
设M (StructElement)和R (Region)为两个区域,
其中M为结构化元素,R为待处理区域。
此外,设m是M中的一个点
然后将位移矢量 定义为M的重心与矢量 的差值。
让我们用向量 表示区域R被 平移。然后
对于M中的每个点m,执行区域R的平移。
所有这些平移的交集是M的腐蚀。
erosion1类似于minkowski_sub1操作符,
不同之处在于,在erosion1中, StructElement在原点处镜像。
StructElement的位置是没有意义的,因为位移矢量是根据M的重心确定的。
参数Iterations 决定了要用结构化元素执行的迭代的数量。
迭代n-1的结果作为迭代n的输入。
从上面的定义可以看出,当一个结构元素为空时,会生成最大区域。
可以使用
gen_circle、
gen_rectangle1、
gen_rectangle2、
gen_ellipse、
draw_region、
gen_region_polygon、
gen_region_points等操作符生成结构化元素(StructElement)。
2.erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : )
erosion2使用具有参考点( Row, Column)的结构化元素(StructElement)侵蚀输入区域Region。
erosion2与erosion1的作用相似,不同之处在于结构元素的参考点可以任意选择。
参数Iterations 决定了要用结构化元素执行的迭代的数量。
迭代n-1的结果作为迭代n的输入。
3.erosion_circle(Region : RegionErosion : Radius : )
erosion_circle将Minkowski减法与一个圆形结构元素应用于输入区域Region 。
由于圆形掩模是对称的,这就等同于侵蚀。作为结构元素的圆的大小由Radius 决定。
该算子使区域缩小,区域边界平滑,消除了小于圆形掩模的区域。
为了避免区域的平移,只选择Region 的3.5、5.5等值是有用的,
因为整数半径会导致一个圆心为非整数的圆,该圆的重心被四舍五入到下一个整数。
4.erosion_rectangle1(Region : RegionErosion : Width, Height : )
erosion_rectangle1将带有矩形结构元素的腐蚀应用于输入区域Region 。
结构矩形的大小为Width*Height 。
该算子使区域缩小,消除了小于矩形掩模的区域。
erosion_rectangle1是一个非常快的操作,
因为矩形的高度只以对数形式代入计算,而宽度则完全没有代入。
即使在非常大的矩形(边缘长度为> 100)的情况下,
这也会带来非常好的运行效率。
例程:
read_image (Image, 'printer_chip/printer_chip_01')
threshold (Image, Region, 128, 255)
connection (Region, ConnectedRegions)
gen_circle (Circle, 200, 200, 10)
erosion1 (ConnectedRegions, Circle, RegionErosion, 1)
erosion2 (ConnectedRegions, Circle, RegionErosion1, 10, 10, 1)
erosion_circle (RegionErosion1, RegionErosion2, 3.5)
erosion_rectangle1 (RegionErosion2, RegionErosion3, 11, 11)
|