【Halcon】實現分離通道、建立矩形、獲取灰度級、求最大最小均值、求大於某一灰度級的畫素點數

VanGoghpeng發表於2024-05-21
read_image (Image, 'D:/image/123.jpg')
rgb1_to_gray (Image, GrayImage)
gen_rectangle1 (Rectangle, 100, 100, 200, 200)
rectangle1_domain (GrayImage, ImageReduced, 100, 100, 200, 200)
crop_domain (ImageReduced, ImagePart)
get_region_points (ImagePart, Rows, Columns)
get_grayval (ImagePart, Rows, Columns, Grayval)
tuple_length (Grayval, Length)
tuple_min (Grayval, Min)
tuple_max (Grayval, Max)
tuple_mean (Grayval, Mean)
threshold(ImagePart, Region, 100, 255)
region_features (Region, 'area', Value)

注:下述解釋中用到的所有類 (x, y) 的形式,都是以數學座標系為基礎進行的,但是在Halcon中,Row表示行數(代表 y),Col表示列數(代表 x)

我們依次分析每個運算元的作用:

1、read_image( : Image : FileName : )

  根據 FileName 讀取圖片,然後輸出到 Image 中。

2、rgb1_to_gray(RGBImage : GrayImage : : )

  將RGB影像 RGBImage 轉為灰度圖輸出到 GrayImage 中

3、gen_rectangle1( : Rectangle : Row1, Column1, Row2, Column2 : )

  建立一個矩形,左上角座標是(Column1, Row1),右下角座標是(Column2 , Row2),並輸出到 Rectangle

4、crop_domain(Image : ImagePart : : )

  將輸入的 Image 影像以獨立影像的形式輸出到 ImagePart,即上一步只是裁剪,但是其座標還是針對於被裁剪的原圖,到這一步時其座標才是以獨立影像進行(大白話就是,gen_rectangle1得到的左上角不是 0, 0,只有再使用 crop_domain 後其左上角才是 0, 0 )

5、get_region_points(Region : : : Rows, Columns)

  獲取輸入影像 Region 的所有畫素點座標,並輸出到 Rows,Columns 中

6、get_grayval(Image : : Row, Column : Grayval)

  獲取輸入影像 Image 從 (0, 0)到(Column, Row)之間的所有畫素點的灰度級,並輸出到 Grayval 中。

7、tuple_length( : : Tuple : Length)

  獲取輸入陣列 Tuple 的長度賦值給 Length。

8、tuple_min( : : Tuple : Min)

  獲取輸入陣列 Tuple 的最小值賦值給 Min

9、tuple_max( : : Tuple : Max)

  獲取輸入陣列 Tuple 的最大值賦值給 Max

10、tuple_mean( : : Tuple : Mean)

  獲取輸入陣列 Tuple 的平均值賦值給 Mean

11、threshold(Image : Region : MinGray, MaxGray : )

  將輸入影像 Image 進行二值化,最小值為 MinGray,最大值為 MaxGray,最後輸出到 Region 中。

12、region_features(Regions : : Features : Value)

  將輸入影像 Regions 根據所選特徵 Features 進行計算,然後返回計算得到的特徵數賦值給 Value。( Features 列表詳情參考 HDevelop 幫助視窗)

相關文章