機器視覺工程應用主要可劃分為硬體和軟體兩大部分。
硬體:工程應用的第一步就是硬體選型。硬體選型很關鍵,因為它是你後面工作的基礎。主要是光源、工業相機和鏡頭選擇。
軟體:目前業內商業庫主要有halcon,康耐視,dalsa,evision,ni等,開源庫有opencv.其中ni的labview+vision模組。
機器視覺工程應用的基本開發思路是:
一、影象採集,二、影象分割,三、形態學處理,四、特徵提取,五、輸出結果。下面在halcon下對這四個步驟進行講解。
一、影象採集:
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 inte***ce.
horizontalresolution 1
11表示水平全部,2為水平1/2,表示影象擷取。
verticalresolution 1
1同上,表示垂直方向。
imagewidth 0
integer
所需的影象部分的寬度('0 '代表了完整的影象)。
imageheight
0integer
所需的影象部分的高度(0」是完整的影象)
startrow
0integer
所需的影象部分左上方的畫素行座標
startcolumn
0integer
所需的影象部分左上方的畫素列座標
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-***x'
'hv-13xx'
string
所連線的攝像機系列型。
device
'1', '2', '3', ...
'1'string
相機連線第乙個裝置號「1」,第二個裝置編號「2」。
port
忽視linein忽視
2、呼叫採集運算元,獲取影象。
grab_image_async (image, acqhandle,maxdelay) //(非同步採集),一幅畫面採集完後相機馬上採集下一幅畫面,不受處理速度影響。其中第三個引數為:maxdelay,表示非同步採集時可以允許的最大延時,本次採集命令距上次採集命令的時間不能超出maxdelay,超出即重新採集。
影象採集其他相關運算元:
grab_image_start,該運算元開始命令相機進行非同步採集。只能與grab_image_async(非同步採集)一起使用。
例子:
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( : : name, query : information, valuelist)
寫相機引數:
set_framegrabber_param( : : acqhandle, param, value : )
二、影象分割:
影象分割的定義:
所謂影象分割是指將影象中具有特殊含義的不同區域分割開來,這些區域是互相不交叉的,每個區域都滿足特定區域的一致性。
1、基於閾值的影象分割
threshold —採用全域性閾值分割影象。
格式: threshold(image : region : mingray, maxgray : )
自動全域性閾值分割的方法:
(1)計算灰度直方圖
(2)尋找出現頻率最多的灰度值(最大值)
(3)在threshold中使用與最大值有一定距離的值作為閾值
**:
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 : )
例子:
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)質量檢測
機器視覺 halcon學習筆記5
灰度變換 add image運算元,1入口引數是影象變數,2入口引數是影象變數,3入口引數是相加之後的影象 4入口引數是引數1和引數2對應點灰度相加後乘的乙個引數,引數5是偏移量 總結來說就是引數1和引數2對應點灰度值相加後乘上引數4再加上引數5就等於引數3對應點的灰度值 我猜聰明的你肯定可以看懂的...
機器視覺 halcon學習筆記2
畫圓的運算元 有個問題就是這個運算元的輸入函式裡面第乙個引數是乙個視窗變數,所以在使用畫圓這個運算元的時候需要在之前建立乙個視窗,然後將視窗變數作為畫圓運算元的輸入引數 生成圓的運算元 在畫圓運算元結束之後不會直接生成乙個圓形區域,得配合生成運算元來進行區域的生成。在生成函式中四個引數 第乙個 ci...
HALCON機器視覺軟體怎麼學習?
halcon是德國mvtec公司開發的一套完善的標準的機器視覺演算法包,擁有應用廣泛的機器視覺整合開發環境。它節約了產品成本,縮短了軟體開發周期 halcon靈活的架構便於機器視覺,醫學影象和影象分析應用的快速開發。在歐洲以及日本的工業界已經是公認具有最佳效能的machine vision軟體。ha...