線掃相機項目中定量判斷機構運動是否勻速的方法

 

線掃相機的原理:線掃相機通常一次只拍攝一條線(線寬一般是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暫不能知道機構的速度穩定性是高仍是低,可是若是有兩臺相似的機構,要評判它們的速度穩定性的好壞, 那麼這種方法能夠輕鬆作出正確判斷。

相關文章
相關標籤/搜索