threshold动态阈值分割
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
对于一些目标与背景的阈值对比不明显的图像,需要用到动态阈值分割,使用局部阈值来分割图像。
输出的图像RegionDynThresh, 取决于 其他参数之间的关系,用g(o)代表原图像上的灰度值,g(t)代表用作ThresholdImage的阈值。
ThresholdImae一般用mean_image均值滤波处理,平滑图像。各种关系如下:
1. LightDark 取值为: light:
g(o) >= g(t) + Offset; 这时,OrigImage上 符合该关系的区域将作为RegionDynThresh输出的区域;
2. LightDark 取值为: dark:
g(o) <= g(t) + Offset;
3. LightDark 取值为: equal:
g(t) - Offset <= g(o) <= g(t) + Offset;
4. Lightdark 取值为 : not_equal:
g(t) - Offset >g(o) U g(t) + Offset < g(o);
对于mean_image的参数mask的大小,一般取需要的目标的大小的2倍;如目标是个圆形,直径为10,则mask的大小一般取20;
例程:
mean_image (Image, ImageMean, 59, 59)
dyn_threshold (Image, ImageMean, RegionDynThresh, 15, 'not_equal')
opening_circle (RegionClosing, RegionOpening, 6.5)
connection (RegionOpening, ConnectedRegions)
原图:
平滑滤波后的图像:
dyn_threshold (Image, ImageMean, RegionDynThresh, 15, 'not_equal') ,输出如下:
经过闭运算、开运算和connection后,各region如下: