天天看點

Halcon region區域提取及區域轉圖像

在VS中調用Halcon中的分割之類函數後,直接傳回顯示時會報錯,因為是把傳回值當成L了Image變量直接指派給了圖像資料buffer,傳回的是被分割後的Regions,是以從Regions中擷取get_image_pointer1或get_image_pointer3時就會報錯,提示函數沒有灰階值。

是以需要将Regions連接配接起來生成一個大的區域,然後将區域進行相關操作轉化成Image,Halcon中有三個區域轉圖像算子:region_to_bin、region_to_label、region_to_mean.

  1. region_to_bin

    (Region,BinImage,ForegroundGray,BackgroundGray,Width,Height)

    它将一個區域轉化成一個二進制位元組圖像。給區域内的所有像素賦給前景灰階值,如果輸入區域大于生成的圖像,則會在圖像邊界處截斷;

  2. region_to_label

    (Region,ImageLabel,Type,Width,Height)

    它将區域轉化為一個标簽圖像,通過索引值:第一個區域賦予灰階值1,第二個區域賦予灰階值2,依此類推……這裡僅僅使用正的灰階值,直到256。區域大于生成圖像則會被适當地截斷。如果區域重疊,則較高值的圖像會被輸出。如果想重疊,可以調用expand_region進行處理。Type=‘int2’、‘int4’、‘byte’

  3. region_to_mean

    (Regions,Image,ImageMean)

    用它們的均值來填充圖像區域,傳回Image。

region_to_bin

region_to_bin——将将區域轉換為二進制位元組圖像。

函數原型:region_to_bin(Region : BinImage : ForegroundGray, BackgroundGray, Width, Height : )

功能:region_to_bin将在Region中給定的輸入區域轉換為“位元組”圖像,并将ForegroundGray的灰階值配置設定給該區域中的所有像素。 如果輸入區域大于生成的圖像,則會在圖像邊框處裁剪。 背景灰階值設定為BackgroundGray。

參數清單

Region (input_object) :要轉換的區域。

BinImage (output_object) :包含轉換區域的尺寸Width*Height的結果圖像。

ForegroundGray :區域内的灰階值。

  Default value: 255

  Suggested values: 0, 1, 50, 100, 128, 150, 200, 254, 255

  Typical range of values: 0 ≤ ForegroundGray ≤ 255 (lin)

  Recommended increment: 1

BackgroundGray (input_control) ——背景灰階值

  Default value: 0

  Suggested values: 0, 1, 50, 100, 128, 150, 200, 254, 255

  Typical range of values: 0 ≤ BackgroundGray ≤ 255 (lin)

  Recommended increment: 1

Width (input_control) ——要生成的圖像的寬度。

  Default value: 512

  Suggested values: 256, 512, 1024

  Typical range of values: 1 ≤ Width ≤ 1024 (lin)

  Minimum increment: 1

  Recommended increment: 16

  Restriction: Width >= 1

Height (input_control)——要生成的圖像的高度。

  Default value: 512

  Suggested values: 256, 512, 1024

  Typical range of values: 1 ≤ Height ≤ 1024 (lin)

  Minimum increment: 1

  Recommended increment: 16

  Restriction: Height >= 1

region_to_label

region_to_label -——将區域轉換為标簽圖像。

原型:

region_to_label

(Region : ImageLabel : Type, Width, Height : )

功能:region_to_label根據它們的索引(1…n)将輸入區域轉換成标簽圖像,即,第一區域被繪成灰階值1,第二區域被繪成灰階值2等。僅使用正灰階值。 對于’byte’圖像,索引以取256的模輸入。

超出生成圖像的區域被适當地剪切。 如果區域重疊,則輸入索引較高圖像的區域(即,它們按照它們被包含在輸入區域中的順序被繪制)。 如果需要,可以通過調用expand_region使區域不重疊。

将背景(即未被任何區域覆寫的區域)設定為0.這可以用于測試哪個圖像範圍不存在區域。

參數清單

Region (input_object) :要轉換的區域。

ImageLabel (output_object) :包含轉換區域的尺寸Width*Height的結果圖像。

Type (input_control) :圖像像素類型。

  Default value: ‘int2’

  List of values: ‘byte’, ‘int2’, ‘int4’, ‘int8’

Width (input_control) :要生成的圖像的寬度。

  Default value: 512

  Suggested values: 64, 128, 256, 512, 1024

  Typical range of values: 1 ≤ Width ≤ 1024 (lin)

  Minimum increment: 1

  Recommended increment: 16

  Restriction: Width >= 1

Height (input_control) :要生成的圖像的高度。

  Default value: 512

  Suggested values: 64, 128, 256, 512, 1024

  Typical range of values: 1 ≤ Height ≤ 1024 (lin)

  Minimum increment: 1

  Recommended increment: 16

  Restriction: Height >= 1

region_to_mean

region_to_mean ——用平均灰階值繪制區域。

函數原型:

region_to_mean

(Regions, Image : ImageMean : : )

功能:  region_to_mean根據圖像Image傳回一個圖像,其中Regions的區域被繪制為其平均灰階值。 該算子主要是為了将分割結果可視化。

參數清單

Regions (input_object) :輸入區域。

Image (input_object):原始的灰階值圖像。

ImageMean (output_object) :結果圖像與繪制區域。

示例

read_image(Image,'fabrik')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
regiongrowing(Image,Regions,3,3,6,100)
region_to_mean(Regions,Image,Disp)
disp_image (Disp, 200000)
disp_image(Disp,WindowHandle)
set_draw(WindowHandle,'margin')
set_color(WindowHandle,'black')
disp_region(Regions,WindowHandle)
 
           

運作結果如下所示:

Halcon region區域提取及區域轉圖像

繼續閱讀