0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Halcon中的測量工具之Metrology介紹

機器人及PLC自動化應用 ? 來源:CSDN ? 2023-03-24 16:35 ? 次閱讀

1. Halcon中的工具助手

對于使用Halcon的小伙伴們來說,在菜單欄上的“助手”一欄中可以找到一些可以快捷使用的工具。

6f873806-ca1b-11ed-bfe3-dac502259ad0.png

以18.11版本為例,助手工具欄里有五種工具,分別是:

Image Acquisition :圖片獲取工具,包括基于Halcon的圖像采集接口等;

Calibration:標定工具,用于對圖像進行標定;

Matching: 匹配工具,包括形狀及灰度匹配等;

Measure: 卡尺工具,注意這里只包括卡尺工具;

OCR:字符識別工具。

對于Measure工具,小白給出的翻譯是“卡尺工具”。但是按照英文原意,應該叫“測量工具”。

這里是Halcon的設計上一個非常讓小白想不通的地方。因為助手這里的所謂“測量工具”,其實只包含了卡尺這一種功能——即只能查找邊緣,或者查找邊緣對。所謂的“測量”無非就是測量邊緣對之間的距離。

而通常意義上,基于邊緣卡尺工具之上的一些找邊、找圓等常用的測量工具,卻并未包含在這個Measure工具之中。

2. Metrology工具系列

在Halcon中,真正的“測量工具”,卻是來自一系列名稱中帶有“Metrology”的算子。下面以表格的形式給出:

序號算子名稱算子作用備注

1create_metrology_model創(chuàng)建一個幾何測量句柄

2add_metrology_object_circle_measure添加一個找圓工具

3add_metrology_object_ellipse_measure添加一個找橢圓工具

4add_metrology_object_generic添加一個測量工具可以添加找圓、找邊、找橢圓、找矩形等多種工具

5add_metrology_object_line_measure添加一個找邊工具

6add_metrology_object_rectangle2_measure添加一個找矩形工具

7get_metrology_model_param獲取對整個測量模型有效的參數(shù)

8get_metrology_object_indices獲取一個測量模型中測量對象的索引序號

9get_metrology_object_measures獲取一個測量模型中的測量區(qū)域以及得到的邊緣位置

10get_metrology_object_model_contour在圖像坐標中查詢計量對象的模型輪廓

11get_metrology_object_num_instances獲取測量模型的測量對象的實例數(shù)量

12get_metrology_object_param獲取測量模型的一個或多個參數(shù)

13get_metrology_object_result獲取測量模型的測量結果

14get_metrology_object_result_contour獲取測量對象的結果輪廓

15apply_metrology_model測量和擬合測量模型的所有測量對象的幾何形狀顧名思義就是執(zhí)行測量

16align_metrology_model將測量工具與平移旋轉綁定通常與模版匹配聯(lián)合使用

17clear_metrology_object刪除測量對象并釋放分配的內存

18clear_metrology_model刪除測量模型并釋放分配的內存

19clear_all_metrology_models此運算符不可操作。它具有以下功能:刪除所有測量模型并釋放分配的內存即將從Halcon中刪除,不建議使用

20get_metrology_object_fuzzy_param獲取測量模型中的模糊參數(shù)

21copy_metrology_model復制測量模型

22copy_metrology_object復制測量對象

23set_metrology_model_image_size設置測量對象的圖像大小

24set_metrology_model_param設置對整個測量模型有效的參數(shù)

25set_metrology_object_fuzzy_param為測量模型設置模糊參數(shù)或模糊函數(shù)

26set_metrology_object_param為測量模型的測量對象設置參數(shù)

27reset_metrology_object_fuzzy_param重置測量模型的所有模糊參數(shù)和模糊函數(shù)

28reset_metrology_object_param重置測量模型的所有參數(shù)

29transform_metrology_object轉換測量模型的測量對象,例如用于綁定

30read_metrology_model從文件中讀取測量模型

31write_metrology_model將測量模型寫入到文件中

32serialize_metrology_model將測量模型序列化

33deserialize_metrology_model將測量模型反序列化

總體來說,Halcon的測量工具類,包含有找邊、找圓、找橢圓、找矩形四種功能,另外還可以通過模糊函數(shù)的定義實現(xiàn)模糊測量。

下面我們來看看Metrology工具的一些實例。

3. Metrology工具實例

3.1 實例1 找邊工具

以下實例在一張?zhí)摂M工件圖上添加一個找直線卡尺組工具(cyan色表示),并找到該工件的上邊緣(red色表示)。

從這張圖我們也能初步得出一個結論:測量工具都是基于卡尺(邊緣檢測)工具開發(fā)的,通常的做法是在卡尺工具找到邊緣點的基礎上進行擬合。

* 清空屏幕,顯式控制圖像顯示

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í)行找直線并顯示結果

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)

6fa076fe-ca1b-11ed-bfe3-dac502259ad0.png

所找到直線的相關參數(shù)信息存儲在變量Parameter之中。

3.2 實例2 找圓工具

以下實例在一張?zhí)摂M工件圖上添加一個找圓卡尺組工具(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í)行找圓并顯示結果

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)

6fb2bf30-ca1b-11ed-bfe3-dac502259ad0.png

所找到圓的相關參數(shù)信息存儲在變量Parameter之中。

3.3 實例3 找橢圓工具

以下實例在一張?zhí)摂M工件圖上添加一個找橢圓卡尺組工具(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 := 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í)行找橢圓并顯示結果

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)

6fcc2a06-ca1b-11ed-bfe3-dac502259ad0.png

所找到橢圓的相關參數(shù)信息存儲在變量Parameter之中。

3.4 實例4 找矩形工具

以下實例在一張?zhí)摂M工件圖上添加一個找矩形卡尺組工具(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 := 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í)行找矩形并顯示結果

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)

所找到矩形的相關參數(shù)信息存儲在變量Parameter之中。

3.5 實例5 generic法添加測量工具

Halcon的Metrology工具主要功能就是完成以上四種測量,而使用generic時,可以添加任意的工具。以下實例通過generic向Metrology模型中添加找矩形(cyan色)和找圓工具(green色)。找到矩形的外側邊緣輪廓(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í)行找矩形并顯示結果

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)

6fdfa0fe-ca1b-11ed-bfe3-dac502259ad0.png

注意到get_metrology_object_result和get_metrology_object_result_contour中通過index參數(shù)的調整分別按順序提取到矩形和圓的結果輪廓。

若index參數(shù)設置為'all'時,則可以一次性取出所有的結果輪廓。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7402

    瀏覽量

    163393
  • HALCON
    +關注

    關注

    16

    文章

    63

    瀏覽量

    27147
  • OCR
    OCR
    +關注

    關注

    0

    文章

    142

    瀏覽量

    16293

原文標題:Halcon中的測量工具(找邊找圓等)——Metrology系列

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview調用halcon軟件包

    眾所周知NI在視覺這塊雖然有涉獵,但是它的一些算法性能比一些專業(yè)的視覺軟件如halcon要差,不可否認,NI_vision在一些尺寸測量方面、找直線還是比較便利的。如今的視覺系統(tǒng)需求越來越復雜
    發(fā)表于 05-27 12:04

    Labview里面使用Halcon的函數(shù)。 方法一:直接調用Halcon的函數(shù)。

    。還有一種就是 需要哪個Halcon的函數(shù),就使用調用節(jié)點方式解決?!痢痢痢痢痢痢痢痢痢痢痢料旅骊U述用調用節(jié)點屬性節(jié)點等方式運行Halcon。硬件組態(tài):一個普通PC。軟件組態(tài): Win7 64位
    發(fā)表于 08-15 14:14

    求助:labview與halcon之間的對象轉換

    labview的視覺模塊的識別率確實沒有halcon的厲害,但是labview寫程序卻比halcon+.NET方便,于是在labview調用halcon來編程。有個問題需要向各位請教
    發(fā)表于 08-24 09:32

    在labview調用Halcon實例

    `本人寫了一個小程序,在labview調用halcon實現(xiàn)掃碼功能,還存在一些問題,調用的halcon程序如果在循環(huán)中,則無法通過labview停止程序,必須等到halcon循環(huán)停止
    發(fā)表于 09-13 19:39

    labview調用Halcon

    各位大神,有沒有知道labview調用halcon的.net控件,.net控件的類怎么解釋啊,有沒有詳細的解釋說明?。?/div>
    發(fā)表于 11-14 15:19

    labview與halcon連用

    本帖最后由 x451129684 于 2017-11-16 16:46 編輯 labview通過.net調用halcon算子,測量一個圓的角度
    發(fā)表于 11-16 09:39

    labview調用Halcon

    關于調用Halcon的視覺的一些資料
    發(fā)表于 03-29 22:41

    關于labview調用halcon程序的方法介紹

    !下面介紹的是調用halcon完整程序的方法:1.首先在halcon里編寫好需要處理的程序,如圖以車牌的字符識別為例:2.在labview里進行調用(1).通過在前面板放入.net容器,并在其插入
    發(fā)表于 10-11 11:54

    labview通過.NET調用Halcon函數(shù)示例

    labview 與halcon混合編程,目前有兩種方式1、.NET函數(shù)調用,接下來要介紹的方法2、.NET Engine調用方法,前面有發(fā)帖介紹過該方式,參考https
    發(fā)表于 05-07 15:01

    LabVIEW調用Halcon程序的操作步驟

    ,半徑就出來了下面開始講解Labview如何調用Halcon的程序來取得計算結果 Labview的VI截圖如下,除了紅圈內為屬性節(jié)點,其他全部為調用節(jié)點, 構造器函數(shù)選擇的dll文件路徑在
    發(fā)表于 07-30 10:59

    一個HalconRectange2(帶角度的矩形)在NI Vision實現(xiàn)的算法

    和中心點Y,矩形的旋轉角度(弧度顯示),以及矩形的兩條邊長來計算出矩形的四個頂點,然后在NI Vision根據(jù)著4個頂點繪制4條直線,即可實現(xiàn)Halcon的Rectange2這個功能Hal
    發(fā)表于 03-29 17:09

    Halcon9.0編程技術詳解

    Halcon9.0編程技術詳解Halcon9.0編程技術詳解
    發(fā)表于 12-22 15:20 ?0次下載

    Halcon例程之圓弧測量工具分析

    在圖像上相應位置繪制圓,這里用固定變量的方法產(chǎn)生圓的參數(shù),把這個圓繪制代碼注釋掉了。這個圓用于后面的測量工具
    的頭像 發(fā)表于 03-21 13:39 ?1740次閱讀

    Halcon知識:矩形測量

    此外,還可以在GenParamName和GenParamValue調整一些通用參數(shù)。特別是,可以設置運算 set_metrology_object_param 可用的所有通用參數(shù)。但請注意,對于許多應用程序,默認值已足夠,無
    的頭像 發(fā)表于 04-23 09:56 ?2211次閱讀
    <b class='flag-5'>Halcon</b>知識:矩形<b class='flag-5'>測量</b>

    史上最全VisionPro和Halcon 的詳細對比

    MVTec MERLIC & HALCON – Mvtec公司宣布了一個基于Halcon庫的新的視覺產(chǎn)品-MERLIC,Merlic增加了極其簡單易用的機器視覺應用并且能夠讓一個有經(jīng)驗的Halcon開發(fā)者把自己的
    的頭像 發(fā)表于 06-26 11:40 ?3012次閱讀