版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
HALCON編程及工程應(yīng)用346頁完整版PPT課件1.11.2機器視覺HALCON介紹
HALCON編程基礎(chǔ)與工程應(yīng)用第1章
機器視覺和HALCON機器視覺軟件1.1
機器視覺1.1.1機器視覺簡介HALCON編程基礎(chǔ)與工程應(yīng)用
機器視覺(Machinevision)是一項綜合技術(shù),包括圖像處理、機械工程技術(shù)、電氣控制技術(shù)、光源照明、光學(xué)成像、傳感器、模擬與數(shù)字視頻技術(shù)、計算機軟硬件技術(shù)(圖像增強和分析算法、圖像采集卡、I/O卡等)。一個典型的機器視覺應(yīng)用系統(tǒng)包括圖像捕捉、光源系統(tǒng)、圖像數(shù)字化模塊、數(shù)字圖像處理模塊、智能判斷決策模塊和機械控制執(zhí)行模塊。1.1
機器視覺1.1.1機器視覺簡介HALCON編程基礎(chǔ)與工程應(yīng)用1.1
機器視覺1.1.1機器視覺簡介HALCON編程基礎(chǔ)與工程應(yīng)用1.1.2機器視覺關(guān)鍵技術(shù)與發(fā)展HALCON編程基礎(chǔ)與工程應(yīng)用1.1
機器視覺1.機器視覺系統(tǒng)基本構(gòu)成
一個典型的工業(yè)機器視覺系統(tǒng)包括:光源、鏡頭(定焦鏡頭、變倍鏡頭、遠心鏡頭、顯微鏡頭)、相機(包括CCD相機或COMS相機)、圖像處理單元(或圖像采集卡)、圖像處理軟件、監(jiān)視器、通訊單元及輸入輸出單元等。1.1.2機器視覺關(guān)鍵技術(shù)與發(fā)展HALCON編程基礎(chǔ)與工程應(yīng)用1.1
機器視覺2.機器視覺主要關(guān)鍵技術(shù)
機器視覺技術(shù),是一門涉及人工智能、神經(jīng)生物學(xué)、心理物理學(xué)、計算機科學(xué)、圖像處理、模式識別等諸多領(lǐng)域的交叉學(xué)科。機器視覺主要用計算機來模擬人的視覺功能,從客觀事物的圖像中提取信息,進行處理并加以理解,最終用于實際檢測、測量和控制。機器視覺技術(shù)最大的特點是速度快、信息量大、功能多。1.1.2機器視覺關(guān)鍵技術(shù)與發(fā)展HALCON編程基礎(chǔ)與工程應(yīng)用1.1
機器視覺3.機器視覺的發(fā)展
機器視覺技術(shù)是計算機學(xué)科的一個重要分支,自起步發(fā)展至今,其功能以及應(yīng)用范圍隨著工業(yè)自動化的發(fā)展逐漸完善和推廣。20世紀(jì)50年代開始研究二維圖像的統(tǒng)計模式識別。60年代Roberts開始進行三維機器視覺的研究。70年代中,MIT人工智能實驗室正式開設(shè)“機器視覺”的課程。80年代開始,開始了全球性的研究熱潮,機器視覺獲得了蓬勃發(fā)展,新概念、新理論不斷涌現(xiàn)。1.2.1HDevelop介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹1.集成開發(fā)環(huán)境-HDevelopHALCON提供交互式的編程環(huán)境HDevelop,可在Windows,Linux,Unix下使用,使用HDevelop可使用戶快速有效的解決圖像處理問題。1.2.1HDevelop介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹1.2.1HDevelop介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹
HDevelop能直接連接采集卡和相機,從采集卡、相機或者文件中載入圖像,檢查圖像數(shù)據(jù),進而開發(fā)一個視覺檢測方案,并能測試不同算子或者參數(shù)值的計算效果,保存后的視覺檢測程序,可以導(dǎo)出以C++、C#、C、VisualBasic,或者VB.NET支持的程序,進行混合編程。HDevelop編程方式具有的優(yōu)點是:(1)很好的支持所有HALCON算子;(2)方便檢查可視數(shù)據(jù);(3)方便選擇、調(diào)試和編輯參數(shù);(4)方便技術(shù)支持。2.標(biāo)準(zhǔn)的開發(fā)流程HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹3.交互式并行編程環(huán)境HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹HALCON提供支持多CPU處理器的交互式并行編程環(huán)境ParalellDevelop,其繼承了單處理器版HDevelop的所有特點,在多處理器計算機上會自動將數(shù)據(jù)(比如圖像)分配給多個線程,每一個線程對應(yīng)一個處理器,用戶無需改動已有的HALCON程序,就立即獲得顯著的速度提升。
并行HALCON不僅是線程安全的,而且可以多次調(diào)用,因此,多個線程可在同一時刻同時調(diào)用HALCON操作。此特性使得機器視覺應(yīng)用軟件可以將一個任務(wù)分解,在不同的處理器上并行處理,并行HALCON可以使用戶使用最新的超級線程技術(shù)。1.2.2HALCON功能及應(yīng)用簡介HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹1.BLOB分析BLOB包括標(biāo)準(zhǔn)閾值分割,動態(tài)分割以及其他附加的圖像分割算子,HALCON可以快速實現(xiàn)BLOB分析。2.形態(tài)學(xué)HALCON可以基于任意結(jié)構(gòu)元素針對Region和image的腐蝕、膨脹、開/閉運算。3.圖像特征轉(zhuǎn)換為Region/XLD特性HALCON獨特的數(shù)據(jù)結(jié)構(gòu)Region/XLD可以保證圖像處理的快速準(zhǔn)確。4.圖像的運算HALCON為了實現(xiàn)圖像處理的各種目的可以進行圖像的代數(shù)運算,邏輯運算,幾何運算。1.2.2HALCON功能及應(yīng)用簡介HALCON編程基礎(chǔ)與工程應(yīng)用1.2HALCON介紹5.傅立葉變換實現(xiàn)圖像的空間域和頻域之間的變換。6.標(biāo)定利用HALCON本身的標(biāo)定板,通過幾個內(nèi)外攝像頭參數(shù)實現(xiàn)快速標(biāo)定。7.匹配基于相關(guān)性匹配,基于形狀匹配,基于灰度值匹配等等;即使目標(biāo)發(fā)生旋轉(zhuǎn)、放縮、局部變形、部分遮擋或者光照有非線性變化,HALCON利用XLD匹配技術(shù)可實時地有效、準(zhǔn)確地找到目標(biāo)。8.測量HALCON提供有1D測量、2D測量、3D測量,HALCON邊緣提取輸出正像素輪廓,達到最高精度,保證了測量的精準(zhǔn)性。第2章HALCON編程基礎(chǔ)HALCON編程基礎(chǔ)與工程應(yīng)用HALCON軟件的編程環(huán)境Hdevelop是交互式的,它的操作窗口和編程界面簡潔、易操作。本章主要介紹Hdevelop的使用,并介紹HALCON的控制語句,以及編程環(huán)境下圖像的讀取、顯示和轉(zhuǎn)換。
2.4HDevelop應(yīng)用界面介紹HALCON控制語句HALCON算子
HALCON圖像讀取、顯示和轉(zhuǎn)換Blob分析第2章HALCON編程基礎(chǔ)HALCON編程基礎(chǔ)與工程應(yīng)用2.1HDevelop應(yīng)用界面介紹HALCON編程基礎(chǔ)與工程應(yīng)用HDevelop圖形組件是開始視覺處理算法的一個很好的工具,其類似于VC、VB、Delphi等編譯環(huán)境,它有自己的交互式界面,可以編譯和測試視覺處理算法,可以方便查看處理結(jié)果,也可以導(dǎo)出算法代碼。1.HDevelop預(yù)覽HALCON編程基礎(chǔ)與工程應(yīng)用HALCON安裝完成后,點擊圖標(biāo)運行HALCON軟件,下面介紹其主要的界面。1.主界面整個界面分為標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄和四個活動界面窗口,四個活動界面窗口分別是圖像變量窗口、算子窗口、變量窗口和程序窗口,如圖2-1所示。如果窗口排列不整齊,可以選擇菜單欄>窗口>排列窗口,重新排列窗口。圖2-1HALCON主界面1.HDevelop預(yù)覽HALCON編程基礎(chǔ)與工程應(yīng)用2.菜單欄菜單欄包含所有HDevelop的功能命令,單擊打開后有下拉菜單,如圖2-2所示。圖2-2菜單欄4.狀態(tài)欄狀態(tài)欄顯示程序的執(zhí)行情況,如圖2-4所示。。圖2-3工具欄3.工具欄工具欄包含了一系列常用功能的快捷方式,如圖2-3所示。圖2-4狀態(tài)欄1.HDevelop預(yù)覽HALCON編程基礎(chǔ)與工程應(yīng)用5.打開一個例程HALCON提供了大量基于應(yīng)用的示例程序,下面打開一個HALCON自帶例程,簡單了解一下HALCON程序的結(jié)構(gòu)。從菜單欄>文件>瀏覽程序>打開一個例程,比如打開ball.hdev,如圖2-5,2-6所示。點擊工具欄“運行”工具圖標(biāo),運行程序,結(jié)果如圖2-7所示。圖2-5瀏覽例程1.HDevelop預(yù)覽HALCON編程基礎(chǔ)與工程應(yīng)用圖2-7例程運行結(jié)果圖2-6打開例程2.HDevelop窗口介紹HALCON編程基礎(chǔ)與工程應(yīng)用1.HDevelop算子窗口算子窗口顯示的是算子的重要數(shù)據(jù),包含了所有的參數(shù),各個變量的型態(tài),以及參數(shù)數(shù)值,如圖2-8所示。這里會顯示參數(shù)的默認值,以及可以選用的數(shù)值。每一個算子都有聯(lián)機幫助。另一個常用的是算子名稱的查詢顯示功能,在一個combobox里,只要鍵入部分字符串甚至開頭的字母,即可顯示所有符合名稱的算子供選用,如圖2-9所示。圖2-8算子窗口2.HDevelop窗口介紹HALCON編程基礎(chǔ)與工程應(yīng)用2.HDevelop程序窗口程序窗口是用來顯示一個HDevelop程序。它可以顯示整個程序或是某個運算符。窗口左側(cè)是一些控制程序執(zhí)行的指示符號。HDevelop剛啟動時,可以看到一個綠色箭頭的程序計數(shù)器(programcounter,簡稱PC),一個插入符號,還可以設(shè)一個斷點(breakingpoint),窗口右側(cè)顯示程序代碼,如圖2-10所示。圖2-9算子查詢2.HDevelop窗口介紹HALCON編程基礎(chǔ)與工程應(yīng)用在程序編輯窗口點擊右鍵,在下拉菜單顯示程序運行調(diào)試中的一些設(shè)置,如圖2-11所示。圖2-10程序窗口圖2-11程序調(diào)試設(shè)置2.HDevelop窗口介紹HALCON編程基礎(chǔ)與工程應(yīng)用HDevelop啟動以后,就可以開始從程序窗口輸入,逐步建立一個HDevelop程序。要在程序中新增一行,比如加一個算子,有以下兩個步驟。(1)首先要將光標(biāo)放在新增的地方,用鍵盤的Shift鍵加上的鼠標(biāo)左鍵,點在要加入的地方,然后從算子菜單中選擇,或是由算子窗口來選用想要加入的數(shù)據(jù)。(2)新的算子會出現(xiàn)在算子窗口中,包含它的參數(shù)等數(shù)據(jù),此時按下“輸入”,就會將它加入程序代碼中,成為新增的一行;如果按下“確定”,除了程序代碼會新增以外,同時也會執(zhí)行程序。如果按的是“應(yīng)用”,算子不會新增到程序中,但是會被執(zhí)行,這樣就可以方便又有效的測試修改參數(shù)的結(jié)果。如果只要執(zhí)行某一行,可以將程序計數(shù)器(PC)置于要執(zhí)行的那行前,再用鼠標(biāo)左鍵在該行前單擊,然后按HDevelop工具欄的“單步跳過函數(shù)”,如果單擊“運行”,則程序代碼都會執(zhí)行,直到一個斷點或是按“停止”將其中止。2.HDevelop窗口介紹3.HDevelop變量窗口變量窗口顯示了程序在執(zhí)行時產(chǎn)生的各種變量,包括圖像變量和控制變量,如圖2-12所示。在變量上用鼠標(biāo)雙擊,即可顯示變量值,如圖2-13所示。如果變量值是圖像變量,鼠標(biāo)雙擊,會顯示在圖形窗口里。圖2-12變量窗口圖2-13變量值HALCON編程基礎(chǔ)與工程應(yīng)用2.HDevelop窗口介紹
4.HDevelop圖形窗口圖形窗口用來顯示圖像化變量數(shù)據(jù),如圖2-14所示。圖2-14圖形窗口圖2-15可視化菜單(1)圖形窗口可視化圖形窗口可視化的方式可以依據(jù)需要來調(diào)整,相關(guān)功能位于“可視化”菜單下,如圖2-15所示??梢蚤_啟數(shù)個圖形窗口,并且自行選用要用的窗口。HALCON編程基礎(chǔ)與工程應(yīng)用2.HDevelop窗口介紹圖2-16圖形窗口的3D模式(2)圖形窗口的3D模式點擊圖2-14圖形窗口右上角“3D點圖模式”,可以將圖形窗口變?yōu)?D模式,如圖2-16所示。HALCON編程基礎(chǔ)與工程應(yīng)用2.HDevelop窗口介紹
圖2-17灰度直方圖(3)HDevelop灰度直方圖從菜單欄>可視化菜單>灰度直方圖,打開灰度直方圖功能窗口,進行設(shè)置,如圖2-17所示。HALCON編程基礎(chǔ)與工程應(yīng)用2.HDevelop窗口介紹
圖2-18特征直方圖(4)HDevelop特征直方圖從菜單欄>可視化菜單>特征直方圖,打開特征直方圖功能窗口,進行設(shè)置和編輯,并可根據(jù)編輯的直觀結(jié)果,插入程序代碼。如圖2-18所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.HDevelop菜單介紹
圖2-19編輯菜單1.編輯菜單編輯菜單用于HDevelop編程時的編輯使用,如圖2-19所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.HDevelop菜單介紹
圖2-20執(zhí)行菜單2.執(zhí)行菜單執(zhí)行菜單用于程序調(diào)試時的設(shè)置及運行,如圖2-20所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.HDevelop菜單介紹
圖2-21過程菜單3.過程菜單過程菜單用于HDevelop中創(chuàng)建一個過程或者開發(fā)新的算子,如圖2-21所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.HDevelop菜單介紹
圖2-22助手菜單4.助手菜單打開菜單欄>助手,助手菜單是特有的快速原型化工具,具有直觀可視的特點,可以進行數(shù)據(jù)分析和特征檢測,包括圖像獲取助手、匹配助手、攝像機標(biāo)定助手和測量助手。如圖2-22所示。HALCON編程基礎(chǔ)與工程應(yīng)用2.2HALCON控制語句
HALCON編程基礎(chǔ)與工程應(yīng)用HALCON提供的控制流與C/C++的用法類似。一般成對存在,一個是開始的標(biāo)志,一個是結(jié)束的標(biāo)志。也就是說有if就有endif,有while就有endwhile??刂普Z句類型主要由以下幾種組成:(1)if條件語句;(2)switch多分支條件語句;(3)while循環(huán)語句;(4)for循環(huán)語句;(5)中斷語句。1.條件語句1.if條件語句If條件語句有三種常用的表達形式,下面一一列出。(1)if(表達式)語句組1endif語義為:判斷表達式的值,如果表達式的值非零則執(zhí)行語句組1,否則直接轉(zhuǎn)到endif。【例2-1】if條件語句實例1*賦值cont:=2*判斷變量cont的值是否大于等于1,大于等于1就執(zhí)行語句cont:=cont-1if(cont>=1)cont:=cont-1HALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句*if條件語句結(jié)束標(biāo)志endif(2)if(表達式)語句組1else語句組2endif語義為:判斷表達式的值,如果表達式的值非零則執(zhí)行語句組1,否則執(zhí)行語句組2。【例2-2】if條件語句實例2cont:=2*判斷變量cont的值是否大于等于1,大于等于1就執(zhí)行語句cont:=cont-1HALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句if(cont>=1)cont:=cont-1*cont的值小于1就執(zhí)行語句cont:=cont+1elsecont:=cont+1*if條件語句結(jié)束標(biāo)志endif(3)if(表達式1)語句組1elseif(表達式2)語句組2else語句組3endifHALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句語義為:判斷表達式的值,表達式1的值非零則執(zhí)行語句組1。表達式1的值為零而表達式2的值非零則執(zhí)行語句組2,兩個表達式的值都為零則執(zhí)行語句組3?!纠?-3】if條件語句實例3cont:=2*判斷變量cont是否大于等于1,大于等于1就執(zhí)行語句cont:=cont-1if(cont>=1)cont:=cont-1*判斷變量cont是否小于等于-1,小于等于-1就執(zhí)行語句cont:=cont+1elseif(cont<=-1)cont:=cont+1*如果cont大于-1小于1執(zhí)行語句cont:=cont+2HALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句elsecont:=cont+2*if條件語句結(jié)束標(biāo)志endif2.switch多分支條件語句當(dāng)if...else條件語句使用多層嵌套可以用switch多分支條件語句代替。格式:switch(條件)case常量表達式1:語句1break...
HALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句case常量表達式n:語句nbreakdefault:語句n+1endswitch語義為:將條件值與其后的常量表達式的值逐個比較,當(dāng)條件的值與其后的某個常量表達式的值相等時就執(zhí)行常量表達式后面的所有語句。每個case語句只是一個入口標(biāo)號,所以不能確定執(zhí)行的終止點,如果只想執(zhí)行一條case語句,則應(yīng)該在case語句的最后使用break語句結(jié)束switch條件語句。如果條件值與所有的常量表達式的值均不相等則執(zhí)行default后面的語句。switch語句中所有常量表達式的值應(yīng)該是不重復(fù)的常量。因為switch語句無法處理浮點數(shù)所以條件值必須是整數(shù)。如果條件選項涉及取值范圍、浮點數(shù)或兩個變量的比較則應(yīng)該使用if...else條件語句。
HALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句【例2-4】switch條件語句實例I:=5*I的值與其后的常量表達式的值逐個比較switch(I)case1:I:=I-3*中斷語句,跳出switch語句break*I的值與常量表達式的值相等,執(zhí)行后面的語句case5:I:=I+5break*I的值與其后所有常量表達式的值都不相等則執(zhí)行default語句default:I:=2*IHALCON編程基礎(chǔ)與工程應(yīng)用1.條件語句*switch語句結(jié)束標(biāo)志endswitchHALCON編程基礎(chǔ)與工程應(yīng)用2.循環(huán)控制語句1.while循環(huán)語句格式:while(條件)循環(huán)體語句endwhile語義為:首先對條件值進行判斷,若條件值非零則重復(fù)執(zhí)行循環(huán)語句,直到條件值為零時退出while循環(huán)。若條件值始終不為零,則while循環(huán)容易成為死循環(huán),這時候需要使用break語句跳出循環(huán)。【例2-5】while循環(huán)語句實例In:=1In_Sum:=0*判斷In是否小于等于100,小于等于100則執(zhí)行循環(huán)體while(In<=100)HALCON編程基礎(chǔ)與工程應(yīng)用2.循環(huán)控制語句*求和In_Sum:=In_Sum+In*自加10In:=In+10*while語句結(jié)束標(biāo)志endwhile2.for循環(huán)語句格式:for(Index:=starttoendbystep)循環(huán)體endforFor循環(huán)語句是HALCON最重要的循環(huán)結(jié)構(gòu),通過控制變量的開始值至結(jié)束值來進行循環(huán),start為Index變量的開始值,end為結(jié)束值,step為步長值。首先判斷Index變量的開始值是否小于結(jié)束值,如果小于則執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。執(zhí)行完循環(huán)體以后把Index的值加步長值HALCON編程基礎(chǔ)與工程應(yīng)用2.循環(huán)控制語句作為Index的新值,判斷Index的新值是否小于結(jié)束值。如果小于則繼續(xù)執(zhí)行循環(huán)體,否則循環(huán)結(jié)束,依次執(zhí)行直到Index的新值大于結(jié)束值則循環(huán)結(jié)束?!纠?-6】for循環(huán)語句實例I:=0*循環(huán)變量I從1到10,每次增加1forJ:=1to10by1*每次循環(huán)判斷J是否小于5,小于5則跳過這次循環(huán)if(J<5)continue*if語句結(jié)束標(biāo)志endif*求和I:=I+JHALCON編程基礎(chǔ)與工程應(yīng)用2.循環(huán)控制語句*for循環(huán)語句結(jié)束標(biāo)志endforHALCON編程基礎(chǔ)與工程應(yīng)用3.中斷語句
一般來說break與continue語句都能夠使程序跳過部分代碼。在switch或任意循環(huán)中使用break語句可以使程序跳出switch或任意循環(huán)直接執(zhí)行后面的語句。continue語句用于循環(huán)語句,能夠使程序跳過循環(huán)體中余下的代碼進行新一輪循環(huán)?!纠?-7】中斷語句實例I:=0forJ:=1to10by1*如果J大于5則跳出循環(huán)if(J>5)breakendif*如果J=3跳過此次循環(huán)HALCON編程基礎(chǔ)與工程應(yīng)用3.中斷語句if(J==3)continue*if語句結(jié)束標(biāo)志endif*求和I:=I+J*for語句結(jié)束標(biāo)志endforHALCON編程基礎(chǔ)與工程應(yīng)用2.3HALCON算子1.HALCON算子及算子編輯窗口HALCON算子的基本結(jié)構(gòu)為:算子(圖像輸入:圖像輸出:控制輸入:控制輸出:)HALCON算子中的四種參數(shù)被三個冒號依次隔開,分別是:圖像輸入?yún)?shù),圖像輸出參數(shù),控制輸入?yún)?shù),控制輸出參數(shù)。一個算子中可能這四種參數(shù)不會都存在,但是參數(shù)的次序不會變化。HALCON中的輸入?yún)?shù)不會被算子更改,只被算子使用,算子只能更改輸出參數(shù)。算子舉例:threshold(Image:Region:MinGray,MaxGray:)Threshold算子里面Image為圖像輸入?yún)?shù);Region為圖像輸出參數(shù);MinGray和MaxGray為控制輸入?yún)?shù)。由此看出調(diào)用這個算子必須輸入一個圖像參數(shù)和兩個控制參數(shù)才能輸出一個圖像參數(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算子及算子編輯窗口通過算子編輯窗口我們看到每條算子都有特定的顏色,我們可以通過打開參數(shù)用戶窗口看到編輯窗口中各算子對應(yīng)的顏色如圖2-25所示。通過菜單欄>編輯>參數(shù)選擇>程序窗口>打開程序窗口。一般情況下,語句的顏色分類:1)褐色:控制和開發(fā)算子;2)藍色:圖像獲取和處理算子;3)淺藍色:外部函數(shù);4)綠色:注釋。HALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON算子及算子編輯窗口在參數(shù)用戶窗口可以通過對話框修改編輯窗口算子顯示的顏色、字體、HDevelop系統(tǒng)語言、布局。布局主要是指四個活動界面窗口排列的位置,布局說明如圖2-26所示。圖2-25程序窗口參數(shù)HALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON算子及算子編輯窗口圖2-26布局說明HALCON編程基礎(chǔ)與工程應(yīng)用2.算子查詢2算子查詢算子的幫助窗口包含了所有HALCON算子的詳細說明,可以通過按F1快捷鍵打開HALCON算子的幫助窗口,也可以通過下面的步驟打開幫助窗口:菜單欄>幫助>幫助。算子名稱具有查詢顯示作用,通過算子查找對話框鍵入全部或部分算子名稱,在彈出的列表里點擊想查找的算子,幫助窗口右側(cè)會顯示算子的具體說明,如圖2-27所示。具體說明包括:算子名稱:算子的英文名稱以及大致功能;算子簽名:帶有算子參數(shù)、分隔符的算子簽名;算子描述:描述算子功能和各參數(shù)意義;算子參數(shù):講解各參數(shù)類型和屬性;HDevelop例程:用到此算子的例程,點擊可查看例程。HALCON編程基礎(chǔ)與工程應(yīng)用2.算子查詢圖2-27幫助窗口HALCON編程基礎(chǔ)與工程應(yīng)用3.算子編輯3.算子編輯算子編輯過程常使用算子窗口來建立HDevelop程序,算子窗口包含了各算子的參數(shù)及參數(shù)取值。使用算子窗口能夠直接對算子參數(shù)的取值進行合理選擇。下面以新建threshold程序為例,說明如何使用算子窗口建立某一行HDevelop程序。使用算子窗口建立某一行HDevelop程序的步驟為:單擊鼠標(biāo)使光標(biāo)定位到要創(chuàng)建程序的位置,通過菜單欄>算子窗口>輸入算子和函數(shù)對話框中鍵入全部或部分算子名稱,找到需要編輯的算子>回車確認>打開算子窗口>選擇合適的算子參數(shù)>點擊確定。輸入算子和函數(shù)對話框如圖2-28所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.算子編輯圖2-28輸入算子和函數(shù)對話框
一般來說打開算子窗口以后需要對算子的四個參數(shù)(圖像輸入?yún)?shù),圖像輸出參數(shù),控制輸入?yún)?shù),控制輸出參數(shù))進行選擇。此處threshold算子只需要對前3個參數(shù)進行選擇,各參數(shù)的描述如圖2-29所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.算子編輯圖2-29算子窗口參數(shù)描述
使用下拉列表直接選擇threshold算子的圖像輸入?yún)?shù)與圖像輸出參數(shù)名稱,通過下拉列表對輸入?yún)?shù)的數(shù)值進行選擇,如圖2-30所示。HALCON編程基礎(chǔ)與工程應(yīng)用3.算子編輯圖2-30控制輸入?yún)?shù)數(shù)值選擇
算子編輯有關(guān)的快捷鍵:F3為激活所選程序行,F(xiàn)4為注銷所選程序行。HALCON編程基礎(chǔ)與工程應(yīng)用4.算子更改4算子更改HDevelop程序編寫過程中可以利用算子窗口對某一行的算子進行更改。算子更改步驟為:雙擊算子名稱選中需要更改的算子>右鍵>打開算子窗口,在彈出的算子窗口中修改參數(shù),算子更改如圖2-31所示。圖2-31算子更改HALCON編程基礎(chǔ)與工程應(yīng)用5.算子運行5.算子運行執(zhí)行程序時如果只要執(zhí)行某一行需要選中執(zhí)行行的前一行,右鍵選擇程序計數(shù)器,將執(zhí)行標(biāo)示定位到要執(zhí)行的前一行,通過菜單欄>執(zhí)行>單步跳過程序>執(zhí)行某一行。多行的執(zhí)行可以通過菜單欄>執(zhí)行>運行>執(zhí)行接下來的所有程序代碼,直到遇到斷點或是遇到Stop算子才會中止程序。算子運行有關(guān)的快捷鍵:F2為重置程序執(zhí)行,F(xiàn)5為程序運行,F(xiàn)6為單步跳過函數(shù),F(xiàn)7為單步跳入函數(shù),F(xiàn)8為單步跳出函數(shù)。HALCON編程基礎(chǔ)與工程應(yīng)用2.4HALCON圖像讀取、顯示和轉(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快捷鍵打開讀取圖像對話框>選擇文件名稱所在的路徑及變量名稱>選擇語句插入位置>點擊確定,快捷鍵讀取圖像如圖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)讀取同一路徑下的多張圖。首先聲明一個Tuple數(shù)組保存文件名及路徑,然后利用for循環(huán)依次讀取Tuple數(shù)組保存路徑下的圖像?!纠?-8】for循環(huán)讀取圖像實例*聲明數(shù)組ImagePath:=[]*將文件名及路徑保存到數(shù)組ImagePath[0]:='fin1.png'ImagePath[1]:='fin1.png'ImagePath[2]:='fin1.png'*循環(huán)讀取圖像fori:=0to2by1read_image(Image,ImagePath[i])*for循環(huán)結(jié)束標(biāo)志endforHALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON圖像讀取2.利用采集助手批量讀取文件夾下所有圖像利用采集助手批量讀取文件夾下所有圖像的步驟為:菜單欄>助手>打開新的ImageAcquisition>資源>圖像文件>選擇路徑>代碼生成>插入代碼,選擇文件夾路徑如圖2-34,生成批量讀取圖像的代碼如圖2-35所示。圖2-34選擇文件夾路徑HALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON圖像讀取圖2-35生成批量讀取圖像的代碼HALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON圖像讀取【例2-9】利用采集助手讀取圖像實例*遍歷文件夾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|jpg|jpeg|jp2|png)$','ignore\_case'],ImageFiles)*依次讀取圖像forIndex:=0to|ImageFiles|-1by1read_image(Image,ImageFiles[Index])*顯示圖像dev_display(Image)endforHALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON圖像讀取算子講解:(1)list_image_files(::ImageDirectory,Extensions,Options:ImageFiles)作用:遍歷文件夾;ImageDirectory:文件夾路徑;Extensions:文件擴展名,如tif|tiff|gif|bmp|jpg|jpeg|jp2|png等;Options:搜索選項,如表2-1所示。
表2-1搜索選項files指定搜索的格式為文件directories指定搜索格式為文件夾recursive指定可以遍歷文件夾下的文件max_depth5指定遍歷的深度max_files1000指定遍歷的最大文件數(shù)目表2-1搜索選項ImageFiles:文件名數(shù)組。HALCON編程基礎(chǔ)與工程應(yīng)用1.HALCON圖像讀取(2)tuple_regexp_select(::Data,Expression:Selection)作用:篩選指定格式的圖像;Data:輸入的文件名數(shù)組;Expression:文件篩選規(guī)則表達式;Selection:篩選出的文件名數(shù)組。HALCON編程基礎(chǔ)與工程應(yīng)用2.HALCON圖像顯示1.圖形窗口默認的圖形窗口尺寸為512*512,因此當(dāng)圖像尺寸不同時顯示在圖像窗口上會變形,要看到無變形的圖像的步驟為:菜單欄>可視化>圖像尺寸>適應(yīng)窗口,即可自動調(diào)整窗口。通常使用HDevelop算子dev_open_window(::Row,Column,Width,Height,Background:WindowHandle)來新增一個圖形窗口。算子參數(shù)Row、Column為窗口起始坐標(biāo)(默認值都為零),參數(shù)Width、Height是指窗口的寬度和高度(默認值都為512),Background為窗口的背景顏色(默認為“black”),WindowHandle是指窗口句柄。新建窗口時如果不知道窗口的確定尺寸,可將窗口的高度和寬度都設(shè)置為"-1",設(shè)置為"-1"表示窗口大小等于最近打開的圖像大小,具體算子為:dev_open_window(0,0,-1,-1,‘black’,WindowHandle)。HALCON編程基礎(chǔ)與工程應(yīng)用2.HALCON圖像顯示打開HDevelop的變量窗口,雙擊圖像變量目錄下已存在的圖像,圖像就會顯示在圖形窗口。圖形窗口顯示的圖像可以進行縮放,直接把鼠標(biāo)放到要進行縮放的區(qū)域,滑動鼠標(biāo)中間滾輪進行縮放操作,要恢復(fù)原有尺寸只需要在圖形窗口點擊“適應(yīng)窗口”。我們也可以通過菜單欄>可視化>設(shè)置參數(shù)>縮放,對顯示的圖像進行縮放,在想要放大的區(qū)域點擊放大或者縮小按鈕,要回復(fù)原有尺寸直接點擊“重置”按鈕。2.圖像顯示HDevelop中顯示圖像通常使用dis_display算子,格式為:dev_display(Object:::)。運行模式下運行算子時圖形窗口會實時更新,如果只想通過圖像顯示算子在圖形窗口顯示某些圖像(image,region或xld)就可以關(guān)閉窗口的更新。我們可以通過調(diào)用dev_update_window(‘off')語句關(guān)閉窗口的更新。也可以HALCON編程基礎(chǔ)與工程應(yīng)用2.HALCON圖像顯示通過菜單欄>可視化>更新窗口>單步模式>清空并顯示命令,關(guān)閉窗口的更新。如果關(guān)閉了窗口的更新,則只能手動調(diào)用dev_display()操作來顯示圖像。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)用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】圖像顯示實例*關(guān)閉窗口dev_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,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)換HALCON編程基礎(chǔ)與工程應(yīng)用1.RGB圖像轉(zhuǎn)換成灰度圖RGB圖像轉(zhuǎn)換成灰度圖可以使用rgb1_to_gray算子,其格式為:rgb1_to_gray(RGBImage:GrayImage::)很明顯,RGBImage與GrayImage分別是輸入、輸出圖像參數(shù)。如果輸入圖像是三通道圖像,RGB圖像的三個通道可以根據(jù)以下公式轉(zhuǎn)化成灰度圖?;疑?0.299*紅色值+0.587*綠色值+0.114*藍色值如果RGBImage中輸入圖像是單通道圖像,GrayImage灰度圖將直接復(fù)制RGBImage進行輸出?!纠?-11】RGB圖轉(zhuǎn)灰度圖實例*讀取圖像read_image(Earth,'earth.png')*RGB圖像轉(zhuǎn)換成灰度圖像rgb1_to_gray(Earth,GrayImage)程序執(zhí)行,圖像變量如圖2-37所示。3.HALCON圖像轉(zhuǎn)換HALCON編程基礎(chǔ)與工程應(yīng)用圖2-37RGB圖像轉(zhuǎn)換成灰度圖3.HALCON圖像轉(zhuǎn)換2.區(qū)域與圖像的平均灰度值求區(qū)域與圖像的平均灰度值可以使用算子region_to_mean,其格式為:region_to_mean(Regions,Image:ImageMean::)通過此算子繪制ImageMean圖像,將其灰度值設(shè)置為Regions和Image的平均灰度值。【例2-12】求區(qū)域與圖像平均灰度值實例*讀取圖像read_image(Image,'fabrik')*區(qū)域生長regiongrowing(Image,Regions,3,3,6,100)*得到區(qū)域與圖像的平均灰度值region_to_mean(Regions,Image,Disp)dev_open_window(0,0,400,400,'black',WindowHandle)*顯示圖像dev_display(Disp)程序執(zhí)行,結(jié)果如圖2-38所示。3.HALCON圖像轉(zhuǎn)換HALCON編程基礎(chǔ)與工程應(yīng)用圖2-38圖像與區(qū)域平均灰度圖3.HALCON圖像轉(zhuǎn)換HALCON編程基礎(chǔ)與工程應(yīng)用3.將區(qū)域轉(zhuǎn)換為二進制圖像或label圖像(1)將區(qū)域轉(zhuǎn)換為二進制圖像
使用region_to_bin算子能夠?qū)^(qū)域轉(zhuǎn)換為二進制圖像,格式為:region_to_bin(Region:BinImage:ForegroundGray,BackgroundGray,Width,Height:)使用算子將區(qū)域轉(zhuǎn)換為“byte”圖像,如果輸入?yún)^(qū)域大于生成的圖像就會在圖像邊界處進行剪切。(2)將區(qū)域轉(zhuǎn)換為Label圖像
使用算子region_to_label能夠?qū)^(qū)域轉(zhuǎn)換為Label圖像,格式為:region_to_label(Region:ImageLabel:Type,Width,Height:)算子可以根據(jù)索引(1..n)將輸入?yún)^(qū)域轉(zhuǎn)換為標(biāo)簽圖像,即第一區(qū)域被繪制為灰度值1,第二區(qū)域被繪制為灰度值2等。對于比生成的圖像灰度值大的區(qū)域?qū)贿m當(dāng)?shù)丶羟小?.HALCON圖像轉(zhuǎn)換HALCON編程基礎(chǔ)與工程應(yīng)用【例2-13】區(qū)域轉(zhuǎn)換為二進制圖或label圖實例*讀取圖像read_image(Image,'a01.png')*復(fù)制圖像copy_image(Image,DupImage)*區(qū)域生長regiongrowing(DupImage,Regions,3,3,1,100)*將區(qū)域轉(zhuǎ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所示。3.HALCON圖像轉(zhuǎn)換HALCON編程基礎(chǔ)與工程應(yīng)用圖2-39區(qū)域轉(zhuǎn)換的圖像變量本章小結(jié)
HALCON編程基礎(chǔ)與工程應(yīng)用本章首先介紹了HALCON軟件交互式的編程環(huán)境Hdevelop及其界面和窗口,然后對HALCON的控制語句進行介紹,主要介紹了HALCON算子的基本操作,HALCON所有算子(函數(shù))的參數(shù)均以相同的方式來排列:輸入圖像,輸出圖像,輸入控制,輸出控制。最后在HALCON編程環(huán)境下進行了圖像讀取,圖像顯示,圖像轉(zhuǎn)換的實例分析。3.4HALCONImage圖像
HALCONRegion區(qū)域
HALCONXLD輪廓
Handle句柄第3章 HALCON數(shù)據(jù)結(jié)構(gòu)HALCON編程基礎(chǔ)與工程應(yīng)用3.1 HALCONImage圖像HALCON編程基礎(chǔ)與工程應(yīng)用3.1.1Image的分類
根據(jù)每個像素信息不同,通常將圖像分為:二值圖像,灰度圖像,RGB圖像。這部分已經(jīng)在2.2節(jié)進行了詳細地介紹。3.1.2Image的通道(1)append_channel(MultiChannelImage,Image:ImageExtended::)作用:將Image圖像的通道與MultiChannelImage圖像的通道疊加得到新圖像。MultiChannelImage:多通道圖像;Image:要疊加的圖像;ImageExtended:疊加后得到的圖像。
(2)decompose3(MultiChannelImage:Image1,Image2,Image3::)作用:轉(zhuǎn)換三通道彩色圖像為三個單通道灰度圖像;MultiChannelImage:要進行轉(zhuǎn)換的三通道彩色圖像;Image1:轉(zhuǎn)換得到第一個通道的灰度圖像,對應(yīng)Red通道;Image2:轉(zhuǎn)換得到第二個通道的灰度圖像,對應(yīng)Green通道;Image3:轉(zhuǎn)換得到第三個通道的灰度圖像,對應(yīng)Blue通道。讀取一幅紅色的三通道彩色圖像后利用decompose3算子分解成三個單通道圖像,其中得到的紅色通道是一幅白色圖像,得到的綠色和藍色通道是黑色圖像。所以我們能夠知道紅色在R通道中比較明顯,同理綠色和藍色分別在G和B通道中比較明顯。3.1 HALCONImage圖像HALCON編程基礎(chǔ)與工程應(yīng)用3.2
HALCONRegion區(qū)域
HALCON編程基礎(chǔ)與工程應(yīng)用Region的特征可以使用特征檢測對話框查看region的特征。通過工具欄>特征檢測>彈出的對話框選擇region,可以看到Region的不同特征屬性及相對應(yīng)的數(shù)值,如圖所示。Region特征主要有以下三個部分:(1)基礎(chǔ)特征:region的面積、中心、寬高、左上角與右下角坐標(biāo)、長半軸、短半軸、橢圓方向、粗糙度、連通數(shù)、最大半徑、方向等;(2)形狀特征:外接圓半徑、內(nèi)接圓半徑、圓度、緊密度、矩形度、凸性、偏心率、外接矩形的方向等;(3)幾何矩特征:二階矩、三階矩、主慣性軸等。3.2
HALCONRegion區(qū)域
HALCON編程基礎(chǔ)與工程應(yīng)用Region的點線1.生成點線區(qū)域圖像最基本的構(gòu)成元素是像素點,在HALCON里面點可以用坐標(biāo)(Row,Column)表示,圖像窗口左上角為坐標(biāo)原點,向下為行(Row)增加,向右為列(Column)增加。首先生成一個點區(qū)域,生成點區(qū)域的算子為:gen_region_points(:Region:Rows,Columns:)3.2
HALCONRegion區(qū)域
HALCON編程基礎(chǔ)與工程應(yīng)用2.區(qū)域的方向方向是區(qū)域的基本特征,下面幾個算子與區(qū)域方向有關(guān)。(1)line_orientation(::RowBegin,ColBegin,RowEnd,ColEnd:Phi)(2)orientation_region(Regions:::Phi)(3)angle_ll(::RowA1,ColumnA1,RowA2,ColumnA2,RowB1,ColumnB1,RowB2,ColumnB2:Angle)(4)line_position(::RowBegin,ColBegin,RowEnd,ColEnd:RowCenter,ColCenter,Length,Phi)作用:計算線段的中心、長度、方向。3.2
HALCONRegion區(qū)域
HALCON編程基礎(chǔ)與工程應(yīng)用Region的行程1.區(qū)域行程的理論基礎(chǔ)行程編碼(又稱游程編碼)是相對簡單的編碼技術(shù)。行程編碼的主要思路是將一個相同值的連續(xù)串用一個代表值和串長來代替。例如,有一個字符串“aaabccddddd”,行程編碼可以用“3a1b2c5d”來表示。圖4-19是區(qū)域,表4-2是根據(jù)圖4-19的區(qū)域得到的行程編碼表。3.2
HALCONRegion區(qū)域
HALCON編程基礎(chǔ)與工程應(yīng)用3.2.4Region的區(qū)域特征1.區(qū)域的面積與中心特征1)區(qū)域的面積2)區(qū)域的中心區(qū)域的中心坐標(biāo)是計算區(qū)域內(nèi)所有像素點坐標(biāo)的平均值。中心點行坐標(biāo)等于區(qū)域內(nèi)所有像素點行坐標(biāo)相加的和除以面積,中心點列坐標(biāo)等于區(qū)域內(nèi)所有像素點列坐標(biāo)相加的和除以面積。2.區(qū)域特征距特征矩特征主要表征圖像區(qū)域的幾何特征,又稱為幾何距。由于其具有旋轉(zhuǎn)、平移、尺度等不變特征又稱為不變距。在圖像處理中不變距可以作為一個重要的特征來表示區(qū)域。3.2
HALCONRegion區(qū)域
HALCON編程基礎(chǔ)與工程應(yīng)用3.區(qū)域等效橢圓特征
二階中心距的一個重要應(yīng)用就是可以定義一個區(qū)域的方向與范圍,而區(qū)域的方向和范圍可以用等效橢圓來表示。4.區(qū)域凸性特征區(qū)域內(nèi)任意兩點進行連線,連線上的所有點都在區(qū)域內(nèi)就稱這個區(qū)域為凸集。凸包則是包含區(qū)域內(nèi)所有點構(gòu)成的最小凸集。5.區(qū)域輪廓長度特征區(qū)域輪廓長度是區(qū)域的另一個特征,區(qū)域輪廓是跟蹤區(qū)域邊界獲得一個輪廓,然后將區(qū)域邊界上的全部點連接到一起。輪廓長度是歐幾里德長度,平行于坐標(biāo)軸與垂直坐標(biāo)軸的兩個相鄰輪廓點之間的距離為1。3.3
HALCONXLD輪廓
HALCON編程基礎(chǔ)與工程應(yīng)用3.3.1XLD的初步介紹1.XLD定義圖像中Image和區(qū)域Region這些數(shù)據(jù)結(jié)構(gòu)是像素精度的,在實際工業(yè)應(yīng)用中,需要比圖像像素分辨率更高的精度,這時就需要提取亞像素精度數(shù)據(jù),亞像素精度數(shù)據(jù)可以通過亞像素閾值分割或者亞像素邊緣提取來獲得。3.3.2XLD的數(shù)據(jù)結(jié)構(gòu)分析1.XLD數(shù)據(jù)結(jié)構(gòu)介紹XLD輪廓的很多屬性存儲在XLD的數(shù)據(jù)結(jié)構(gòu)中,為了描述不同的邊緣輪廓,HALCON規(guī)定了幾種不同的XLD數(shù)據(jù)結(jié)構(gòu),對于不同的數(shù)據(jù)結(jié)構(gòu)一般是通過不同的算子獲得的。區(qū)域或多邊形轉(zhuǎn)換成亞像素輪廓的算子(1)gen_contour_region_xld(Regions:Contours:Mode:)3.3
HALCONXLD輪廓
HALCON編程基礎(chǔ)與工程應(yīng)用(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_xld(:ContCircle:Row,Column,Radius,StartPhi,EndPhi,PointOrder,Resolution:)3.XLD輪廓附加屬性圖像進行邊緣信息提取時XLD會附帶其他屬性,通過算子可以獲得這些屬性,屬性包括角度、邊緣方向等。通過query_contour_attribs_xld算子可以查詢XLD包含哪些屬性。3.3
HALCONXLD輪廓
HALCON編程基礎(chǔ)與工程應(yīng)用3.3.3XLD的特征分析1.XLD與XLD點云本節(jié)主要講解XLD的特征及其形狀轉(zhuǎn)換。XLD的很多特征同Region的特征相似。XLD的點都是浮點級,精度可以達到亞像素級別。3.3
HALCONXLD輪廓
HALCON編程基礎(chǔ)與工程應(yīng)用2.XLD其他特征在講解XLD其他特征之前,需要使用test_self_intersection_xld算子判斷XLD是否自相交。只有在XLD不自相交的時候有些特征參數(shù)才有意義。3.4
Handle句柄HALCON編程基礎(chǔ)與工程應(yīng)用句柄是一個是用來標(biāo)識對象或者項目的標(biāo)識符,可以用來描述窗體、文件等,值得注意的是句柄不能是常量。Windows之所以要設(shè)立句柄根本上源于內(nèi)存管理機制的問題,即虛擬地址。簡而言之?dāng)?shù)據(jù)的地址需要變動,變動以后就需要有人來記錄管理變動,因此系統(tǒng)用句柄來記載數(shù)據(jù)地址的變更。在程序設(shè)計中,句柄是一種特殊的智能指針,當(dāng)一個應(yīng)用程序要引用其他系統(tǒng)(如數(shù)據(jù)庫、操作系統(tǒng))所管理的內(nèi)存塊或?qū)ο髸r,就要使用句柄。句柄與普通指針的區(qū)別在于,指針包含的是引用對象的內(nèi)存地址,而句柄則是由系統(tǒng)所管理的引用標(biāo)識,該標(biāo)識可以被系統(tǒng)重新定位到一個內(nèi)存地址上。這種間接訪問對象的模式增強了系統(tǒng)對引用對象的控制。4.1圖像采集硬件4.1.1相機4.1.2鏡頭4.1.3光源4.2圖像采集算子4.2.1工業(yè)相機連接4.2.2同步采集4.2.3異步采集4.3圖像采集助手第4章 HALCON圖像采集HALCON編程基礎(chǔ)與工程應(yīng)用4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用4.1.1工業(yè)相機按照芯片類型可以分為CCD相機、CMOS相機按照傳感器的結(jié)構(gòu)特性可以分為線陣相機、面陣相機按照掃描方式可以分為隔行掃描相機、逐行掃描相機按照分辨率大小可以分為普通分辨率相機、高分辨率相機按照輸出信號方式可以分為模擬相機、數(shù)字相機按照輸出色彩可以分為單色(黑白)相機、彩色相機按照輸出信號速度可以分為普通速度相機、高速相機按照響應(yīng)頻率范圍可以分為可見光(普通)相機、紅外相機、紫外相機等工業(yè)相機的主要參數(shù)4.1圖像采集硬件
HALCON編程基礎(chǔ)與工程應(yīng)用工業(yè)相機的主要參數(shù)分辨率(Resolution)像素深度(PixelDepth)曝光方式(Exposure)和快門速度(Shutter)像元尺寸(PixelSize)光譜響應(yīng)特性(SpectralRange)工業(yè)相機噪聲信噪比(SNR)工業(yè)相機的主要輸出接口USB接口1394a/1394b接口Gige接口CameraLink接口4.1圖像采集硬件
HALCON編程基礎(chǔ)與工程應(yīng)用工業(yè)相機的選型選擇工業(yè)相機的分辨率分辨率=視野范圍/理論精度選擇工業(yè)相機的芯片CCD/CMOS選擇彩色相機還是黑白相機要處理的與圖像顏色有關(guān),采用彩色相機,否則建議黑白相機工業(yè)相機的幀率選擇相機的幀率一定要大于或等于物體運動速度選擇線陣相機還是面陣相機相機和圖像采集卡的匹配包括:視頻信號的匹配;分辨率的匹配;特殊功能的匹配;接口的匹配工業(yè)相機的CCD/CMOS靶面選擇CCD/CMOS尺寸時,要結(jié)合鏡頭的焦距、視場角一起選擇4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用典型的工業(yè)相機供應(yīng)商costar工業(yè)相機Lumenera數(shù)字工業(yè)相機Sony(日本)東芝泰力(日本)Dalsa(加拿大)BASLER(德國)UNIQ(美國)Redlake(美國)Atmel(美國)Olynpus(日本)4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用4.1.2鏡頭鏡頭的相關(guān)參數(shù)焦距(f):鏡頭到焦點之間的距離,常見的工業(yè)鏡頭焦距有:5mm、8mm、12mm、25mm、35mm、50mm、75mm等,其計算公式為:光圈系數(shù)(相對孔徑):其倒數(shù)就是光圈系數(shù),常用的光圈系數(shù)為1.4、2、2.8、4、5.6、8、11、16、22等幾個等級。對應(yīng)最大CCD尺寸:鏡頭成像直徑可覆蓋的最大CCD芯片尺寸。接口:鏡頭與相機的連接方式。常用的包括C、CS、F、V、T2等。像差(比如畸變、場曲等):畸變會影像測量結(jié)果,特別是在精密測量中,必通過軟件的方法進行標(biāo)定和補償。分辨率(Resolution):指在成像平面上1毫米間距內(nèi)能分辨開的黑白相間的線條對數(shù),單位是“線對/毫米”。不能和相機的分辨率混為一談。數(shù)值孔徑(NA):數(shù)值孔徑直接決定了鏡頭的分辨率,數(shù)值孔徑越大,分辨率越高,否則反之。其計算公式為:視場(FOV):鏡頭實際拍到的區(qū)域的范圍。其計算公式為:光學(xué)放大倍數(shù)(M):即芯片尺寸除以視場。即:工作距離(WD):即物距,鏡頭最下端機械面到被測物體的距離。4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用后背焦(FlangeDistance):即后焦距,指相機接口平面到芯片的距離。景深(DOF):表示滿足圖像清晰要求的最遠位置與最近位置的差值。4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用鏡頭的分類按鏡頭接口分類:C接口、CS接口、F接口等按焦距類型分類:定焦鏡頭和可變焦距鏡頭按焦距、視場角大小分類:標(biāo)準(zhǔn)鏡頭長、焦距鏡頭、廣角鏡頭、魚眼鏡頭、微距鏡頭按光圈分類:固定光圈式、手動光圈式、自動光圈式等按鏡頭伸縮調(diào)整方式分類:電動伸縮鏡頭、手動伸縮鏡頭等遠心鏡頭遠心鏡頭(Telecentric),主要是為糾正傳統(tǒng)工業(yè)鏡頭視差而設(shè)計,它可以在一定的物距范圍內(nèi),使得到的圖像放大倍率不會變化。4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用遠心鏡頭根據(jù)原理分為:物方遠心光路:將孔徑光闌放置在光學(xué)系統(tǒng)的像方焦平面上,物方主光線平行于光軸主光線的會聚中心位于物方無限遠。其作用為:可以消除物方由于調(diào)焦不準(zhǔn)確帶來的讀數(shù)誤差。像方遠心光路:將孔徑光闌放置在光學(xué)系統(tǒng)的物方焦平面上,像方主光線平行于光軸主光線的會聚中心位于像方無限遠。其作用為:可以消除像方調(diào)焦不準(zhǔn)引入的測量誤差。兩側(cè)遠心光路:綜合了物方/像方遠心的雙重作用,主要用于視覺測量檢測領(lǐng)域4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用遠心鏡頭技術(shù)參數(shù):高影像分辨率近乎零失真度無透視誤差遠心設(shè)計與超寬景深遠心鏡頭的選擇:
其靶面的規(guī)格大于或等于相機的靶面即可,當(dāng)檢查物體遇到以下6中情況時,最好選用遠心鏡頭:當(dāng)需要檢測有厚度的物體時(厚度>1/10FOV直徑);需要檢測不在同一平面的物體時;當(dāng)不清楚物體到鏡頭的距離究竟是多少時;當(dāng)需要檢測帶孔徑、三維的物體時;當(dāng)需要低畸變、圖像效果亮度幾乎完全一致時;當(dāng)缺陷只在同一方向平行照明下才能檢測到時。4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用工業(yè)鏡頭的選擇
工業(yè)相機鏡頭的選擇過程,是將工業(yè)相機鏡頭各項參數(shù)逐步明確化的過程。作為成像器件,工業(yè)相機鏡頭通常與光源、相機一起構(gòu)成一個完整的圖像采集系統(tǒng),因此工業(yè)相機鏡頭的選擇受到整個系統(tǒng)要求的制約。一般地可以按以下幾個方面來進行分析考慮。波長、是否變焦特殊要求優(yōu)先考慮估算工作距離和焦距像面大小和像質(zhì)光圈和接口相機接口CMountCSMountFMount可配鏡頭接口C/F+轉(zhuǎn)接器CS/C+節(jié)圈F4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用4.1.3光源衡量光源的好壞對比度亮度魯棒性光源的控制機器視覺應(yīng)用的光源控制的訣竅歸結(jié)到一點就是如何控制光源反射。影響反射效果的因素有:光源的位置物體表面的紋理物體表面的幾何形狀光源的均勻性4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用光源的種類常用的光源按發(fā)光機理分主要有:LED光源鹵素?zé)簦ü饫w光源)高頻熒光燈常用的光源按形狀分主要有:環(huán)形光源背光源條形光源同軸光源AOI專用光源球積分光源線形光源點光源組合條形光源對位光源4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用光源的照明方式直接照明:光直接射向物體,得到清楚的影像。暗場照明:暗場照明是相對于物體表面提供低角度照明。背光照明:從物體背面射過來均勻視場的光。漫射照明:應(yīng)用于物體表面的反射性或者表面有復(fù)雜的角度。4.1圖像采集硬件HALCON編程基礎(chǔ)與工程應(yīng)用同軸照明:通過垂直墻壁出來的發(fā)散光,射到一個使光向下的分光鏡上,相機從上面通過分光鏡看物體。光源的選型了解項目需求,明確要檢測或者測量的目標(biāo);分析目標(biāo)與背景的區(qū)別,找出兩者之間的光學(xué)現(xiàn)象;根據(jù)光源與目標(biāo)之間的配合關(guān)系以及物體的材質(zhì),初步確定光源的發(fā)光類型和光源顏色;拿實際光源測試,以確定滿足要求的照明方式。4.2圖像采集算子HALCON編程基礎(chǔ)與工程應(yīng)用4.2.1工業(yè)相機連接工業(yè)相機連接
首先下載相應(yīng)的相機驅(qū)動,如果可以看到硬件識別出來,證明相機和電腦連接成功。然后打開HALCON采集助手,點擊“自動檢測接口”,就會顯示與電腦相連的相應(yīng)的相機接口。主要算子open_framegrabber:連接相機并設(shè)置相關(guān)參數(shù)set_framegrabber_param:設(shè)置相機額外參數(shù)close_framegrabber:關(guān)閉圖像采集設(shè)備4.2圖像采集算子HALCON編程基礎(chǔ)與工程應(yīng)用同步采集
同步采集是采集到圖片之后才返回繼續(xù)執(zhí)行,簡單來說就是上一張圖像處理結(jié)束以后才會再次采集圖像,采集圖像的速率受處理速度影響。主要算子grab_image:讀取同步采集的圖像異步采集異步采集是一幅圖像采集完成后相機馬上采集下一幅圖像,即在上一副圖像還在處理的時候就開始下一張圖像的采集。主要算子grab_image_start:異步采集開始grab_image_async:讀取異步采集的圖像4.3圖像采集助手HALCON編程基礎(chǔ)與工程應(yīng)用使用采集助手步驟打開采集助手:點擊“菜單欄”中的“助手”,選中“打開新的ImageAcquisition”。4.3圖像采集助手HALCON編程基礎(chǔ)與工程應(yīng)用檢測接口:點擊“自動檢測接口”,右邊下拉欄就會顯示與電腦相連的相機接口。4.3圖像采集助手HALCON編程基礎(chǔ)與工程應(yīng)用采集助手之“連接”設(shè)置:接口庫:指當(dāng)前連接中使用的HALCON圖像采集的接口庫設(shè)備(D):指板卡、相機或邏輯設(shè)備的ID號端口(P):輸入端口的ID相機類型:指相機配置或者信號類型觸發(fā)(r):選中之后可外觸發(fā)控制采集分辨率:即圖像的寬高顏色空間:可以選擇獲得RGB圖或者灰度圖(gray)場(F):隔行掃描相機圖像選擇位深度(B):圖像單個通道的位數(shù)一般:對于每個設(shè)備都不同,可以使用HDevelop語法中的任意類型或Tuple來表示。
點擊“連接”按鈕可以連接圖像采集接口,再點擊“斷開”可以關(guān)閉圖像采集接口;點擊“采集”可以獲取單張圖像;點擊“實時”可以實時采集圖像,再點擊“停止”可以停止實時采集;點擊“檢測”可以嘗試對當(dāng)前采集接口檢測參數(shù)有效性;點擊“所有重置”可以將界面內(nèi)的所有參數(shù)重置為初始值。4.3圖像采集助手HALCON編程基礎(chǔ)與工程應(yīng)用采集助手之“參數(shù)”設(shè)置:grab_timeout:設(shè)置采集超時終止的時間;brightness:設(shè)置亮度值(-64到64)contrast:設(shè)置對比度值(0到95)hue:設(shè)置色調(diào)值(-2000到2000)saturation:設(shè)置飽和度(0到100)sharpness:設(shè)置銳度值(1到7)gama:設(shè)置gama值(100到300)white_balance:設(shè)置白平衡值(2800到6500)backlight_compensation:是否打開背光補償能力frame_rate:設(shè)置所需的幀速率(以幀每秒為單位)external_trigger:是否有外部觸發(fā)disconnect_graph:是否延遲顯示4.3圖像采集助手HALCON編程基礎(chǔ)與工程應(yīng)用采集助手之“檢測”設(shè)置:“顯示圖像”一般情況下都設(shè)置為正常,除非你要測量速度,則設(shè)置為快速;“圖像顯示窗口”設(shè)置為激活,這樣采集到的圖像將顯示在選中的窗口中。4.3圖像采集助手HALCON編程基礎(chǔ)與工程應(yīng)用采集助手之“代碼生成”設(shè)置:控制流(F):插入代碼的通用結(jié)構(gòu),有“僅初始化”、“采集單幅圖像”、“在循環(huán)中采集圖像”三種選擇,對應(yīng)的代碼都不一樣。采集模式(M):有“異步采集”和“同步采集”兩種模式。連接句柄(H):存儲采集連接句柄的變量。圖像對象(O):圖像采集變量。循環(huán)計數(shù)(L):采集循環(huán)中使用的變量。圖像文件(I):文件名tuple數(shù)組的存儲變量。
選中“自動斷開連接”,在代碼插入時自動關(guān)閉連接并釋放設(shè)備,以產(chǎn)生代碼;點擊“代碼預(yù)覽”的下拉鍵,可以預(yù)覽代碼。最后點擊“插入代碼”,就會在程序窗口顯示相應(yīng)的代碼。總結(jié)HALCON編程基礎(chǔ)與工程應(yīng)用本章從相機、鏡頭和光源三個方面闡述了機器視覺的硬件選型,簡單介紹了相機的同步、異步采集,并說明了采集助手的設(shè)置及其用法。硬件的選型必須根據(jù)實際情況來決定,不同的環(huán)境下,相機和鏡頭的搭配、光源的選擇和打光的方式肯定不同。要想做好一個項目,圖像采集是關(guān)鍵,采集到的圖像質(zhì)量不行,后面的處理都是空談。熟悉采集助手,圖像的采集會事半功倍。灰度變換直方圖處理幾何變換圖像的平滑圖像的銳化圖像的彩色增強第5章HALCON圖像預(yù)處理HALCON編程基礎(chǔ)與工程應(yīng)用
圖像預(yù)處理的主要目的是消除圖像中無關(guān)的信息,恢復(fù)有用的真實信息,增強有關(guān)信息的可檢測性和最大限度地簡化數(shù)據(jù),從而改進特征提取、圖像分割、匹配和識別的可靠性。第5章HALCON圖像預(yù)處理HALCON編程基礎(chǔ)與工程應(yīng)用5.1 灰度變換
由于成像系統(tǒng)限制或噪聲等影響,獲取的圖像往往因為對比度不足、動態(tài)范圍小等原因存在視覺效果不好的缺點?;叶茸儞Q是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐像素點改變原圖像中灰度值的方法?;叶茸儞Q常用的方法有3種:線性灰度變換、分段線性灰度變換和非線性灰度變換。HALCON編程基礎(chǔ)與工程應(yīng)用1、線性灰度變換HALCON編程基礎(chǔ)與工程應(yīng)用為了突出圖像中感興趣的目標(biāo)或灰度區(qū)間,相對抑制那些不感興趣的灰度區(qū)間,可采用分段線性變換,它將圖像灰度區(qū)間分成兩段乃至多段分別作線性變換。2、分段線性灰度變換HALCON編程基礎(chǔ)與工程應(yīng)用
單純的線性灰度變換可以在一定程度上解決視覺上的圖像整體對比度問題,但是對圖像細節(jié)部分的增強較為有限,結(jié)合非線性變換技術(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版現(xiàn)代化辦公室租賃場地合同樣本3篇
- 二零二五版精制粉原料供應(yīng)鏈風(fēng)險管理合同3篇
- 二零二五版地震監(jiān)測基站場地租賃與應(yīng)急救援合同3篇
- 2025年度醫(yī)療健康產(chǎn)業(yè)園區(qū)承包經(jīng)營合同范本3篇
- 二零二五版溫泉度假酒店SPA服務(wù)人員勞動合同3篇
- 二零二五年度離婚經(jīng)濟補償協(xié)議范本及調(diào)解服務(wù)合同3篇
- 二零二五年度能源項目合作開發(fā)PPP模式合同范本3篇
- 物業(yè)管理公司2025年度招投標(biāo)代理合同3篇
- 二零二五年度車位租賃合同:住宅小區(qū)車位使用權(quán)協(xié)議2篇
- 2025廠房買賣合同模板:高端裝備制造廠房交易3篇
- 扣款通知單 采購部
- 湖北教育出版社三年級下冊信息技術(shù)教案
- 鐵路工程主要建材碳排放因子、常用施工機械臺班能源用量、類運輸方式、能源碳排放因子、不同植栽方式綠化固碳量
- 設(shè)計基礎(chǔ)全套教學(xué)課件
- 藥品養(yǎng)護記錄表
- IATF16949包裝方案評審表
- 食堂服務(wù)外包投標(biāo)方案(技術(shù)標(biāo))
- 綠建評分報告模板
- 1 運行方案說明
- 大骨節(jié)病專業(yè)知識講座課件
- PHILIPS HeartStart XL+操作培訓(xùn)課件
評論
0/150
提交評論