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') 

    closing_circle (RegionDynThresh, RegionClosing, 8.5)
    opening_circle (RegionClosing, RegionOpening, 6.5)
    connection (RegionOpening, ConnectedRegions)


原图:  



平滑滤波后的图像:




dyn_threshold (Image, ImageMean, RegionDynThresh, 15, 'not_equal') ,输出如下:


经过闭运算、开运算和connection后,各region如下: