全局Threshold和動態閾值分割Dyn_Threshold的應用場景

手冊裏面的particle例子,例子的任務是分析顆粒在液體中。在這個應用程序的主要困難:存在兩種類型的對象:大明亮物體和較低的小物體的對比。此外噪音使分割的存在困難;沒法使用全局灰度閾值threshold進行分割;因此採用先將大塊不須要檢測的部分去除掉,再經過灰度動態閾值dyn_threshold分割圖像獲得想要的內容。
處理圖片和結果圖片:

 

 
如下是代碼:
 
 

 
 
read_image (Image, 'particle')  
*獲取圖像  
  
dev_display (Image)  
*顯示圖像  
  
threshold (Image, Large, 110, 255)  
*灰度閾值分割圖像  
  
dilation_circle (Large, LargeDilation, 7.5)  
*圓角膨脹  
  
dev_display (Image)  
dev_set_draw ('margin')  
dev_set_line_width (3)  
dev_set_color ('red')  
dev_display (LargeDilation)  
dev_set_draw ('fill')  
*顯示圖像  
  
complement (LargeDilation, NotLarge)  
*返回補充圖像,即得到去除大斑點後的圖像NotLarge  
  
reduce_domain (Image, NotLarge, ParticlesRed)  
*減去除了NotLarge圖像,即去除大斑點後的圖像,減小運算  
  
mean_image (ParticlesRed, Mean, 31, 31)  
*平滑處理圖像  
  
dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')  
*選擇灰度閾值;
網友詳解:當前背景之間差別明顯時,能夠設定全局閾值進行threshold但不少狀況下因爲背景不均一,
*目標體常常表現爲比背景局部亮一些或暗一些,沒法肯定全局閾值操做,須要經過其鄰域找到一個合適的閾值進 *行分割dyn_threshold。ThresholdImage是參考圖像,經過與OrigImage對比找到領域肯定閾值,通常採用平滑濾波算子 *(如mean_image)獲取參考圖像。offset設定鄰域比較的區間範圍,灰度值變化在offset範圍內均是能夠接受的。 opening_circle (SmallRaw, Small, 2.5) *消除小區域(小於圓形結構元素)和光滑的邊界地區 connection (Small, SmallConnection) *顯示聯通區域 dev_display (Image) *這句不加窗口顯示效果會有雪花 dev_set_colored (12) dev_display (SmallConnection)

 

*顯示結果圖像 
下圖是隻用threshold時候的實驗效果,沒法分割出小斑點:
相關文章
相關標籤/搜索