1. 問題
??現(xiàn)有如下圖片泛鸟,對其進(jìn)行腐蝕并統(tǒng)計(jì)前后region個數(shù)圈暗。
* 采集圖形并設(shè)置窗口
read_image (Image, 'C:/Users/lenovo/Desktop/1.PNG')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_draw ('margin')
dev_set_line_width (2)
* dev_display (Image)
* 將RGB三通道圖片轉(zhuǎn)換成單通道圖片
decompose3 (Image, Blue, Green, Red)
* 閾值化
threshold (Red, Regions, 0, 230)
* 分割區(qū)域
(Regions, ConnectedRegions)
count_obj (ConnectedRegions, Number)
dev_display (ConnectedRegions)
disp_message (WindowHandle, 'before: '+Number, 'window', 0, 0, 'black', 'true')
* 膨脹圖片
erosion_circle (ConnectedRegions, RegionErosion, 1.5)
count_obj (RegionErosion, Number1)
dev_clear_window ()
dev_display (RegionErosion)
disp_message (WindowHandle, 'after : '+Number1, 'window', 0, 0, 'black', 'true')
??erosion_circle
前,region
個數(shù)為16
秕噪。erosion_circle
后,圖片中可看到的region
個數(shù)為8
厚宰,但實(shí)際region
個數(shù)仍為16
腌巾。
2. 分析
??在變量窗口 -> 圖像變量
選擇ConnectedRegions
,右鍵點(diǎn)擊顯示目錄->選擇...
可看到腐蝕前region
的詳細(xì)信息铲觉。
??在變量窗口 -> 圖像變量
選擇RegionErosion
澈蝙,右鍵點(diǎn)擊顯示目錄->選擇...
可看到腐蝕后region
的詳細(xì)信息。
??比較region
前后變化可發(fā)現(xiàn)撵幽,erosion_circle
只是將region
相應(yīng)的值縮小為0
灯荧,region
個數(shù)并未改變。
3. 修改方法
??先使用select_shape
篩掉面積為0或中心為(0,0)的region
盐杂,再用count_obj
統(tǒng)計(jì)region
個數(shù)逗载。
* 采集圖形并設(shè)置窗口
read_image (Image, 'C:/Users/lenovo/Desktop/1.PNG')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_draw ('margin')
dev_set_line_width (2)
* dev_display (Image)
* 將RGB三通道圖片轉(zhuǎn)換成單通道圖片
decompose3 (Image, Blue, Green, Red)
* 閾值化
threshold (Red, Regions, 0, 230)
* 分割區(qū)域
connection (Regions, ConnectedRegions)
count_obj (ConnectedRegions, Number)
dev_display (ConnectedRegions)
disp_message (WindowHandle, 'before: '+Number, 'window', 0, 0, 'black', 'true')
* 膨脹圖片并篩選
erosion_circle (ConnectedRegions, RegionErosion, 1.5)
select_shape (RegionErosion, SelectedRegions, 'area', 'and', 1, 1000000)
count_obj (SelectedRegions, Number1)
dev_clear_window ()
dev_display (SelectedRegions)
disp_message (WindowHandle, 'after : '+Number1, 'window', 0, 0, 'black', 'true')