1. 程式人生 > >halcon學習筆記——機器視覺工程應用

halcon學習筆記——機器視覺工程應用

機器視覺工程應用主要可劃分為硬體和軟體兩大部分。

硬體:工程應用的第一步就是硬體選型。硬體選型很關鍵,因為它是你後面工作的基礎。主要是光源、工業相機和鏡頭選擇。

軟體:目前業內商業庫主要有Halcon,康耐視,DALSA,evision,NI等,開源庫有OpenCV.其中NI的labview+vision模組。

機器視覺工程應用的基本開發思路是:

一、影象採集,二、影象分割,三、形態學處理,四、特徵提取,五、輸出結果。

下面在Halcon下對這四個步驟進行講解。

一、影象採集:

Halcon通過imageacquisition interfaces對各種影象採集卡及各種工業相機進行支援。其中包括:模擬視訊訊號,數字視訊訊號Camera Link,數字視訊訊號IEEE 1394,數字視訊訊號USB2.0,數字視訊訊號Gigabit Ethernet等。 
Halcon通過統一的介面封裝上述不同相機的image acquisition interfaces,從而達到運算元統一化。不同的相機只需更改幾個引數就可變更使用。

Halcon影象獲取的思路:1、開啟裝置,獲得該裝置的控制代碼。2、呼叫採集運算元,獲取影象。

1、開啟裝置,獲得該裝置的控制代碼。

open_framegrabber('DahengCAM', 1, 1, 0, 0, 0, 0, 'interlaced', 8, 'gray', -1, 'false','HV-13xx', '1', 1, -1, AcqHandle) //連線相機,並設定相關引數

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 外部觸發狀態
CameraType 'HV-13xx', 'HV-20xx', 'HV-30xx', 'HV-31xx','HV-50xx', 'SV-xxxx' 'HV-13xx' string 所連線的攝像機系列型。
Device '1', '2', '3', ... '1' string 相機連線第一個裝置號“1”,第二個裝置編號“2”。
Port 忽視
LineIn 忽視

2、呼叫採集運算元,獲取影象。

grab_image (Image, AcqHandle) //(同步採集)完後處理影象,然後再採集影象。採集影象的速率受處理速度影響。
grab_image_async (Image, AcqHandle,MaxDelay) //(非同步採集),一幅畫面採集完後相機馬上採集下一幅畫面,不受處理速度影響。其中第三個引數為:MaxDelay,表示非同步採集時可以允許的最大延時,本次採集命令距上次採集命令的時間不能超出MaxDelay,超出即重新採集。

影象採集其他相關運算元:

     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、相機引數讀寫

讀取相機引數:

info_framegrabber( : : NameQuery : InformationValueList)

寫相機引數:

set_framegrabber_param( : : AcqHandleParamValue : )

二、影象分割:

影象分割的定義: 
所謂影象分割是指將影象中具有特殊含義的不同區域分割開來,這些區域是互相不交叉的,每個區域都滿足特定區域的一致性。

1、基於閾值的影象分割

threshold —採用全域性閾值分割影象。

格式:    threshold(Image : Region : MinGray, MaxGray : )

自動全域性閾值分割的方法:

(1)計算灰度直方圖 
(2)尋找出現頻率最多的灰度值(最大值) 
(3)在threshold中使用與最大值有一定距離的值作為閾值

程式碼:

gray_histo(Regions, Image,AbsoluteHisto, RelativeHisto) //計算出影象區域內的絕對和相對灰度值直方圖。
PeakGray := sort_index(AbsoluteHisto)[255] //求出出現頻率最多的灰度值
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、基於邊緣的影象分割:尋找區域之間的邊界

watersheds —從影象中提取分水嶺和盆地。

格式:    watersheds(Image : Basins, Watersheds : : )

watersheds_threshold —使用閾值從影象中提取分水嶺和盆地。

格式:    watersheds_threshold(Image : Basins : Threshold : )

3、基於區域的影象分割:直接建立區域

三、形態學處理

形態學處理以集合運算為基礎。

腐蝕、膨脹、開操作、閉操作是所有形態學影象處理的基礎。

開操作(先腐蝕再膨脹)使物件的輪廓變得光滑,斷開狹窄的間斷和消除細的突出物。

閉操作(先膨脹再腐蝕)消彌狹窄的間斷和長細的鴻溝,消除小的孔洞,填補輪廓線的斷裂。

形體學基礎運算元:

erosion1 
dilation1 
opening 
closing

常用的形態學相關運算元 
connection 
select_shape 
opening_circle 
closing_circle 
opening_rectangle1 
closing_rectangle1 
complement 
difference 
intersection 
union1 
shaps_trans 
fill_up

形態學高階運算元: 
boundary 
skeleton

四、特徵提取:

1、區域特徵:

area 
moments

smallest_rectangle1

smallest_circle

convexity:區域面積與凸包面積的比例

contlength:區域邊界的長度

compactness

2、灰度特徵

estimate_noise

select_gray

五、輸出結果:

(1)獲取滿足條件的區域

(2)區域分類,比如OCR

(3)測量

(4)質量檢測

原文連結:https://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html

作者:韓兆新