halcon学习笔记——机器视觉工程应用的开发思路
機器視覺工程應(yīng)用主要可劃分為硬件和軟件兩大部分。
硬件:工程應(yīng)用的第一步就是硬件選型。硬件選型很關(guān)鍵,因為它是你后面工作的基礎(chǔ)。主要是光源、工業(yè)相機和鏡頭選擇。
軟件:目前業(yè)內(nèi)商業(yè)庫主要有Halcon,康耐視,DALSA,evision,NI等,開源庫有OpenCV.其中NI的labview+vision模塊。
機器視覺工程應(yīng)用的基本開發(fā)思路是:
一、圖像采集,二、圖像分割,三、形態(tài)學處理,四、特征提取,五、輸出結(jié)果。
下面在Halcon下對這四個步驟進行講解。
一、圖像采集:
Halcon通過imageacquisition interfaces對各種圖像采集卡及各種工業(yè)相機進行支持。其中包括:模擬視頻信號,數(shù)字視頻信號Camera Link,數(shù)字視頻信號IEEE 1394,數(shù)字視頻信號USB2.0,數(shù)字視頻信號Gigabit Ethernet等。 
Halcon通過統(tǒng)一的接口封裝上述不同相機的image acquisition interfaces,從而達到算子統(tǒng)一化。不同的相機只需更改幾個參數(shù)就可變更使用。
Halcon圖像獲取的思路:1、打開設(shè)備,獲得該設(shè)備的句柄。2、調(diào)用采集算子,獲取圖像。
1、打開設(shè)備,獲得該設(shè)備的句柄。
? open_framegrabber('DahengCAM', 1, 1, 0, 0, 0, 0, 'interlaced', 8, 'gray', -1, 'false','HV-13xx', '1', 1, -1, AcqHandle) //連接相機,并設(shè)置相關(guān)參數(shù)|   Parameter  |   Values  |   Default  |   Type  |   Description  | 
|   Name  |   'DahengCAM'  | ? |   string  |   Name of the HALCON interface.  | 
|   HorizontalResolution  |   1  |   1  | ? |   1表示水平全部,2為水平1/2,表示圖像截取。  | 
|   VerticalResolution  | 1 | 1 | ? |   同上,表示垂直方向。  | 
| ImageWidth |   <width>  |   0  |   integer  |   所需的圖像部分的寬度('0 '代表了完整的圖像)。  | 
| ImageHeight | <height> | 0 | integer | 所需的圖像部分的高度(0”是完整的圖像) | 
| StartRow | <width> | 0 | integer | 所需的圖像部分左上方的像素行坐標 | 
| StartColumn | <column> | 0 | integer | 所需的圖像部分左上方的像素列坐標 | 
| Field | ? | ? | ? | 忽視 | 
| BitsPerChannel | ? | ? | ? | 忽視 | 
| ColorSpace | 'default', 'gray', 'rgb' | 'gray' | string | HALCON圖像的通道模式 | 
| Generic | ? | ? | ? | 忽視 | 
| ExternalTrigger |   'false', 'true'  | 'false' | string | 外部觸發(fā)狀態(tài) | 
| CameraType | 'HV-13xx', 'HV-20xx', 'HV-30xx', 'HV-31xx','HV-50xx', 'SV-xxxx' | 'HV-13xx' | string | 所連接的攝像機系列型。 | 
| Device | '1', '2', '3', ... | '1' | string | 相機連接第一個設(shè)備號“1”,第二個設(shè)備編號“2”。 | 
| Port | ? | ? | ? | 忽視 | 
| LineIn | ? | ? | ? | 忽視 | 
2、調(diào)用采集算子,獲取圖像。
grab_image (Image, AcqHandle) //(同步采集)完后處理圖像,然后再采集圖像。采集圖像的速率受處理速度影響。 grab_image_async (Image, AcqHandle,MaxDelay) //(異步采集),一幅畫面采集完后相機馬上采集下一幅畫面,不受處理速度影響。其中第三個參數(shù)為:MaxDelay,表示異步采集時可以允許的最大延時,本次采集命令距上次采集命令的時間不能超出MaxDelay,超出即重新采集。圖像采集其他相關(guān)算子:
???? grab_image_start,該算子開始命令相機進行異步采集。只能與grab_image_async(異步采集)一起使用。
例子:
* Select a suitable image acquisition interface nameAcqName open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,\ 'default','default','default',-1,-1,AcqHandle) grab_image(Image1,AcqHandle)//進行同步采集 * Start next grab grab_image_start(AcqHandle,-1.0)//命令相機進行異步圖像采集開始 * Process Image1 ... * Finish asynchronous grab + start next grab grab_image_async(Image2,AcqHandle,-1.0)//讀取異步采集的圖像 * Process Image2 ... close_framegrabber(AcqHandle)3、相機參數(shù)讀寫
讀取相機參數(shù):
info_framegrabber( : : Name, Query : Information, ValueList)
寫相機參數(shù):
set_framegrabber_param( : : AcqHandle, Param, Value : )
?
二、圖像分割:
圖像分割的定義: 
所謂圖像分割是指將圖像中具有特殊含義的不同區(qū)域分割開來,這些區(qū)域是互相不交叉的,每個區(qū)域都滿足特定區(qū)域的一致性。
1、基于閾值的圖像分割
threshold —采用全局閾值分割圖像。
格式:??? threshold(Image : Region : MinGray, MaxGray : )
自動全局閾值分割的方法:
(1)計算灰度直方圖 
(2)尋找出現(xiàn)頻率最多的灰度值(最大值) 
(3)在threshold中使用與最大值有一定距離的值作為閾值
代碼:
gray_histo(Regions, Image,AbsoluteHisto, RelativeHisto) //計算出圖像區(qū)域內(nèi)的絕對和相對灰度值直方圖。 PeakGray := sort_index(AbsoluteHisto)[255] //求出出現(xiàn)頻率最多的灰度值 threshold(Image,Region,0,PeakGray-25)bin_threshold — 使用一個自動確定的閾值分割圖像。
格式:??? bin_threshold(Image : Region : : )
?
dyn_threshold —使用一個局部閾值分割圖像。
格式:??? dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
例子:
mean_image(Image,Mean,21,21) dyn_threshold(Image,Mean, RegionDynThresh,15,'dark')var_threshold —閾值圖像局部均值和標準差的分析。
格式:??? var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )?
?
2、基于邊緣的圖像分割:尋找區(qū)域之間的邊界
watersheds —從圖像中提取分水嶺和盆地。
格式:??? watersheds(Image : Basins, Watersheds : : )
watersheds_threshold —使用閾值從圖像中提取分水嶺和盆地。
格式:??? watersheds_threshold(Image : Basins : Threshold : )
?
3、基于區(qū)域的圖像分割:直接創(chuàng)建區(qū)域
?
三、形態(tài)學處理
形態(tài)學處理以集合運算為基礎(chǔ)。
腐蝕、膨脹、開操作、閉操作是所有形態(tài)學圖像處理的基礎(chǔ)。
開操作(先腐蝕再膨脹)使對象的輪廓變得光滑,斷開狹窄的間斷和消除細的突出物。
閉操作(先膨脹再腐蝕)消彌狹窄的間斷和長細的鴻溝,消除小的孔洞,填補輪廓線的斷裂。
形體學基礎(chǔ)算子:
erosion1 
dilation1 
opening 
closing
常用的形態(tài)學相關(guān)算子 
connection 
select_shape 
opening_circle 
closing_circle 
opening_rectangle1 
closing_rectangle1 
complement 
difference 
intersection 
union1 
shaps_trans 
fill_up
形態(tài)學高級算子: 
boundary 
skeleton
?
四、特征提取:
1、區(qū)域特征:
area 
moments
smallest_rectangle1
smallest_circle
convexity:區(qū)域面積與凸包面積的比例
contlength:區(qū)域邊界的長度
compactness
2、灰度特征
estimate_noise
select_gray
?
五、輸出結(jié)果:
(1)獲取滿足條件的區(qū)域
(2)區(qū)域分類,比如OCR
(3)測量
(4)質(zhì)量檢測
轉(zhuǎn)載于:https://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的halcon学习笔记——机器视觉工程应用的开发思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 黑马程序员_java总结_网络编程基础
 - 下一篇: SQL 关键字