熱線電話:0755-23712116
郵箱:contact@shuangyi-tech.com
地址:深圳市寶安區(qū)沙井街道后亭茅洲山工業(yè)園工業(yè)大廈全至科技創(chuàng)新園科創(chuàng)大廈2層2A
一:線掃激光算法原理
激光器發(fā)出的激光束經(jīng)準直聚焦后垂直入射到物體表面上,表面的散射光由接收透鏡成像于探測器的陣列上。光敏面于接收透鏡的光軸垂直。如圖:
當被測物體表面移動x,反應到光敏面上像點位移為x’。a為接收透鏡到物體的距離(物距),b為接收后主面到成像面中心的距離(一般取焦距f),θ為激光束光軸與接收透鏡之間的夾角。D為激光光束軸到透鏡中心的距離。接收透鏡的焦距為f,其余的參數(shù)如下圖:
在△ABC中,由正弦定理的:
將上式整理得:
在直角三角形△CDE (∠CDE=90°)中,
將其帶入到上式,得:(遠離透鏡)。
上式為遠離透鏡的公式,靠近基準面的公式剛好相反:(靠近透鏡)。
二:參數(shù)計算和選取
通過上面的算法推導,我們可以看出在整個公式中,我們需要得到的參數(shù)有兩個,a(接收透鏡到物體的距離(物距))和θ(激光束光軸與接收透鏡之間的夾角)。
2.1參數(shù)的計算
(1)參數(shù)計算的原理
因為公式中有兩個未知的參數(shù)a和θ,那么想要求得這兩個未知參數(shù),我們可以通過得到兩組已知的(x,x’)來列出兩個二元一次方程組來求解。
假設兩組已知的參數(shù)為(X1,X1’)(X2,X2’),通過推導過程的公式如下(以靠近透鏡為例):
通過計算得出:
將求出的θ帶去上式可以得出a.
(2)參數(shù)計算結(jié)果
在計算參數(shù)的樣本選取中,為了盡可能的提高精度,我們在靠近基準面的樣本中選取的計算組合分別為(1mm,2mm),(1mm,3mm),(1mm,4mm),(1mm,5mm),(1mm,6mm),(1mm,7mm),(1mm,8mm),(1mm,9mm),(1mm,10mm),總共9組數(shù)據(jù)。那么我們在一次采樣中可以得出9 組數(shù)據(jù)。
2.2參數(shù)的選取
在整個的實驗過程中,后期計算參數(shù)a和θ時,我們總共采樣了五次數(shù)據(jù),每次數(shù)據(jù)得到的9組參數(shù),通過45組數(shù)據(jù)來計算整個樣本的位移。觀察誤差值得大小,我們總共選取了三組參數(shù),綜合比對發(fā)現(xiàn)當比值a/(f*sinθ)為31.5~31.7且a>200時,計算出的誤差偏小且在測量的范圍內(nèi)保持一定趨勢。(這為我們后面的非線性擬合的誤差補償提供了基礎)
三:相機的標定
3.1單目相機標定的目的
獲取攝像機的內(nèi)外參數(shù)矩陣,同時也會獲得每一幅標定圖像的選擇和平移矩陣,內(nèi)參數(shù)矩陣和畸變向量可以對之后相機拍攝的圖像進行矯正,得到畸變相對很小的圖像。
3.2相機標定的輸入和輸出
相機標定的輸入為22*22單位長度為1mm/格的棋盤格圖像??偣?2張。
相機標定的輸出為:內(nèi)參數(shù)矩陣(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標定的結(jié)果
四:樣本采集
樣本采集我們有兩種方式,第一種方式為用標準塊來采集。第二種方式是通過千分尺來采集。我們采用第二種方式進行采集樣本。采集的過程為以整個圖像的中心為起點(作為基準面),每隔0.1mm取一次圖像,取到圖像的邊界。通過上述取樣本,我們得出位移的取值范圍為-30.0mm到+30.0mm。
五:計算結(jié)果
通過上述的參數(shù)計算,相機標定以及樣本采集之后,我們開始計算結(jié)果,在選曲的三組參數(shù),來計算結(jié)果得到的誤差,在附件1中。
六:誤差補償
在得出誤差之后,我們發(fā)現(xiàn)誤差的變化是具有趨勢的。隨著位移的增大誤差是逐漸增大的。從計算結(jié)果偏小逐步到計算結(jié)果偏大。在這里我們?nèi)〉谜`差補償算法為基于最小二乘法的非線性擬合。擬合的方程如下:
Y=a0+a1x+a2x^2+a3x^3
方程中x代表的是像素位移,Y代表的是誤差。通過擬合之后的誤差方程和整個算法進行融合及擬合后的求取誤差為
位移=原算法-誤差方程
最后通過誤差補償?shù)慕Y(jié)果得到的誤差,在附件2中。
七:實驗中遇到的問題
(1)算法上的改進
第一:在位移算法上遇到的問題剛開始在推算的過程中,忽略了一個多項式導致后面在計算的過程中誤差偏大,后面采用了三角函數(shù)的算法,整個精度的提升很明顯。
第二:在參數(shù)計算的算法推導過程中,出現(xiàn)了一個錯誤靠近基準面和遠離基準面的算法是不一樣的。這里出現(xiàn)了一個推導錯誤。后來重新推導之后改正了過來。
第三:在參數(shù)的選取上,剛開始的理解是在參數(shù)計算之后參數(shù)如果越接近實際的a和θ,計算出來的結(jié)果越真實。后來經(jīng)過試驗發(fā)現(xiàn)這樣的選取準則是不正確的。而且不同組的樣本計算出的a和θ是不一樣的。最后通過分析得出,雖然計算出的a和θ是不一樣的,但是a/(f*sinθ)的比值幾乎是一致的。后面選取參數(shù)是選擇誤差小的。
第四:后面在觀察誤差的時候發(fā)現(xiàn)在0.1mm的位移時,同一組參數(shù)不同樣本的計算結(jié)果都是一樣偏大的。在實際的測量過程中我們觀測到0.1mm的位移,通常對應的是0.6左右個像素。通過觀察程序發(fā)現(xiàn)了把像素float型轉(zhuǎn)換成int型導致這個誤差結(jié)果。后面改過來之后,誤差明顯變小了。
(2)結(jié)構(gòu)上的改變
在中期的試驗中,我們改進鏡頭和相機的結(jié)構(gòu),來改善景深,但是后來我們通過試驗發(fā)現(xiàn)原有的結(jié)構(gòu)景深也是足夠用的,所以后面的試驗還是按照原來的結(jié)構(gòu)來。
(3)線激光的中心點提取原則
在整個計算過程中,每次計算位移的結(jié)果,我們要提取每行的線激光的中心坐標,剛開始計算的算法為邊緣二分法,取中點坐標。這種算法偏差較大。在后面通過閱讀文獻,采用了灰度質(zhì)心算法。在后面的計算中,都是采用這個算法。在0.01mm的位移下,發(fā)現(xiàn)這個算法是有效的,檢測到像素的位移在0.07個像素左右。
八:總結(jié)
通過以上的一系列實驗,我們可以達到的誤差精度是0.01mm左右,現(xiàn)在取得的樣本在±10mm的范圍內(nèi)。但是整個容許的測量范圍是±30mm。接下來可以實驗的內(nèi)容:
第一:可以以0.01mm為頻率采樣(這樣在補償后結(jié)果更精確)。
第二:樣本計算擴大到整個測量范圍。
第三:采用千分尺采樣時,人為讀書的誤差是無法避免的,后期測量的時候需進行改進。
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。本文鏈接:https://blog.csdn.net/wangjie36/article/details/104809465