一:線掃激光算法原理
激光器發出的激光束經準直聚焦后垂直入射到物體表面上,表面的散射光由接收透鏡成像于探測器的陣列上。光敏面于接收透鏡的光軸垂直。如圖:
當被測物體表面移動x,反應到光敏面上像點位移為x’。a為接收透鏡到物體的距離(物距),b為接收后主面到成像面中心的距離(一般取焦距f),θ為激光束光軸與接收透鏡之間的夾角。D為激光光束軸到透鏡中心的距離。接收透鏡的焦距為f,其余的參數如下圖:
在△ABC中,由正弦定理的:
將上式整理得:
在直角三角形△CDE(∠CDE=90°)中,
?? 將其帶入到上式,得:(遠離透鏡)。
上式為遠離透鏡的公式,靠近基準面的公式剛好相反:(靠近透鏡)。
二:參數計算和選取
通過上面的算法推導,我們可以看出在整個公式中,我們需要得到的參數有兩個,a(接收透鏡到物體的距離(物距))和θ(激光束光軸與接收透鏡之間的夾角)。
2.1參數的計算
(1)參數計算的原理
因為公式中有兩個未知的參數a和θ,那么想要求得這兩個未知參數,我們可以通過得到兩組已知的(x,x’)來列出兩個二元一次方程組來求解。
假設兩組已知的參數為(X1,X1’)(X2,X2’),通過推導過程的公式如下(以靠近透鏡為例):
通過計算得出:
將求出的θ帶去上式可以得出a.
(2)參數計算結果
在計算參數的樣本選取中,為了盡可能的提高精度,我們在靠近基準面的樣本中選取的計算組合分別為(1mm,2mm),(1mm,3mm),(1mm,4mm),(1mm,5mm),(1mm,6mm),(1mm,7mm),(1mm,8mm),(1mm,9mm),(1mm,10mm),總共9組數據。那么我們在一次采樣中可以得出9 組數據。
2.2參數的選取
在整個的實驗過程中,后期計算參數a和θ時,我們總共采樣了五次數據,每次數據得到的9組參數,通過45組數據來計算整個樣本的位移。觀察誤差值得大小,我們總共選取了三組參數,綜合比對發現當比值a/(f*sinθ)為31.5~31.7且a>200時,計算出的誤差偏小且在測量的范圍內保持一定趨勢。(這為我們后面的非線性擬合的誤差補償提供了基礎)
三:相機的標定
3.1單目相機標定的目的
獲取攝像機的內外參數矩陣,同時也會獲得每一幅標定圖像的選擇和平移矩陣,內參數矩陣和畸變向量可以對之后相機拍攝的圖像進行矯正,得到畸變相對很小的圖像。
3.2相機標定的輸入和輸出
相機標定的輸入為22*22單位長度為1mm/格的棋盤格圖像。總共12張。
相機標定的輸出為:內參數矩陣(fx,fy,Cx, Cy)和畸變向量(k1,k2,p1,p2,p3)
ps(注意,這里有兩個不同的焦距fx,fy。因為單個像素點在低價成像儀上是矩形而不是正方形。實際上焦距fx=f*Sx. f為實際的物理焦距長度,Sx為x方向的像元尺寸。同理fy=f*Sy)
3.3用到的工具
硬件:巴士勒相機,攝像頭(f=25mm)、棋盤格標定板
軟件:VS+OPENCV
3.4標定的結果
四:樣本采集
樣本采集我們有兩種方式,第一種方式為用標準塊來采集。第二種方式是通過千分尺來采集。我們采用第二種方式進行采集樣本。采集的過程為以整個圖像的中心為起點(作為基準面),每隔0.1mm取一次圖像,取到圖像的邊界。通過上述取樣本,我們得出位移的取值范圍為-30.0mm到+30.0mm。
五:計算結果
通過上述的參數計算,相機標定以及樣本采集之后,我們開始計算結果,在選曲的三組參數,來計算結果得到的誤差,在附件1中。
六:誤差補償
在得出誤差之后,我們發現誤差的變化是具有趨勢的。隨著位移的增大誤差是逐漸增大的。從計算結果偏小逐步到計算結果偏大。在這里我們取得誤差補償算法為基于最小二乘法的非線性擬合。擬合的方程如下:
Y=a0+a1x+a2x^2+a3x^3
方程中x代表的是像素位移,Y代表的是誤差。通過擬合之后的誤差方程和整個算法進行融合及擬合后的求取誤差為
位移=原算法-誤差方程
最后通過誤差補償的結果得到的誤差,在附件2中。
七:實驗中遇到的問題
(1)算法上的改進
第一:在位移算法上遇到的問題剛開始在推算的過程中,忽略了一個多項式導致后面在計算的過程中誤差偏大,后面采用了三角函數的算法,整個精度的提升很明顯。
第二:在參數計算的算法推導過程中,出現了一個錯誤靠近基準面和遠離基準面的算法是不一樣的。這里出現了一個推導錯誤。后來重新推導之后改正了過來。
第三:在參數的選取上,剛開始的理解是在參數計算之后參數如果越接近實際的a和θ,計算出來的結果越真實。后來經過試驗發現這樣的選取準則是不正確的。而且不同組的樣本計算出的a和θ是不一樣的。最后通過分析得出,雖然計算出的a和θ是不一樣的,但是a/(f*sinθ)的比值幾乎是一致的。后面選取參數是選擇誤差小的。
第四:后面在觀察誤差的時候發現在0.1mm的位移時,同一組參數不同樣本的計算結果都是一樣偏大的。在實際的測量過程中我們觀測到0.1mm的位移,通常對應的是0.6左右個像素。通過觀察程序發現了把像素float型轉換成int型導致這個誤差結果。后面改過來之后,誤差明顯變小了。
(2)結構上的改變
在中期的試驗中,我們改進鏡頭和相機的結構,來改善景深,但是后來我們通過試驗發現原有的結構景深也是足夠用的,所以后面的試驗還是按照原來的結構來。
(3)線激光的中心點提取原則
在整個計算過程中,每次計算位移的結果,我們要提取每行的線激光的中心坐標,剛開始計算的算法為邊緣二分法,取中點坐標。這種算法偏差較大。在后面通過閱讀文獻,采用了灰度質心算法。在后面的計算中,都是采用這個算法。在0.01mm的位移下,發現這個算法是有效的,檢測到像素的位移在0.07個像素左右。
八:總結
通過以上的一系列實驗,我們可以達到的誤差精度是0.01mm左右,現在取得的樣本在±10mm的范圍內。但是整個容許的測量范圍是±30mm。接下來可以實驗的內容:
第一:可以以0.01mm為頻率采樣(這樣在補償后結果更精確)。
第二:樣本計算擴大到整個測量范圍。
第三:采用千分尺采樣時,人為讀書的誤差是無法避免的,后期測量的時候需進行改進。
原文標題:線掃激光算法原理
文章出處:【微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
激光
+關注
關注
19文章
3222瀏覽量
64591
原文標題:線掃激光算法原理
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論