1. Halcon中的工具助手
對于使用Halcon的小伙伴們來說,在菜單欄上的“助手”一欄中可以找到一些可以快捷使用的工具。
以18.11版本為例,助手工具欄里有五種工具,分別是:
Image Acquisition :圖片獲取工具,包括基于Halcon的圖像采集接口等;
Calibration:標(biāo)定工具,用于對圖像進(jìn)行標(biāo)定;
Matching: 匹配工具,包括形狀及灰度匹配等;
Measure: 卡尺工具,注意這里只包括卡尺工具;
OCR:字符識別工具。
對于Measure工具,小白給出的翻譯是“卡尺工具”。但是按照英文原意,應(yīng)該叫“測量工具”。
這里是Halcon的設(shè)計(jì)上一個(gè)非常讓小白想不通的地方。因?yàn)橹诌@里的所謂“測量工具”,其實(shí)只包含了卡尺這一種功能——即只能查找邊緣,或者查找邊緣對。所謂的“測量”無非就是測量邊緣對之間的距離。
而通常意義上,基于邊緣卡尺工具之上的一些找邊、找圓等常用的測量工具,卻并未包含在這個(gè)Measure工具之中。
2. Metrology工具系列
在Halcon中,真正的“測量工具”,卻是來自一系列名稱中帶有“Metrology”的算子。下面以表格的形式給出:
序號算子名稱算子作用備注
1create_metrology_model創(chuàng)建一個(gè)幾何測量句柄
2add_metrology_object_circle_measure添加一個(gè)找圓工具
3add_metrology_object_ellipse_measure添加一個(gè)找橢圓工具
4add_metrology_object_generic添加一個(gè)測量工具可以添加找圓、找邊、找橢圓、找矩形等多種工具
5add_metrology_object_line_measure添加一個(gè)找邊工具
6add_metrology_object_rectangle2_measure添加一個(gè)找矩形工具
7get_metrology_model_param獲取對整個(gè)測量模型有效的參數(shù)
8get_metrology_object_indices獲取一個(gè)測量模型中測量對象的索引序號
9get_metrology_object_measures獲取一個(gè)測量模型中的測量區(qū)域以及得到的邊緣位置
10get_metrology_object_model_contour在圖像坐標(biāo)中查詢計(jì)量對象的模型輪廓
11get_metrology_object_num_instances獲取測量模型的測量對象的實(shí)例數(shù)量
12get_metrology_object_param獲取測量模型的一個(gè)或多個(gè)參數(shù)
13get_metrology_object_result獲取測量模型的測量結(jié)果
14get_metrology_object_result_contour獲取測量對象的結(jié)果輪廓
15apply_metrology_model測量和擬合測量模型的所有測量對象的幾何形狀顧名思義就是執(zhí)行測量
16align_metrology_model將測量工具與平移旋轉(zhuǎn)綁定通常與模版匹配聯(lián)合使用
17clear_metrology_object刪除測量對象并釋放分配的內(nèi)存
18clear_metrology_model刪除測量模型并釋放分配的內(nèi)存
19clear_all_metrology_models此運(yùn)算符不可操作。它具有以下功能:刪除所有測量模型并釋放分配的內(nèi)存即將從Halcon中刪除,不建議使用
20get_metrology_object_fuzzy_param獲取測量模型中的模糊參數(shù)
21copy_metrology_model復(fù)制測量模型
22copy_metrology_object復(fù)制測量對象
23set_metrology_model_image_size設(shè)置測量對象的圖像大小
24set_metrology_model_param設(shè)置對整個(gè)測量模型有效的參數(shù)
25set_metrology_object_fuzzy_param為測量模型設(shè)置模糊參數(shù)或模糊函數(shù)
26set_metrology_object_param為測量模型的測量對象設(shè)置參數(shù)
27reset_metrology_object_fuzzy_param重置測量模型的所有模糊參數(shù)和模糊函數(shù)
28reset_metrology_object_param重置測量模型的所有參數(shù)
29transform_metrology_object轉(zhuǎn)換測量模型的測量對象,例如用于綁定
30read_metrology_model從文件中讀取測量模型
31write_metrology_model將測量模型寫入到文件中
32serialize_metrology_model將測量模型序列化
33deserialize_metrology_model將測量模型反序列化
總體來說,Halcon的測量工具類,包含有找邊、找圓、找橢圓、找矩形四種功能,另外還可以通過模糊函數(shù)的定義實(shí)現(xiàn)模糊測量。
下面我們來看看Metrology工具的一些實(shí)例。
3. Metrology工具實(shí)例
3.1 實(shí)例1 找邊工具
以下實(shí)例在一張?zhí)摂M工件圖上添加一個(gè)找直線卡尺組工具(cyan色表示),并找到該工件的上邊緣(red色表示)。
從這張圖我們也能初步得出一個(gè)結(jié)論:測量工具都是基于卡尺(邊緣檢測)工具開發(fā)的,通常的做法是在卡尺工具找到邊緣點(diǎn)的基礎(chǔ)上進(jìn)行擬合。
* 清空屏幕,顯式控制圖像顯示
dev_close_window ()
dev_update_off ()
read_image (Image, '形狀模板圖.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
* 創(chuàng)建測量模型
create_metrology_model (MetrologyHandle)
Row1 := 113.427
Column1 := 152.106
Row2 := 111.438
Column2 := 336.028
* 添加找直線工具,給定參數(shù),顯示過程卡尺的輪廓
add_metrology_object_line_measure (MetrologyHandle, Row1, Column1, Row2, Column2, 20, 5, 1, 30, [], [], Index)
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
dev_set_color('cyan')
dev_display (Contour)
dev_display (Contours)
* 執(zhí)行找直線并顯示結(jié)果
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Contour1)
clear_metrology_model (MetrologyHandle)
所找到直線的相關(guān)參數(shù)信息存儲在變量Parameter之中。
3.2 實(shí)例2 找圓工具
以下實(shí)例在一張?zhí)摂M工件圖上添加一個(gè)找圓卡尺組工具(cyan色表示),并找到該工件的圓孔邊緣(red色表示)。
* 清空屏幕,顯式控制圖像顯示
dev_close_window ()
dev_update_off ()
read_image (Image, '形狀模板圖.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
* 創(chuàng)建測量模型
create_metrology_model (MetrologyHandle)
Row1 := 149.248
Column1 := 321.116
Radius := 23.954
* 添加找圓工具,給定參數(shù),顯示過程卡尺
add_metrology_object_circle_measure (MetrologyHandle, Row1, Column1, Radius, 12, 3, 1, 30, [], [], Index)
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
dev_set_color('cyan')
dev_display (Contour)
dev_display (Contours)
* 執(zhí)行找圓并顯示結(jié)果
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Contour1)
clear_metrology_model (MetrologyHandle)
所找到圓的相關(guān)參數(shù)信息存儲在變量Parameter之中。
3.3 實(shí)例3 找橢圓工具
以下實(shí)例在一張?zhí)摂M工件圖上添加一個(gè)找橢圓卡尺組工具(cyan色表示),并找到該工件的內(nèi)側(cè)橢圓邊緣(red色表示)。
* 清空屏幕,顯式控制圖像顯示
dev_close_window ()
dev_update_off ()
read_image (Image, '橢圓測量圖.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
* 創(chuàng)建測量模型
create_metrology_model (MetrologyHandle)
Row1 := 167.02
Column1 := 246.855
Phi := -0.366964
Radius1 := 93.6498
Radius2 := 32.8862
* 添加找橢圓工具,給定參數(shù),顯示過程卡尺
add_metrology_object_ellipse_measure (MetrologyHandle, Row1, Column1, Phi, Radius1, Radius2, 12, 3, 1, 30, [], [], Index)
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
dev_set_color('cyan')
dev_display (Contour)
dev_display (Contours)
* 執(zhí)行找橢圓并顯示結(jié)果
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Contour1)
clear_metrology_model (MetrologyHandle)
所找到橢圓的相關(guān)參數(shù)信息存儲在變量Parameter之中。
3.4 實(shí)例4 找矩形工具
以下實(shí)例在一張?zhí)摂M工件圖上添加一個(gè)找矩形卡尺組工具(cyan色表示),并找到該工件的外側(cè)邊緣(red色表示)。
* 清空屏幕,顯式控制圖像顯示
dev_close_window ()
dev_update_off ()
read_image (Image, '形狀模板圖.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
* 創(chuàng)建測量模型
create_metrology_model (MetrologyHandle)
Row1 := 192.033
Column1 := 248.541
Length1 := 120.299
Length2 := 79.696
Phi := 0.00827113
* 添加找矩形工具,給定參數(shù),顯示過程卡尺
add_metrology_object_rectangle2_measure (MetrologyHandle, Row1, Column1, Phi, Length1, Length2, 12, 3, 1, 30, [], [], Index)
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
dev_set_color('cyan')
dev_display (Contour)
dev_display (Contours)
* 執(zhí)行找矩形并顯示結(jié)果
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Contour1)
clear_metrology_model (MetrologyHandle)
所找到矩形的相關(guān)參數(shù)信息存儲在變量Parameter之中。
3.5 實(shí)例5 generic法添加測量工具
Halcon的Metrology工具主要功能就是完成以上四種測量,而使用generic時(shí),可以添加任意的工具。以下實(shí)例通過generic向Metrology模型中添加找矩形(cyan色)和找圓工具(green色)。找到矩形的外側(cè)邊緣輪廓(red色),以及圓孔的邊緣輪廓(red色)。
* 清空屏幕,顯式控制圖像顯示
dev_close_window ()
dev_update_off ()
read_image (Image, '形狀模板圖.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
* 創(chuàng)建測量模型
create_metrology_model (MetrologyHandle)
Row1 := 192.033
Column1 := 248.541
Length1 := 120.299
Length2 := 79.696
Phi := 0.00827113
* 添加找矩形工具,給定參數(shù),顯示過程卡尺
add_metrology_object_generic (MetrologyHandle, 'rectangle2', [Row1, Column1, Phi, Length1, Length2], 12, 3, 1, 30, [], [], Index)
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
get_metrology_object_measures (Contours, MetrologyHandle, 0, 'all', Row, Column)
dev_set_color('cyan')
dev_display (Contour)
dev_display (Contours)
* 添加找圓工具,給定參數(shù),顯示過程卡尺
Row2 := 149.248
Column2 := 321.116
Radius := 23.954
add_metrology_object_generic (MetrologyHandle, 'circle', [Row2, Column2, Radius], 12, 3, 1, 30, [], [], Index1)
get_metrology_object_model_contour(Contour2, MetrologyHandle, 1, 1.5)
get_metrology_object_measures (Contours3, MetrologyHandle, 1, 'all', Row3, Column3)
dev_set_color ('green')
dev_display (Contour2)
dev_display (Contours3)
dev_set_line_width (3)
* 執(zhí)行找矩形并顯示結(jié)果
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter1)
get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)
get_metrology_object_result (MetrologyHandle, 1, 'all', 'result_type', 'all_param', Parameter2)
get_metrology_object_result_contour (Contour3, MetrologyHandle, 1, 'all', 1.5)
dev_set_color ('red')
dev_display (Contour1)
dev_display (Contour3)
clear_metrology_model (MetrologyHandle)
注意到get_metrology_object_result和get_metrology_object_result_contour中通過index參數(shù)的調(diào)整分別按順序提取到矩形和圓的結(jié)果輪廓。
若index參數(shù)設(shè)置為'all'時(shí),則可以一次性取出所有的結(jié)果輪廓。
審核編輯:劉清
-
存儲器
+關(guān)注
關(guān)注
38文章
7509瀏覽量
163975 -
HALCON
+關(guān)注
關(guān)注
16文章
66瀏覽量
27244 -
OCR
+關(guān)注
關(guān)注
0文章
145瀏覽量
16386
原文標(biāo)題:Halcon中的測量工具(找邊找圓等)——Metrology系列
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論