線掃相機的原理:線掃相機通常一次只拍攝一條線(線寬一般是1個像素),在機構運動的過程當中,線掃相機不斷地拍攝線,因而「聚線成面」,這就是線掃相機成像的原理。算法
線掃相機的原理決定了,它所拍攝的物體必需要運動。機構運動的話,就存在機構的速度是否和線掃相機採集的速度匹配的問題。字體
將對機構運動速度的要求進行拆分的話,其實就是以下兩點:spa
① 運動速度必須與線掃相機的工做行頻(即採集速度)相匹配。code
② 機構的運動速度最好是勻速,或者十分接近勻速。regexp
若是機構速度過快,最後的圖像在運動方向上被壓縮;若是機構速度過慢,最後的圖像在運動方向上被拉伸。blog
判斷機構速度是偏快仍是偏慢,並不困難,困難的是定量分析,要有數據做爲判斷的標準。圖片
方案步驟說明:ci
① 先使用標定板標定,得出與相機行頻匹配的機構運行速度,並調節至此速度。io
② 將標定板放置在運動的機構上,採集標定板的圖像,需注意的是,標定板須要大體擺正。class
③ 將採集到的標定板圖像作初步處理,例如裁掉多餘的部分以便於後續處理。(這一步不是必須的)
④ 經過算法獲得標定板中全部圓的最小外接平行矩形的高,計算這張圖中全部圓對應的「高」的標準差。
⑤ 爲了減小偏差,能夠對多張標定板圖像執行以上算法,觀察獲得的全部標準差數據。標準差越小,說明機構運動速度越穩定。
Halcon程序以下:
1 *載入當前目錄下的所有圖片 2 list_files ('', ['files','follow_links'], ImageFiles) 3 tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) 4 5 for Index :=0 to |ImageFiles| - 1 by 1 6 dev_clear_window () 7 read_image (Image, ImageFiles[Index]) 8 threshold (Image, Region, 0, 210) 9 fill_up_shape (Region, Region, 'area', 1, 100) 10 opening_circle (Region, RegionOpening, 5.5) 11 connection (RegionOpening, ConnectedRegions) 12 select_shape (ConnectedRegions, SelectedRegions, 'roundness', 'and', 0.9, 1) 13 select_shape (SelectedRegions, SelectedRegions1, 'area', 'and', 10550, 19999) 14 smallest_rectangle1 (SelectedRegions1, Row1, Column1, Row2, Column2) 15 gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) 16 inner_circle (SelectedRegions1, Row, Column, Radius) 17 18 dev_display (Image) 19 dev_set_draw ('margin') 20 dev_display (Rectangle) 21 22 hight := [] 23 for Index := 0 to |Row1| -1 by 1 24 *設置字體和字號 25 set_font (3600, '-Courier New-10-') 26 *顯示每一個圓的最小外接矩形的高和寬 27 disp_message (3600,((Row2[Index] - Row1[Index]) + ' '+ (Column2[Index] - Column1[Index])) , 'image', Row1[Index] - 70, Column1[Index], 'black', 'true') 28 tuple_concat (hight, Row2[Index] - Row1[Index], hight) 29 endfor 30 31 if (|hight| > 1) 32 *求元組中全部元素的標準差 33 tuple_deviation (hight, Deviation) 34 set_font (3600, '-Courier New-20-') 35 disp_message (3600, '縱向高度標準差:' + Deviation + ' ' + |hight| + '個圓' , 'image', 50, 50, 'black', 'true') 36 endif 37 stop() 38 endfor
處理結果:
因爲沒有對比,所以標準差 = 1.54634暫不能知道機構的速度穩定性是高仍是低,可是若是有兩臺相似的機構,要評判它們的速度穩定性的好壞, 那麼這種方法能夠輕鬆作出正確判斷。