HALCON示例程序class_2dim_sup.hdev使用二維像素分類對圖像進行分割
示例程序源碼(加注釋)
-
定義Interactive并賦值,0:固定框;1:手工繪制框。
Interactive := 0 -
讀入圖片
read_image (Image, ‘ic’) -
關閉窗口
dev_close_window () -
獲取圖像尺寸
get_image_size (Image, Width, Height) -
根據獲得的圖像尺寸打開窗口
dev_open_window (0, 0, Width, Height, ‘white’, WindowID) -
將彩色圖片分割成rgb三通道圖片
decompose3 (Image, Red, Green, Blue) -
顯示
dev_display (Red)
dev_set_color (‘red’)if (Interactive)
draw_region (Pattern, WindowID)
else
gen_rectangle1 (Pattern, 362, 276, 371, 298)
endif
計算雙通道灰度值圖像的直方圖
- histo_2dim - 計算雙通道灰度值圖像的直方圖。
- 函數原型:histo_2dim(Regions,ImageCol,ImageRow:Histo2Dim ::)
運算符histo_2dim計算區域內兩個圖像的二維直方圖。通道1(ImageCol)的灰度值被解釋為行索引,通道2(ImageRow)的灰度值被解釋為列索引。輸出圖像Histo2Dim中的一個點P(g1,g2)處的灰度值表示灰度值組合(g1,g2)的頻率,其中g1表示行索引,g2表示列索引。
histo_2dim (Pattern, Red, Blue, Histo2Dim) - 閾值分割選取1-255的區域
threshold (Histo2Dim, Features, 1, 255) - 使用半徑為11.5的圓形進行閉運算
closing_circle (Features, FeaturesClosed, 11.5) - 顯示設置與顯示
dev_set_draw (‘fill’)
dev_set_part (0, 0, 511, 511)
dev_display (Red) - class_2dim_sup - 使用二維像素分類對圖像進行分割,
- 選取Red灰度值為g1范圍,Blue灰度值為g2范圍的點
class_2dim_sup (Red, Blue, FeaturesClosed, RegionClass2Dim)
處理思路
這個例子是針對彩色圖片,使用不同通道的特性進行區域選取與分割的例子。使用了雙通道灰度值圖像的直方圖對圖像進行分割,方法就是選取不同通道像素值相同的灰度范圍,進而進行分割。
后記
大家有什么問題可以向我提問哈,我看到了第一時間回復,希望在學習的路上多多結交良師益友。