gray_inside(Image : ImageDist : : )
gray_inside为图像中的每个点确定到图像边界的“最便宜”路径,
即,即必须克服最低灰度值的路径。
得到的图像包含特定点的灰度值与路径上的最大灰度值之差。
因此,结果图像中的亮区域表示这些区域(通常在原始图像中是暗的)被亮区域包围。
结果图像中的黑色区域表示它们与图像边框之间只有很小的灰度值差异(这并不意味着它们被黑色区域所包围;
一个小的黑暗值“缺口”就足够了)。
结果图像中的值0(黑色)表示到图像边框的路径上只存在较暗或同样亮的像素。
该算子首先利用watersheds 算子将图像分割成盆地和分水岭。
如果把图像看成是一个灰度值的山脉,盆地是水聚集的地方,山脊是分水岭。
然后,分水岭被分配到邻近的盆地,因此只留下盆地。
现在搜索原始图像域(区域)的边界以寻找最低的灰度值,并给出其结果值所在的区域。
如果最低灰度值位于图像边框上,则可以立即使用灰度值到最暗点的差值计算所有结果值。
如果发现的最小灰度值位于盆地内部,则必须从已处理的相邻盆地中确定可能的最小灰度值,以便计算新值。
一个8邻域用于确定邻接。将找到的区域从尚未处理的区域中减去,然后重复整个过程。
因此,图像被从外部“剥离”。
与分水岭算法类似,在调用 watersheds算法之前,最好先进行平滑操作,
如binomial_filter或 gauss_filter,以减少分水岭算法产生的区域数量,从而加快处理时间。
例程:
read_image(Image,'fabrik')
gauss_filter (Image,GaussImage,11)
gray_inside(GaussImage,ImageOut)
dev_display(ImageOut)
1.gray_skeleton(Image : GraySkeleton : : )
gray_skeleton对输入图像Image 应用灰度值细化操作。
形象地说,通过将“山坡”的灰度值设置为对应谷底的灰度值,将灰度值“山脉”还原为山脊线。
得到的脊线最多为两个像素宽。
这个操作符对于细化边缘图像特别有用,因此可以替代nonmax_suppression_amp。
与nonmax_suppression_amp相比,gray_skeleton保留轮廓,但是速度要慢得多。
与skeleton不同,该操作符在保持图像区域不变的情况下更改图像的灰度值。
例程:
read_image (Forest, 'forest_air1')
gray_skeleton(Forest,Skelett)
mean_image(Skelett,MeanSkelett,7,7)
dyn_threshold(Skelett,MeanSkelett,Leafs,50,'light')
2.lut_trans(Image : ImageResult : Lut : )
lut_trans通过使用灰色值查找表Lut来转换图像Image 。
该表作为转换函数使用。
在字节图像的情况下,Lut必须是长度为256的元组。
对于int2-images, Lut必须是长度256 <= length <= 65536的元组。
如果Lut的长度<= 32768,则只对正灰度值进行变换,即, Lut的第一个元素为灰度值0指定新的灰度值。
如果Lut大于32768,则必须传递65536。
在这种情况下,正灰度值和负灰度值被转换。
在这种情况,第一个元素表示输入图像的灰度值-32768的新灰度值,
而元组的最后一个元素表示灰度值32767的新灰度值。
在所有情况下,Lut范围之外的值的灰度值都设置为0。
对于uint2-images, Lut必须是长度256 <= length <= 65536的元组。
Lut范围之外的灰色值设置为0。
例程:
Gamma := 2.2
GammaLUT := []
for G := 0 to 255 by 1
GammaLUT := [GammaLUT,round(255.0*pow(G/255.0,1.0/Gamma))]
endfor
read_image (Image, 'mreut')
lut_trans (Image, ImageGamma, GammaLUT)
3.symmetry(Image : ImageSymmetry : MaskSize, Direction, Exponent : )
symmetry计算沿直线的对称性。
对每个像素进行直线两侧灰度值的比较,计算出距离像素相同的灰度值差值的绝对值。
每一个差值都用指数加权(除以255之后),然后求和。
具有高对称性的像素具有较大的灰度值。
例程:
read_image(Image,'monkey')
symmetry(Image,ImageSymmetry,70,0.0,0.5)
threshold(ImageSymmetry,SymmPoints,170,255)
4.topographic_sketch(Image : Sketch : : )
topographic_sketch计算输入图像Image 的地形原始草图。
这是通过一个双三次多项式(“facet mode”)局部逼近图像来实现的。
计算图像的一阶偏导数和二阶偏导数,从而将图像划分为11类。
这些类在输出图像草图中编码为从1到11的数字。
分类如下:
为了获得作为区域的独立类,必须对具有适当阈值的结果图像进行阈值操作。
例程:
read_image(Image,'printer_chip/printer_chip_01')
topographic_sketch(Image,Sketch)
threshold(Sketch,Ridges,1,2)
|