1. 程式人生 > >threshold動態閾值分割

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如下: