HALCON編程基礎(chǔ)與工程應(yīng)用全書ppt課件匯總(完整版)_第1頁(yè)
HALCON編程基礎(chǔ)與工程應(yīng)用全書ppt課件匯總(完整版)_第2頁(yè)
HALCON編程基礎(chǔ)與工程應(yīng)用全書ppt課件匯總(完整版)_第3頁(yè)
HALCON編程基礎(chǔ)與工程應(yīng)用全書ppt課件匯總(完整版)_第4頁(yè)
HALCON編程基礎(chǔ)與工程應(yīng)用全書ppt課件匯總(完整版)_第5頁(yè)
已閱讀5頁(yè),還剩343頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1.11.2機(jī)器視覺(jué)HALCON介紹 HALCON編程基礎(chǔ)與工程應(yīng)用第1章 機(jī)器視覺(jué)和HALCON機(jī)器視覺(jué)軟件1.1 機(jī)器視覺(jué) 1.1.1 機(jī)器視覺(jué)簡(jiǎn)介HALCON編程基礎(chǔ)與工程應(yīng)用 機(jī)器視覺(jué)(Machine vision)是一項(xiàng)綜合技術(shù),包括圖像處理、機(jī)械工程技術(shù)、電氣控制技術(shù)、光源照明、光學(xué)成像、傳感器、模擬與數(shù)字視頻技術(shù)、計(jì)算機(jī)軟硬件技術(shù)(圖像增強(qiáng)和分析算法、圖像采集卡、I/O卡等)。一個(gè)典型的機(jī)器視覺(jué)應(yīng)用系統(tǒng)包括圖像捕捉、光源系統(tǒng)、圖像數(shù)字化模塊、數(shù)字圖像處理模塊、智能判斷決策模塊和機(jī)械控制執(zhí)行模塊。1.1 機(jī)器視覺(jué) 1.1.1 機(jī)器視覺(jué)簡(jiǎn)介HALCON編程基礎(chǔ)與工程應(yīng)用1.1 機(jī)器視

2、覺(jué) 1.1.1 機(jī)器視覺(jué)簡(jiǎn)介HALCON編程基礎(chǔ)與工程應(yīng)用1.1.2 機(jī)器視覺(jué)關(guān)鍵技術(shù)與發(fā)展HALCON編程基礎(chǔ)與工程應(yīng)用1.1 機(jī)器視覺(jué)1.機(jī)器視覺(jué)系統(tǒng)基本構(gòu)成 一個(gè)典型的工業(yè)機(jī)器視覺(jué)系統(tǒng)包括:光源、鏡頭(定焦鏡頭、變倍鏡頭、遠(yuǎn)心鏡頭、顯微鏡頭)、相機(jī)(包括CCD相機(jī)或COMS相機(jī))、圖像處理單元(或圖像采集卡)、圖像處理軟件、監(jiān)視器、通訊單元及輸入輸出單元等。1.1.2 機(jī)器視覺(jué)關(guān)鍵技術(shù)與發(fā)展HALCON編程基礎(chǔ)與工程應(yīng)用1.1 機(jī)器視覺(jué)2.機(jī)器視覺(jué)主要關(guān)鍵技術(shù) 機(jī)器視覺(jué)技術(shù),是一門涉及人工智能、神經(jīng)生物學(xué)、心理物理學(xué)、計(jì)算機(jī)科學(xué)、圖像處理、模式識(shí)別等諸多領(lǐng)域的交叉學(xué)科。機(jī)器視覺(jué)主要用計(jì)算

3、機(jī)來(lái)模擬人的視覺(jué)功能,從客觀事物的圖像中提取信息,進(jìn)行處理并加以理解,最終用于實(shí)際檢測(cè)、測(cè)量和控制。機(jī)器視覺(jué)技術(shù)最大的特點(diǎn)是速度快、信息量大、功能多。1.1.2 機(jī)器視覺(jué)關(guān)鍵技術(shù)與發(fā)展HALCON編程基礎(chǔ)與工程應(yīng)用1.1 機(jī)器視覺(jué)3.機(jī)器視覺(jué)的發(fā)展 機(jī)器視覺(jué)技術(shù)是計(jì)算機(jī)學(xué)科的一個(gè)重要分支,自起步發(fā)展至今,其功能以及應(yīng)用范圍隨著工業(yè)自動(dòng)化的發(fā)展逐漸完善和推廣。 20世紀(jì)50年代開始研究二維圖像的統(tǒng)計(jì)模式識(shí)別。 60年代Roberts開始進(jìn)行三維機(jī)器視覺(jué)的研究。 70年代中,MIT人工智能實(shí)驗(yàn)室正式開設(shè)“機(jī)器視覺(jué)”的課程。 80年代開始,開始了全球性的研究熱潮,機(jī)器視覺(jué)獲得了蓬勃發(fā)展,新概念、新理

4、論不斷涌現(xiàn)。1.2.1 HDevelop介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹1.集成開發(fā)環(huán)境-HDevelop HALCON提供交互式的編程環(huán)境HDevelop,可在Windows,Linux,Unix下使用,使用HDevelop可使用戶快速有效的解決圖像處理問(wèn)題。1.2.1 HDevelop介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹1.2.1 HDevelop介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹 HDevelop能直接連接采集卡和相機(jī),從采集卡、相機(jī)或者文件中載入圖像,檢查圖像數(shù)據(jù),進(jìn)而開發(fā)一個(gè)視覺(jué)檢測(cè)方案,并能測(cè)試不同算子或者參數(shù)

5、值的計(jì)算效果,保存后的視覺(jué)檢測(cè)程序,可以導(dǎo)出以C+、C#、C、Visual Basic,或者VB.NET支持的程序,進(jìn)行混合編程。 HDevelop編程方式具有的優(yōu)點(diǎn)是:(1)很好的支持所有HALCON 算子;(2)方便檢查可視數(shù)據(jù);(3)方便選擇、調(diào)試和編輯參數(shù);(4)方便技術(shù)支持。2.標(biāo)準(zhǔn)的開發(fā)流程HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹3.交互式并行編程環(huán)境HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹 HALCON提供支持多CPU處理器的交互式并行編程環(huán)境Paralell Develop, 其繼承了單處理器版HDevelop的所有特點(diǎn),在多處理器計(jì)算機(jī)上會(huì)自動(dòng)將數(shù)

6、據(jù)(比如圖像)分配給多個(gè)線程,每一個(gè)線程對(duì)應(yīng)一個(gè)處理器,用戶無(wú)需改動(dòng)已有的HALCON程序,就立即獲得顯著的速度提升。 并行HALCON不僅是線程安全的,而且可以多次調(diào)用,因此,多個(gè)線程可在同一時(shí)刻同時(shí)調(diào)用HALCON操作。此特性使得機(jī)器視覺(jué)應(yīng)用軟件可以將一個(gè)任務(wù)分解,在不同的處理器上并行處理,并行HALCON可以使用戶使用最新的超級(jí)線程技術(shù)。1.2.2 HALCON功能及應(yīng)用簡(jiǎn)介HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹1BLOB分析 BLOB包括標(biāo)準(zhǔn)閾值分割,動(dòng)態(tài)分割以及其他附加的圖像分割算子,HALCON可以快速實(shí)現(xiàn)BLOB分析。2形態(tài)學(xué) HALCON可以基于任意結(jié)構(gòu)元素針對(duì)

7、Region和image的腐蝕、膨脹、開/閉運(yùn)算。3圖像特征轉(zhuǎn)換為Region/XLD特性 HALCON獨(dú)特的數(shù)據(jù)結(jié)構(gòu)Region/XLD可以保證圖像處理的快速準(zhǔn)確。4圖像的運(yùn)算 HALCON為了實(shí)現(xiàn)圖像處理的各種目的可以進(jìn)行圖像的代數(shù)運(yùn)算,邏輯運(yùn)算,幾何運(yùn)算。1.2.2 HALCON功能及應(yīng)用簡(jiǎn)介HALCON編程基礎(chǔ)與工程應(yīng)用1.2 HALCON介紹5傅立葉變換實(shí)現(xiàn)圖像的空間域和頻域之間的變換。6標(biāo)定利用HALCON本身的標(biāo)定板,通過(guò)幾個(gè)內(nèi)外攝像頭參數(shù)實(shí)現(xiàn)快速標(biāo)定。7匹配基于相關(guān)性匹配,基于形狀匹配,基于灰度值匹配等等;即使目標(biāo)發(fā)生旋轉(zhuǎn)、放縮、局部變形、部分遮擋或者光照有非線性變化,HALC

8、ON利用XLD匹配技術(shù)可實(shí)時(shí)地有效、準(zhǔn)確地找到目標(biāo)。8測(cè)量HALCON提供有1D測(cè)量、2D測(cè)量、3D測(cè)量,HALCON邊緣提取輸出正像素輪廓,達(dá)到最高精度,保證了測(cè)量的精準(zhǔn)性。第2章 HALCON編程基礎(chǔ)HALCON軟件的編程環(huán)境Hdevelop是交互式的,它的操作窗口和編程界面簡(jiǎn)潔、易操作。本章主要介紹Hdevelop的使用,并介紹HALCON的控制語(yǔ)句,以及編程環(huán)境下圖像的讀取、顯示和轉(zhuǎn)換。 HALCON編程基礎(chǔ)與工程應(yīng)用2.4HDevelop應(yīng)用界面介紹HALCON控制語(yǔ)句 HALCON算子 HALCON圖像讀取、顯示和轉(zhuǎn)換Blob分析第2章 HALCON編程基礎(chǔ)HAL

9、CON編程基礎(chǔ)與工程應(yīng)用2.1 HDevelop應(yīng)用界面介紹 HDevelop圖形組件是開始視覺(jué)處理算法的一個(gè)很好的工具,其類似于VC、VB、Delphi等編譯環(huán)境,它有自己的交互式界面,可以編譯和測(cè)試視覺(jué)處理算法,可以方便查看處理結(jié)果,也可以導(dǎo)出算法代碼。HALCON編程基礎(chǔ)與工程應(yīng)用1. HDevelop預(yù)覽HALCON安裝完成后,點(diǎn)擊圖標(biāo)運(yùn)行HALCON軟件,下面介紹其主要的界面。1.主界面整個(gè)界面分為標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄和四個(gè)活動(dòng)界面窗口,四個(gè)活動(dòng)界面窗口分別是圖像變量窗口、算子窗口、變量窗口和程序窗口,如圖2-1所示。如果窗口排列不整齊,可以選擇菜單欄窗口排列窗口,重新排列

10、窗口。圖 2-1 HALCON主界面HALCON編程基礎(chǔ)與工程應(yīng)用1. HDevelop預(yù)覽2.菜單欄菜單欄包含所有HDevelop的功能命令,單擊打開后有下拉菜單,如圖2-2所示。圖2-2 菜單欄4.狀態(tài)欄狀態(tài)欄顯示程序的執(zhí)行情況,如圖2-4所示。圖2-3 工具欄3.工具欄工具欄包含了一系列常用功能的快捷方式,如圖2-3所示。圖2-4 狀態(tài)欄HALCON編程基礎(chǔ)與工程應(yīng)用1. HDevelop預(yù)覽5.打開一個(gè)例程HALCON提供了大量基于應(yīng)用的示例程序,下面打開一個(gè)HALCON自帶例程,簡(jiǎn)單了解一下HALCON程序的結(jié)構(gòu)。從菜單欄文件瀏覽程序打開一個(gè)例程,比如打開ball.hdev,如圖2-

11、5,2-6所示。點(diǎn)擊工具欄“運(yùn)行”工具圖標(biāo),運(yùn)行程序,結(jié)果如圖2-7所示。圖2-5 瀏覽例程HALCON編程基礎(chǔ)與工程應(yīng)用1. HDevelop預(yù)覽圖2-7 例程運(yùn)行結(jié)果圖2-6 打開例程HALCON編程基礎(chǔ)與工程應(yīng)用 2. HDevelop窗口介紹1.HDevelop算子窗口算子窗口顯示的是算子的重要數(shù)據(jù),包含了所有的參數(shù),各個(gè)變量的型態(tài),以及參數(shù)數(shù)值,如圖2-8所示。這里會(huì)顯示參數(shù)的默認(rèn)值,以及可以選用的數(shù)值。每一個(gè)算子都有聯(lián)機(jī)幫助。另一個(gè)常用的是算子名稱的查詢顯示功能,在一個(gè)combo box里,只要鍵入部分字符串甚至開頭的字母,即可顯示所有符合名稱的算子供選用,如圖2-9所示。圖2-8

12、 算子窗口HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹2.HDevelop程序窗口 程序窗口是用來(lái)顯示一個(gè)HDevelop程序。它可以顯示整個(gè)程序或是某個(gè)運(yùn)算符。窗口左側(cè)是一些控制程序執(zhí)行的指示符號(hào)。HDevelop剛啟動(dòng)時(shí),可以看到一個(gè)綠色箭頭的程序計(jì)數(shù)器(program counter,簡(jiǎn)稱 PC),一個(gè)插入符號(hào),還可以設(shè)一個(gè)斷點(diǎn)(breaking point),窗口右側(cè)顯示程序代碼,如圖2-10所示。圖2-9 算子查詢HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹在程序編輯窗口點(diǎn)擊右鍵,在下拉菜單顯示程序運(yùn)行調(diào)試中的一些設(shè)置,如圖2-11所示。圖2-10 程

13、序窗口圖2-11 程序調(diào)試設(shè)置HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹HDevelop啟動(dòng)以后,就可以開始從程序窗口輸入,逐步建立一個(gè)HDevelop 程序。要在程序中新增一行,比如加一個(gè)算子,有以下兩個(gè)步驟。(1)首先要將光標(biāo)放在新增的地方,用鍵盤的Shift鍵加上的鼠標(biāo)左 鍵,點(diǎn)在要加入的地方,然后從算子菜單中選擇,或是由算子窗口來(lái)選用想要加入的數(shù)據(jù)。(2)新的算子會(huì)出現(xiàn)在算子窗口中,包含它的參數(shù)等數(shù)據(jù),此時(shí)按 下“輸入”,就會(huì)將它加入程序代碼中,成為新增的一行;如果按下“確定”,除了程序代碼會(huì)新增以外,同時(shí)也會(huì)執(zhí)行程序。如果按的是“應(yīng)用”,算子不會(huì)新增到程序中,但是會(huì)

14、被執(zhí)行,這樣就可以方便又有效的測(cè)試修改參數(shù)的結(jié)果。如果只要執(zhí)行某一行,可以將程序計(jì)數(shù)器(PC)置于要執(zhí)行的那行前,再用鼠標(biāo)左鍵在該行前單擊,然后按HDevelop工具欄的“單步跳過(guò)函數(shù)”,如果單擊“運(yùn)行”,則程序代碼都會(huì)執(zhí)行,直到一個(gè)斷點(diǎn)或是按“停止”將其中止。HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹3. HDevelop變量窗口變量窗口顯示了程序在執(zhí)行時(shí)產(chǎn)生的各種變量,包括圖像變量和控制變量,如圖2-12所示。在變量上用鼠標(biāo)雙擊,即可顯示變量值,如圖2-13所示。如果變量值是圖像變量,鼠標(biāo)雙擊,會(huì)顯示在圖形窗口里。圖2-12 變量窗口圖2-13 變量值HALCON編程基礎(chǔ)

15、與工程應(yīng)用2. HDevelop窗口介紹 4.HDevelop圖形窗口圖形窗口用來(lái)顯示圖像化變量數(shù)據(jù),如圖2-14所示。 圖2-14 圖形窗口圖2-15 可視化菜單(1)圖形窗口可視化圖形窗口可視化的方式可以依據(jù)需要來(lái)調(diào)整,相關(guān)功能位于“可視化”菜單下,如圖2-15所示??梢蚤_啟數(shù)個(gè)圖形窗口,并且自行選用要用的窗口。HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹圖2-16 圖形窗口的3D模式(2)圖形窗口的3D模式點(diǎn)擊圖2-14圖形窗口右上角“3D點(diǎn)圖模式”,可以將圖形窗口變?yōu)?D模式,如圖2-16所示。HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹 圖2-17 灰

16、度直方圖(3)HDevelop灰度直方圖從菜單欄可視化菜單灰度直方圖,打開灰度直方圖功能窗口,進(jìn)行設(shè)置,如圖2-17所示。HALCON編程基礎(chǔ)與工程應(yīng)用2. HDevelop窗口介紹 圖2-18 特征直方圖(4)HDevelop特征直方圖從菜單欄可視化菜單特征直方圖,打開特征直方圖功能窗口,進(jìn)行設(shè)置和編輯,并可根據(jù)編輯的直觀結(jié)果,插入程序代碼。如圖2-18所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. HDevelop菜單介紹 圖2-19 編輯菜單1.編輯菜單編輯菜單用于HDevelop編程時(shí)的編輯使用,如圖2-19所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. HDevelop菜單介紹 圖2-20 執(zhí)行

17、菜單2.執(zhí)行菜單執(zhí)行菜單用于程序調(diào)試時(shí)的設(shè)置及運(yùn)行,如圖2-20所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. HDevelop菜單介紹 圖2-21 過(guò)程菜單3.過(guò)程菜單過(guò)程菜單用于HDevelop中創(chuàng)建一個(gè)過(guò)程或者開發(fā)新的算子,如圖2-21所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. HDevelop菜單介紹 圖2-22 助手菜單4.助手菜單打開菜單欄助手,助手菜單是特有的快速原型化工具,具有直觀可視的特點(diǎn),可以進(jìn)行數(shù)據(jù)分析和特征檢測(cè),包括圖像獲取助手、匹配助手、攝像機(jī)標(biāo)定助手和測(cè)量助手。如圖2-22所示。HALCON編程基礎(chǔ)與工程應(yīng)用2.2 HALCON控制語(yǔ)句 HALCON提供的控制流與C/C+的

18、用法類似。一般成對(duì)存在,一個(gè)是開始的標(biāo)志,一個(gè)是結(jié)束的標(biāo)志。也就是說(shuō)有if就有endif,有while就有end while??刂普Z(yǔ)句類型主要由以下幾種組成:(1)if條件語(yǔ)句 ;(2)switch多分支條件語(yǔ)句 ;(3)while循環(huán)語(yǔ)句;(4)for循環(huán)語(yǔ)句;(5)中斷語(yǔ)句。HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句1if條件語(yǔ)句If條件語(yǔ)句有三種常用的表達(dá)形式,下面一一列出。(1)if(表達(dá)式) 語(yǔ)句組1 endif語(yǔ)義為:判斷表達(dá)式的值,如果表達(dá)式的值非零則執(zhí)行語(yǔ)句組1,否則直接轉(zhuǎn)到endif?!纠?-1】if條件語(yǔ)句實(shí)例1*賦值cont:=2 *判斷變量cont的值是否大于等于1,

19、大于等于1就執(zhí)行語(yǔ)句cont:=cont-1if(cont=1)cont:=cont-1HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句*if條件語(yǔ)句結(jié)束標(biāo)志endif(2)if (表達(dá)式) 語(yǔ)句組1 else 語(yǔ)句組2 endif語(yǔ)義為:判斷表達(dá)式的值,如果表達(dá)式的值非零則執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2?!纠?-2】if條件語(yǔ)句實(shí)例2cont:=2 *判斷變量cont的值是否大于等于1,大于等于1就執(zhí)行語(yǔ)句cont:=cont-1HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句if(cont=1)cont:=cont-1*cont的值小于1就執(zhí)行語(yǔ)句cont:=cont+1elsecont:=con

20、t+1*if條件語(yǔ)句結(jié)束標(biāo)志endif(3)if (表達(dá)式1) 語(yǔ)句組1 elseif (表達(dá)式2) 語(yǔ)句組2 else 語(yǔ)句組3 endif HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句語(yǔ)義為:判斷表達(dá)式的值,表達(dá)式1的值非零則執(zhí)行語(yǔ)句組1。表達(dá)式1的值為零而表達(dá)式2的值非零則執(zhí)行語(yǔ)句組2,兩個(gè)表達(dá)式的值都為零則執(zhí)行語(yǔ)句組3?!纠?-3】if條件語(yǔ)句實(shí)例3cont:=2 *判斷變量cont是否大于等于1,大于等于1就執(zhí)行語(yǔ)句cont:=cont-1if(cont=1)cont:=cont-1*判斷變量cont是否小于等于-1,小于等于-1就執(zhí)行語(yǔ)句cont:=cont+1elseif(con

21、t=-1)cont:=cont+1*如果cont大于-1小于1執(zhí)行語(yǔ)句 cont:=cont+2HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句else cont:=cont+2*if條件語(yǔ)句結(jié)束標(biāo)志endif 2switch多分支條件語(yǔ)句當(dāng)if.else條件語(yǔ)句使用多層嵌套可以用switch多分支條件語(yǔ)句代替。格式:switch(條件) case 常量表達(dá)式1: 語(yǔ)句1 break . HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句 case 常量表達(dá)式n: 語(yǔ)句n break default : 語(yǔ)句n+1 endswitch語(yǔ)義為:將條件值與其后的常量表達(dá)式的值逐個(gè)比較,當(dāng)條件的值與其后的某個(gè)

22、常量表達(dá)式的值相等時(shí)就執(zhí)行常量表達(dá)式后面的所有語(yǔ)句。每個(gè)case語(yǔ)句只是一個(gè)入口標(biāo)號(hào),所以不能確定執(zhí)行的終止點(diǎn),如果只想執(zhí)行一條case語(yǔ)句,則應(yīng)該在case語(yǔ)句的最后使用break語(yǔ)句結(jié)束switch條件語(yǔ)句。如果條件值與所有的常量表達(dá)式的值均不相等則執(zhí)行default后面的語(yǔ)句。switch語(yǔ)句中所有常量表達(dá)式的值應(yīng)該是不重復(fù)的常量。因?yàn)閟witch語(yǔ)句無(wú)法處理浮點(diǎn)數(shù)所以條件值必須是整數(shù)。如果條件選項(xiàng)涉及取值范圍、浮點(diǎn)數(shù)或兩個(gè)變量的比較則應(yīng)該使用if.else條件語(yǔ)句。 HALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句 【例2-4】switch條件語(yǔ)句實(shí)例I:=5*I的值與其后的常量表達(dá)式的值

23、逐個(gè)比較switch(I)case 1:I:=I-3*中斷語(yǔ)句,跳出switch語(yǔ)句break*I的值與常量表達(dá)式的值相等,執(zhí)行后面的語(yǔ)句case 5:I:=I+5break*I的值與其后所有常量表達(dá)式的值都不相等則執(zhí)行default語(yǔ)句default:I:=2*IHALCON編程基礎(chǔ)與工程應(yīng)用1. 條件語(yǔ)句*switch語(yǔ)句結(jié)束標(biāo)志endswitchHALCON編程基礎(chǔ)與工程應(yīng)用2. 循環(huán)控制語(yǔ)句1while循環(huán)語(yǔ)句格式:while (條件) 循環(huán)體語(yǔ)句 endwhile語(yǔ)義為:首先對(duì)條件值進(jìn)行判斷,若條件值非零則重復(fù)執(zhí)行循環(huán)語(yǔ)句,直到條件值為零時(shí)退出while循環(huán)。若條件值始終不為零,則w

24、hile循環(huán)容易成為死循環(huán),這時(shí)候需要使用break語(yǔ)句跳出循環(huán)?!纠?-5】while循環(huán)語(yǔ)句實(shí)例In:=1 In_Sum:=0*判斷In是否小于等于100,小于等于100則執(zhí)行循環(huán)體while(In=100)HALCON編程基礎(chǔ)與工程應(yīng)用2. 循環(huán)控制語(yǔ)句*求和In_Sum:=In_Sum+In*自加10In:=In+10*while語(yǔ)句結(jié)束標(biāo)志 endwhile2for循環(huán)語(yǔ)句格式:for (Index := start to end by step) 循環(huán)體 endforFor循環(huán)語(yǔ)句是HALCON最重要的循環(huán)結(jié)構(gòu),通過(guò)控制變量的開始值至結(jié)束值來(lái)進(jìn)行循環(huán),start為Index變量的開

25、始值,end為結(jié)束值,step為步長(zhǎng)值。首先判斷Index變量的開始值是否小于結(jié)束值,如果小于則執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。執(zhí)行完循環(huán)體以后把Index的值加步長(zhǎng)值HALCON編程基礎(chǔ)與工程應(yīng)用2. 循環(huán)控制語(yǔ)句作為Index的新值,判斷Index的新值是否小于結(jié)束值。如果小于則繼續(xù)執(zhí)行循環(huán)體,否則循環(huán)結(jié)束,依次執(zhí)行直到Index的新值大于結(jié)束值則循環(huán)結(jié)束。【例2-6】for循環(huán)語(yǔ)句實(shí)例I:=0*循環(huán)變量I從1到10,每次增加1for J:=1 to 10 by 1*每次循環(huán)判斷J是否小于5,小于5則跳過(guò)這次循環(huán)if(J5)breakendif*如果J=3跳過(guò)此次循環(huán)HALCON編程基礎(chǔ)與工程應(yīng)

26、用3. 中斷語(yǔ)句if(J=3)continue*if語(yǔ)句結(jié)束標(biāo)志endif*求和I:=I+J*for語(yǔ)句結(jié)束標(biāo)志endforHALCON編程基礎(chǔ)與工程應(yīng)用2.3 HALCON算子1 .HALCON算子及算子編輯窗口HALCON算子的基本結(jié)構(gòu)為:算子(圖像輸入:圖像輸出:控制輸入:控制輸出:)HALCON算子中的四種參數(shù)被三個(gè)冒號(hào)依次隔開,分別是:圖像輸入?yún)?shù),圖像輸出參數(shù),控制輸入?yún)?shù),控制輸出參數(shù)。一個(gè)算子中可能這四種參數(shù)不會(huì)都存在,但是參數(shù)的次序不會(huì)變化。HALCON中的輸入?yún)?shù)不會(huì)被算子更改,只被算子使用,算子只能更改輸出參數(shù)。算子舉例:threshold(Image:Region:Mi

27、nGray,MaxGray: )Threshold算子里面Image為圖像輸入?yún)?shù);Region為圖像輸出參數(shù);MinGray和MaxGray為控制輸入?yún)?shù)。由此看出調(diào)用這個(gè)算子必須輸入一個(gè)圖像參數(shù)和兩個(gè)控制參數(shù)才能輸出一個(gè)圖像參數(shù)。下面介紹一下HALCON算子的編輯窗口,編輯窗口如圖2-23和圖2-24所示。HALCON編程基礎(chǔ)與工程應(yīng)用1 .HALCON算子及算子編輯窗口圖2-23 算子編輯窗口1HALCON編程基礎(chǔ)與工程應(yīng)用1 .HALCON算子及算子編輯窗口圖2-24 算子編輯窗口2HALCON編程基礎(chǔ)與工程應(yīng)用1 .HALCON算子及算子編輯窗口通過(guò)算子編輯窗口我們看到每條算子都有特

28、定的顏色,我們可以通過(guò)打開參數(shù)用戶窗口看到編輯窗口中各算子對(duì)應(yīng)的顏色如圖2-25所示。通過(guò)菜單欄編輯參數(shù)選擇程序窗口打開程序窗口。一般情況下,語(yǔ)句的顏色分類: 1)褐色:控制和開發(fā)算子;2)藍(lán)色:圖像獲取和處理算子;3)淺藍(lán)色:外部函數(shù);4)綠色:注釋。HALCON編程基礎(chǔ)與工程應(yīng)用1 .HALCON算子及算子編輯窗口在參數(shù)用戶窗口可以通過(guò)對(duì)話框修改編輯窗口算子顯示的顏色、字體、HDevelop系統(tǒng)語(yǔ)言、布局。布局主要是指四個(gè)活動(dòng)界面窗口排列的位置,布局說(shuō)明如圖2-26所示。圖2-25 程序窗口參數(shù)HALCON編程基礎(chǔ)與工程應(yīng)用1 .HALCON算子及算子編輯窗口圖2-26 布局說(shuō)明HALCO

29、N編程基礎(chǔ)與工程應(yīng)用2. 算子查詢2算子查詢 算子的幫助窗口包含了所有HALCON算子的詳細(xì)說(shuō)明,可以通過(guò)按F1快捷鍵打開HALCON算子的幫助窗口,也可以通過(guò)下面的步驟打開幫助窗口:菜單欄幫助幫助。算子名稱具有查詢顯示作用,通過(guò)算子查找對(duì)話框鍵入全部或部分算子名稱,在彈出的列表里點(diǎn)擊想查找的算子,幫助窗口右側(cè)會(huì)顯示算子的具體說(shuō)明,如圖2-27所示。具體說(shuō)明包括:算子名稱:算子的英文名稱以及大致功能;算子簽名:帶有算子參數(shù)、分隔符的算子簽名;算子描述:描述算子功能和各參數(shù)意義;算子參數(shù):講解各參數(shù)類型和屬性;HDevelop例程:用到此算子的例程,點(diǎn)擊可查看例程。HALCON編程基礎(chǔ)與工程應(yīng)用

30、2. 算子查詢圖2-27 幫助窗口HALCON編程基礎(chǔ)與工程應(yīng)用3. 算子編輯3. 算子編輯 算子編輯過(guò)程常使用算子窗口來(lái)建立HDevelop程序,算子窗口包含了各算子的參數(shù)及參數(shù)取值。使用算子窗口能夠直接對(duì)算子參數(shù)的取值進(jìn)行合理選擇。 下面以新建threshold程序?yàn)槔?,說(shuō)明如何使用算子窗口建立某一行 HDevelop 程序。 使用算子窗口建立某一行 HDevelop 程序的步驟為:?jiǎn)螕羰髽?biāo)使光標(biāo)定位到要?jiǎng)?chuàng)建程序的位置,通過(guò)菜單欄算子窗口輸入算子和函數(shù)對(duì)話框中鍵入全部或部分算子名稱,找到需要編輯的算子回車確認(rèn)打開算子窗口選擇合適的算子參數(shù)點(diǎn)擊確定。輸入算子和函數(shù)對(duì)話框如圖2-28所示。HA

31、LCON編程基礎(chǔ)與工程應(yīng)用3. 算子編輯圖2-28 輸入算子和函數(shù)對(duì)話框 一般來(lái)說(shuō)打開算子窗口以后需要對(duì)算子的四個(gè)參數(shù)(圖像輸入?yún)?shù),圖像輸出參數(shù),控制輸入?yún)?shù),控制輸出參數(shù))進(jìn)行選擇。此處threshold算子只需要對(duì)前3個(gè)參數(shù)進(jìn)行選擇,各參數(shù)的描述如圖2-29所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. 算子編輯圖2-29 算子窗口參數(shù)描述 使用下拉列表直接選擇threshold算子的圖像輸入?yún)?shù)與圖像輸出參數(shù)名稱,通過(guò)下拉列表對(duì)輸入?yún)?shù)的數(shù)值進(jìn)行選擇,如圖2-30所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. 算子編輯圖2-30 控制輸入?yún)?shù)數(shù)值選擇 算子編輯有關(guān)的快捷鍵:F3為激活所選程序行,F(xiàn)

32、4為注銷所選程序行。HALCON編程基礎(chǔ)與工程應(yīng)用4. 算子更改4算子更改HDevelop程序編寫過(guò)程中可以利用算子窗口對(duì)某一行的算子進(jìn)行更改。算子更改步驟為:雙擊算子名稱選中需要更改的算子右鍵打開算子窗口,在彈出的算子窗口中修改參數(shù),算子更改如圖2-31所示。圖2-31 算子更改HALCON編程基礎(chǔ)與工程應(yīng)用5. 算子運(yùn)行5 .算子運(yùn)行執(zhí)行程序時(shí)如果只要執(zhí)行某一行需要選中執(zhí)行行的前一行,右鍵選擇程序計(jì)數(shù)器,將執(zhí)行標(biāo)示定位到要執(zhí)行的前一行,通過(guò)菜單欄執(zhí)行單步跳過(guò)程序執(zhí)行某一行。多行的執(zhí)行可以通過(guò)菜單欄執(zhí)行運(yùn)行執(zhí)行接下來(lái)的所有程序代碼,直到遇到斷點(diǎn)或是遇到Stop算子才會(huì)中止程序。算子運(yùn)行有關(guān)的

33、快捷鍵:F2為重置程序執(zhí)行,F(xiàn)5為程序運(yùn)行,F(xiàn)6為單步跳過(guò)函數(shù),F(xiàn)7為單步跳入函數(shù),F(xiàn)8為單步跳出函數(shù)。HALCON編程基礎(chǔ)與工程應(yīng)用2.4 HALCON圖像讀取、顯示和轉(zhuǎn)換1. HALCON圖像讀取下面介紹圖像讀取的三種方式。1利用read_image算子讀取圖像算子read_image(:Image:FileName:)中Image為讀取的圖像變量名稱,F(xiàn)ileName為圖像文件所在的路徑,HALCON支持多種圖像格式。利用read_image算子讀取圖像有下面三種方式:(1)利用快捷鍵調(diào)用read_image算子讀取圖像,讀取圖像的步驟為:按CTRL+R快捷鍵打開讀取圖像對(duì)話框選擇文件名

34、稱所在的路徑及變量名稱選擇語(yǔ)句插入位置點(diǎn)擊確定,快捷鍵讀取圖像如圖2-32所示。HALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀取圖2-32 快捷鍵讀取圖像HALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀取圖2-33 算子窗口讀取圖像(2)使用算子窗口調(diào)用read_image算子,選擇文件名稱所在的路徑及變量名稱,算子窗口讀取圖像如圖2-33所示。HALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀?。?)利用for循環(huán)讀取同一路徑下的多張圖。首先聲明一個(gè)Tuple數(shù)組保存文件名及路徑,然后利用for循環(huán)依次讀取Tuple數(shù)組保存路徑下的圖像?!纠?-8】for循環(huán)讀取圖像實(shí)例*

35、聲明數(shù)組ImagePath:= *將文件名及路徑保存到數(shù)組ImagePath0:=fin1.png ImagePath1:=fin1.png ImagePath2:=fin1.png *循環(huán)讀取圖像for i:=0 to 2 by 1 read_image(Image,ImagePathi) *for循環(huán)結(jié)束標(biāo)志endforHALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀取2利用采集助手批量讀取文件夾下所有圖像利用采集助手批量讀取文件夾下所有圖像的步驟為: 菜單欄助手打開新的Image Acquisition資源圖像文件選擇路徑代碼生成插入代碼,選擇文件夾路徑如圖2-34,生成批量讀取圖

36、像的代碼如圖2-35所示。圖2-34 選擇文件夾路徑HALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀取圖2-35 生成批量讀取圖像的代碼HALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀取【例2-9】利用采集助手讀取圖像實(shí)例 *遍歷文件夾 list_files (C:/Users/Public/Documents/MVTec/HALCON-13.0/examples/images/bicycle, files,follow_links, ImageFiles) *篩選指定格式的圖像tuple_regexp_select (ImageFiles, .(tif|tiff|gif|bmp|

37、jpg|jpeg|jp2|png)$,ignore_case, ImageFiles)* 依次讀取圖像for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFilesIndex)*顯示圖像dev_display(Image)endforHALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀取算子講解:(1)list_image_files (:ImageDirectory,Extensions,Options: ImageFiles)作用:遍歷文件夾;ImageDirectory: 文件夾路徑;Extensions:文件擴(kuò)

38、展名,如tif|tiff|gif|bmp|jpg|jpeg|jp2|png等;Options:搜索選項(xiàng),如表2-1所示。 表2-1 搜索選項(xiàng)files指定搜索的格式為文件directories指定搜索格式為文件夾recursive指定可以遍歷文件夾下的文件max_depth 5指定遍歷的深度max_files 1000指定遍歷的最大文件數(shù)目表2-1 搜索選項(xiàng)ImageFiles: 文件名數(shù)組。HALCON編程基礎(chǔ)與工程應(yīng)用1. HALCON圖像讀?。?)tuple_regexp_select(:Data,Expression:Selection)作用:篩選指定格式的圖像;Data: 輸入的文件

39、名數(shù)組;Expression: 文件篩選規(guī)則表達(dá)式;Selection: 篩選出的文件名數(shù)組。HALCON編程基礎(chǔ)與工程應(yīng)用2. HALCON圖像顯示1圖形窗口默認(rèn)的圖形窗口尺寸為512*512,因此當(dāng)圖像尺寸不同時(shí)顯示在圖像窗口上會(huì)變形,要看到無(wú)變形的圖像的步驟為:菜單欄可視化圖像尺寸適應(yīng)窗口,即可自動(dòng)調(diào)整窗口。通常使用HDevelop算子dev_open_window(:Row,Column,Width,Height,Background:WindowHandle)來(lái)新增一個(gè)圖形窗口。算子參數(shù)Row、Column為窗口起始坐標(biāo)(默認(rèn)值都為零),參數(shù)Width、Height是指窗口的寬度和高

40、度(默認(rèn)值都為512),Background為窗口的背景顏色(默認(rèn)為“black”),WindowHandle是指窗口句柄。新建窗口時(shí)如果不知道窗口的確定尺寸,可將窗口的高度和寬度都設(shè)置為-,設(shè)置為-表示窗口大小等于最近打開的圖像大小,具體算子為:dev_open_window( 0,0,-1,-1,black,WindowHandle)。HALCON編程基礎(chǔ)與工程應(yīng)用2. HALCON圖像顯示打開HDevelop的變量窗口,雙擊圖像變量目錄下已存在的圖像,圖像就會(huì)顯示在圖形窗口。圖形窗口顯示的圖像可以進(jìn)行縮放,直接把鼠標(biāo)放到要進(jìn)行縮放的區(qū)域,滑動(dòng)鼠標(biāo)中間滾輪進(jìn)行縮放操作,要恢復(fù)原有尺寸只需要

41、在圖形窗口點(diǎn)擊“適應(yīng)窗口”。我們也可以通過(guò)菜單欄可視化設(shè)置參數(shù)縮放,對(duì)顯示的圖像進(jìn)行縮放,在想要放大的區(qū)域點(diǎn)擊放大或者縮小按鈕,要回復(fù)原有尺寸直接點(diǎn)擊“重置”按鈕。2圖像顯示HDevelop中顯示圖像通常使用dis_display算子,格式為:dev_display(Object:)。運(yùn)行模式下運(yùn)行算子時(shí)圖形窗口會(huì)實(shí)時(shí)更新,如果只想通過(guò)圖像顯示算子在圖形窗口顯示某些圖像(image,region或xld)就可以關(guān)閉窗口的更新。我們可以通過(guò)調(diào)用dev_update_window(off)語(yǔ)句關(guān)閉窗口的更新。也可以HALCON編程基礎(chǔ)與工程應(yīng)用2. HALCON圖像顯示通過(guò)菜單欄可視化更新窗口單步

42、模式清空并顯示命令,關(guān)閉窗口的更新。如果關(guān)閉了窗口的更新,則只能手動(dòng)調(diào)用dev_display()操作來(lái)顯示圖像。3顯示文字顯示文字常用的disp_message算子與write_string 算子。(1)disp_message為外部算子,算子格式為:disp_message(:WindowHandle,String,CoordSystem,Row,Column,Color, Box:)。算子作用:在窗口中顯示字符串。WindowHandle為窗口句柄;String為要顯示的字符;CoordSystem為當(dāng)前的操作系統(tǒng);Row、Column為窗口中顯示的起始坐標(biāo);HALCON編程基礎(chǔ)與工程應(yīng)

43、用2. HALCON圖像顯示Color為字體顏色;Box為是否顯示白色的底紋。(2)write_string算子格式為:write_string(:WindowHandle,String:)算子作用:在窗口已設(shè)定的光標(biāo)位置顯示字符串。write_string一般與set_tposition配合使用,先使用set_tposition算子設(shè)置光標(biāo)位置,然后使用write_string在光標(biāo)位置處輸出字符串。顯示文字必須適合右側(cè)窗口邊界(字符串的寬度可由get_string_extents算子查詢)。HALCON編程基礎(chǔ)與工程應(yīng)用2. HALCON圖像顯示【例2-10】圖像顯示實(shí)例*關(guān)閉窗口dev_

44、close_window ()*打開新窗口dev_open_window (0, 0, 400, 400, white, WindowID)*設(shè)置顏色dev_set_color (red)*畫箭頭disp_arrow (WindowID, 255 - 20, 255 - 20, 255, 255, 1) *在窗口中顯示字符串disp_message (WindowID, 顯示文字1, window, 20, 20, black, true)dev_set_color (blue)*設(shè)置光標(biāo)位置HALCON編程基礎(chǔ)與工程應(yīng)用2. HALCON圖像顯示set_tposition (WindowID

45、, 40, 40)*在窗口已設(shè)定光標(biāo)位置顯示字符串write_string (WindowID, 顯示文字2)* 設(shè)置光標(biāo)位置 set_tposition (WindowID, 255, 255) *讀取字符串 read_string (WindowID, Default, 32, OutString) 程序執(zhí)行,結(jié)果如圖2-36所示。圖2-36 顯示文字處理結(jié)果HALCON編程基礎(chǔ)與工程應(yīng)用3. HALCON圖像轉(zhuǎn)換1RGB圖像轉(zhuǎn)換成灰度圖RGB圖像轉(zhuǎn)換成灰度圖可以使用rgb1_to_gray算子,其格式為:rgb1_to_gray(RGBImage:GrayImage:)很明顯,RGBIm

46、age與GrayImage分別是輸入、輸出圖像參數(shù)。如果輸入圖像是三通道圖像,RGB圖像的三個(gè)通道可以根據(jù)以下公式轉(zhuǎn)化成灰度圖?;疑?0.299*紅色值+0.587*綠色值+0.114*藍(lán)色值如果RGBImage中輸入圖像是單通道圖像,GrayImage灰度圖將直接復(fù)制RGBImage進(jìn)行輸出?!纠?-11】RGB圖轉(zhuǎn)灰度圖實(shí)例*讀取圖像read_image (Earth, earth.png)*RGB圖像轉(zhuǎn)換成灰度圖像rgb1_to_gray (Earth, GrayImage)程序執(zhí)行,圖像變量如圖2-37所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. HALCON圖像轉(zhuǎn)換圖2-37 RGB圖

47、像轉(zhuǎn)換成灰度圖HALCON編程基礎(chǔ)與工程應(yīng)用3. HALCON圖像轉(zhuǎn)換2區(qū)域與圖像的平均灰度值求區(qū)域與圖像的平均灰度值可以使用算子region_to_mean,其格式為:region_to_mean(Regions,Image:ImageMean:)通過(guò)此算子繪制ImageMean圖像,將其灰度值設(shè)置為Regions和Image的平均灰度值?!纠?-12】求區(qū)域與圖像平均灰度值實(shí)例*讀取圖像read_image(Image,fabrik)*區(qū)域生長(zhǎng)regiongrowing(Image,Regions,3,3,6,100)*得到區(qū)域與圖像的平均灰度值region_to_mean(Regions

48、,Image,Disp)dev_open_window (0, 0, 400, 400, black, WindowHandle)*顯示圖像dev_display (Disp)程序執(zhí)行,結(jié)果如圖2-38所示。3. HALCON圖像轉(zhuǎn)換圖2-38 圖像與區(qū)域平均灰度圖HALCON編程基礎(chǔ)與工程應(yīng)用3. HALCON圖像轉(zhuǎn)換3將區(qū)域轉(zhuǎn)換為二進(jìn)制圖像或label圖像(1)將區(qū)域轉(zhuǎn)換為二進(jìn)制圖像 使用region_to_bin算子能夠?qū)^(qū)域轉(zhuǎn)換為二進(jìn)制圖像,格式為:region_to_bin(Region:BinImage:ForegroundGray,BackgroundGray,Width, He

49、ight:)使用算子將區(qū)域轉(zhuǎn)換為“byte”圖像,如果輸入?yún)^(qū)域大于生成的圖像就會(huì)在圖像邊界處進(jìn)行剪切。 (2)將區(qū)域轉(zhuǎn)換為L(zhǎng)abel圖像 使用算子region_to_label能夠 將區(qū)域轉(zhuǎn)換為L(zhǎng)abel圖像,格式為:region_to_label(Region:ImageLabel:Type,Width,Height:)算子可以根據(jù)索引(1.n)將輸入?yún)^(qū)域轉(zhuǎn)換為標(biāo)簽圖像,即第一區(qū)域被繪制為灰度值1,第二區(qū)域被繪制為灰度值2等。對(duì)于比生成的圖像灰度值大的區(qū)域?qū)?huì)被適當(dāng)?shù)丶羟?。HALCON編程基礎(chǔ)與工程應(yīng)用3. HALCON圖像轉(zhuǎn)換【例2-13】區(qū)域轉(zhuǎn)換為二進(jìn)制圖或label圖實(shí)例*讀取圖像re

50、ad_image (Image, a01.png)*復(fù)制圖像copy_image (Image, DupImage)*區(qū)域生長(zhǎng)regiongrowing (DupImage, Regions, 3, 3, 1, 100)*將區(qū)域轉(zhuǎn)化成二進(jìn)制圖像region_to_bin (Regions, BinImage, 255, 0, 512, 512)*將區(qū)域轉(zhuǎn)化成label圖像region_to_label (Regions, ImageLabel, int4, 512, 512)程序執(zhí)行,圖像變量如圖2-39所示。HALCON編程基礎(chǔ)與工程應(yīng)用3. HALCON圖像轉(zhuǎn)換圖2-39 區(qū)域轉(zhuǎn)換的圖像變

51、量HALCON編程基礎(chǔ)與工程應(yīng)用本章小結(jié)本章首先介紹了HALCON軟件交互式的編程環(huán)境Hdevelop及其界面和窗口,然后對(duì)HALCON的控制語(yǔ)句進(jìn)行介紹,主要介紹了HALCON算子的基本操作,HALCON所有算子(函數(shù))的參數(shù)均以相同的方式來(lái)排列:輸入圖像,輸出圖像,輸入控制,輸出控制。最后在HALCON編程環(huán)境下進(jìn)行了圖像讀取,圖像顯示,圖像轉(zhuǎn)換的實(shí)例分析。HALCON編程基礎(chǔ)與工程應(yīng)用3.4HALCON Image圖像 HALCON Region區(qū)域 HALCON XLD輪廓 Handle句柄第3章HALCON數(shù)據(jù)結(jié)構(gòu)HALCON編程基礎(chǔ)與工程應(yīng)用3.1HALCON I

52、mage圖像3.1.1 Image的分類 根據(jù)每個(gè)像素信息不同,通常將圖像分為:二值圖像,灰度圖像,RGB圖像。這部分已經(jīng)在2.2節(jié)進(jìn)行了詳細(xì)地介紹。3.1.2 Image的通道(1)append_channel(MultiChannelImage,Image:ImageExtended:)作用:將Image圖像的通道與MultiChannelImage圖像的通道疊加得到新圖像。MultiChannelImage:多通道圖像;Image:要疊加的圖像;ImageExtended:疊加后得到的圖像。HALCON編程基礎(chǔ)與工程應(yīng)用 (2)decompose3(MultiChannelImage:I

53、mage1,Image2,Image3:)作用:轉(zhuǎn)換三通道彩色圖像為三個(gè)單通道灰度圖像;MultiChannelImage:要進(jìn)行轉(zhuǎn)換的三通道彩色圖像;Image1:轉(zhuǎn)換得到第一個(gè)通道的灰度圖像,對(duì)應(yīng)Red通道;Image2:轉(zhuǎn)換得到第二個(gè)通道的灰度圖像,對(duì)應(yīng)Green通道;Image3:轉(zhuǎn)換得到第三個(gè)通道的灰度圖像,對(duì)應(yīng)Blue通道。讀取一幅紅色的三通道彩色圖像后利用decompose3算子分解成三個(gè)單通道圖像,其中得到的紅色通道是一幅白色圖像,得到的綠色和藍(lán)色通道是黑色圖像。所以我們能夠知道紅色在R通道中比較明顯,同理綠色和藍(lán)色分別在G和B通道中比較明顯。3.1HALCON Image圖像

54、HALCON編程基礎(chǔ)與工程應(yīng)用3.2HALCON Region區(qū)域 Region的特征可以使用特征檢測(cè)對(duì)話框查看region的特征。通過(guò)工具欄特征檢測(cè)彈出的對(duì)話框選擇region,可以看到Region的不同特征屬性及相對(duì)應(yīng)的數(shù)值,如圖所示。Region特征主要有以下三個(gè)部分:(1)基礎(chǔ)特征:region的面積、中心、寬高、左上角與右下角坐標(biāo)、長(zhǎng)半軸、短半軸、橢圓方向、粗糙度、連通數(shù)、最大半徑、方向等;(2)形狀特征:外接圓半徑、內(nèi)接圓半徑、圓度、緊密度、矩形度、凸性、偏心率、外接矩形的方向等;(3)幾何矩特征:二階矩、三階矩、主慣性軸等。HALCON編程基礎(chǔ)與工程應(yīng)用3.2HALCON Reg

55、ion區(qū)域 HALCON編程基礎(chǔ)與工程應(yīng)用Region的點(diǎn)線1生成點(diǎn)線區(qū)域圖像最基本的構(gòu)成元素是像素點(diǎn),在HALCON里面點(diǎn)可以用坐標(biāo)(Row,Column)表示,圖像窗口左上角為坐標(biāo)原點(diǎn),向下為行(Row)增加,向右為列(Column)增加。首先生成一個(gè)點(diǎn)區(qū)域,生成點(diǎn)區(qū)域的算子為:gen_region_points(:Region:Rows,Columns:)3.2HALCON Region區(qū)域 2區(qū)域的方向方向是區(qū)域的基本特征,下面幾個(gè)算子與區(qū)域方向有關(guān)。 (1)line_orientation(:RowBegin,ColBegin,RowEnd,ColEnd:Phi)(2)orienta

56、tion_region(Regions:Phi)HALCON編程基礎(chǔ)與工程應(yīng)用(3)angle_ll(:RowA1,ColumnA1,RowA2,ColumnA2,RowB1,ColumnB1,RowB2,ColumnB2:Angle)(4)line_position(:RowBegin,ColBegin,RowEnd,ColEnd:RowCenter,ColCenter,Length,Phi)作用:計(jì)算線段的中心、長(zhǎng)度、方向。3.2HALCON Region區(qū)域 Region的行程1區(qū)域行程的理論基礎(chǔ)行程編碼(又稱游程編碼)是相對(duì)簡(jiǎn)單的編碼技術(shù)。行程編碼的主要思路是將一個(gè)相同值的連續(xù)串用一個(gè)

57、代表值和串長(zhǎng)來(lái)代替。例如,有一個(gè)字符串“aaabccddddd”,行程編碼可以用“3a1b2c5d”來(lái)表示。圖4-19是區(qū)域,表4-2是根據(jù)圖4-19的區(qū)域得到的行程編碼表。HALCON編程基礎(chǔ)與工程應(yīng)用3.2HALCON Region區(qū)域 3.2.4 Region的區(qū)域特征1區(qū)域的面積與中心特征1)區(qū)域的面積2)區(qū)域的中心區(qū)域的中心坐標(biāo)是計(jì)算區(qū)域內(nèi)所有像素點(diǎn)坐標(biāo)的平均值。中心點(diǎn)行坐標(biāo)等于區(qū)域內(nèi)所有像素點(diǎn)行坐標(biāo)相加的和除以面積,中心點(diǎn)列坐標(biāo)等于區(qū)域內(nèi)所有像素點(diǎn)列坐標(biāo)相加的和除以面積。2區(qū)域特征距特征矩特征主要表征圖像區(qū)域的幾何特征,又稱為幾何距。由于其具有旋轉(zhuǎn)、平移、尺度等不變特征又稱為不變距

58、。在圖像處理中不變距可以作為一個(gè)重要的特征來(lái)表示區(qū)域。HALCON編程基礎(chǔ)與工程應(yīng)用3.2HALCON Region區(qū)域 3區(qū)域等效橢圓特征 二階中心距的一個(gè)重要應(yīng)用就是可以定義一個(gè)區(qū)域的方向與范圍,而區(qū)域的方向和范圍可以用等效橢圓來(lái)表示。4區(qū)域凸性特征區(qū)域內(nèi)任意兩點(diǎn)進(jìn)行連線,連線上的所有點(diǎn)都在區(qū)域內(nèi)就稱這個(gè)區(qū)域?yàn)橥辜M拱鼊t是包含區(qū)域內(nèi)所有點(diǎn)構(gòu)成的最小凸集。5區(qū)域輪廓長(zhǎng)度特征區(qū)域輪廓長(zhǎng)度是區(qū)域的另一個(gè)特征,區(qū)域輪廓是跟蹤區(qū)域邊界獲得一個(gè)輪廓,然后將區(qū)域邊界上的全部點(diǎn)連接到一起。輪廓長(zhǎng)度是歐幾里德長(zhǎng)度,平行于坐標(biāo)軸與垂直坐標(biāo)軸的兩個(gè)相鄰輪廓點(diǎn)之間的距離為1。HALCON編程基礎(chǔ)與工程應(yīng)用3.3

59、HALCON XLD輪廓 3.3.1 XLD的初步介紹1XLD定義圖像中Image和區(qū)域Region這些數(shù)據(jù)結(jié)構(gòu)是像素精度的,在實(shí)際工業(yè)應(yīng)用中,需要比圖像像素分辨率更高的精度,這時(shí)就需要提取亞像素精度數(shù)據(jù),亞像素精度數(shù)據(jù)可以通過(guò)亞像素閾值分割或者亞像素邊緣提取來(lái)獲得。3.3.2 XLD的數(shù)據(jù)結(jié)構(gòu)分析1XLD數(shù)據(jù)結(jié)構(gòu)介紹XLD輪廓的很多屬性存儲(chǔ)在XLD的數(shù)據(jù)結(jié)構(gòu)中,為了描述不同的邊緣輪廓,HALCON規(guī)定了幾種不同的XLD數(shù)據(jù)結(jié)構(gòu),對(duì)于不同的數(shù)據(jù)結(jié)構(gòu)一般是通過(guò)不同的算子獲得的。區(qū)域或多邊形轉(zhuǎn)換成亞像素輪廓的算子(1)gen_contour_region_xld(Regions:Contours:

60、Mode:)HALCON編程基礎(chǔ)與工程應(yīng)用3.3HALCON XLD輪廓 (3)gen_contour_polygon_xld(:Contour:Row,Col:)(2)get_contour_xld(Contour:Row,Col)(4)gen_polygons_xld(Contours:Polygons:Type,Alpha:)(5)gen_ellipse_contour_xld(:ContEllipse:Row,Column,Phi,Radius1,Radius2,StartPhi,EndPhi,PointOrder,Resolution:)(6)gen_circle_contour_x

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論