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