畢業後工作沒有沒有從事本專業業務,誤打誤撞進入了機器視覺行業,無奈對機器視覺的東西知知甚少,急需惡補一下專業知識啊,今天看了一篇博文,感覺寫的很好,特轉載過來,以供自己隨時查看。介紹的很到位,系統,幫助很大,多向網上的達人學習,要學的東西還很多,要走的路還很長,一步一步走吧。
2016年08月22日19:00
——————————————分割線————————————————————————————————————————
機器視覺工程應用主要可劃分爲硬件和軟件兩大部分。
硬件:工程應用的第一步就是硬件選型。硬件選型很關鍵,因爲它是你後面工作的基礎。主要是光源、工業相機和鏡頭選擇。
軟件:目前業內商業庫主要有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( : : Name, Query : Information, ValueList)
寫相機參數:
set_framegrabber_param( : : AcqHandle, Param, Value : )
二、圖像分割:
圖像分割的定義:
所謂圖像分割是指將圖像中具有特殊含義的不同區域分割開來,這些區域是互相不交叉的,每個區域都滿足特定區域的一致性。
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)質量檢測
本文出處:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html