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