手冊里面的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時候的實驗效果,無法分割出小斑點:
下圖是只用threshold時候的實驗效果,無法分割出小斑點:
