天天看點

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、打開裝置,獲得該裝置的句柄。

Parameter

Values

Default

Type

Description

Name

'DahengCAM'

string

Name of the HALCON interface.

HorizontalResolution

1

1表示水準全部,2為水準1/2,表示圖像截取。

VerticalResolution

同上,表示垂直方向。

ImageWidth

<width>

integer

所需的圖像部分的寬度('0 '代表了完整的圖像)。

ImageHeight

<height>

所需的圖像部分的高度(0”是完整的圖像)

StartRow

所需的圖像部分左上方的像素行坐标

StartColumn

<column>

所需的圖像部分左上方的像素列坐标

Field

忽視

BitsPerChannel

ColorSpace

'default', 'gray', 'rgb'

'gray'

HALCON圖像的通道模式

Generic

ExternalTrigger

'false', 'true'

'false'

外部觸發狀态

CameraType

'HV-13xx', 'HV-20xx', 'HV-30xx', 'HV-31xx','HV-50xx', 'SV-xxxx'

'HV-13xx'

所連接配接的錄影機系列型。

Device

'1', '2', '3', ...

'1'

相機連接配接第一個裝置号“1”,第二個裝置編号“2”。

Port

LineIn

2、調用采集算子,擷取圖像。

圖像采集其他相關算子:

     grab_image_start,該算子開始指令相機進行異步采集。隻能與grab_image_async(異步采集)一起使用。

例子:

3、相機參數讀寫

讀取相機參數:

info_framegrabber( : : Name, Query : Information, ValueList)

寫相機參數:

set_framegrabber_param( : : AcqHandle, Param, Value : )

二、圖像分割:

圖像分割的定義: 

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

1、基于門檻值的圖像分割

threshold —采用全局門檻值分割圖像。

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

自動全局門檻值分割的方法:

(1)計算灰階直方圖 

(2)尋找出現頻率最多的灰階值(最大值) 

(3)在threshold中使用與最大值有一定距離的值作為門檻值

代碼:

bin_threshold — 使用一個自動确定的門檻值分割圖像。

格式:    bin_threshold(Image : Region : : )

dyn_threshold —使用一個局部門檻值分割圖像。

格式:    dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )

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)品質檢測

本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/sky-heaven/p/6004487.html,如需轉載請自行聯系原作者

繼續閱讀