(華南師范大學(xué)物理與電信工程學(xué)院 廣東 廣州 510006)
基于相機標(biāo)定的物體輪廓實際大小測量
李曉穎周衛(wèi)星
(華南師范大學(xué)物理與電信工程學(xué)院廣東廣州510006)
利用相機坐標(biāo)標(biāo)定相機隨意位置拍攝的圖片,獲得內(nèi)外參數(shù)并矯正圖片;用canny邊緣檢測算子對圖像做邊緣檢測,用輪廓檢測獲取輪廓的坐標(biāo),并按順序依次連接各輪廓點得到完整的輪廓;計算圖片中顯示的任意兩點的坐標(biāo)距離與實際大小對比,獲得誤差。
相機標(biāo)定;物體輪廓
將圖片中的信息按照等比例的放大,得到實際物體的大小和每個物體所在的坐標(biāo)是工業(yè)加工中不可缺少的一部分。得到實際物體大小的方法很多,本文提出的是先對相機做標(biāo)定,得到相機的內(nèi)外參,利用內(nèi)外參矯正發(fā)生畸變的圖像。然后利用相機坐標(biāo)與像素坐標(biāo)之間的等比例關(guān)系,如實放大。接著調(diào)用canny函數(shù)和findcontours函數(shù)獲得輪廓點和輪廓點順序。
(一)四大坐標(biāo)的轉(zhuǎn)換關(guān)系
相機攝影是一個從世界坐標(biāo)到相機坐標(biāo)到圖像物理坐標(biāo)再到圖像像素坐標(biāo)的過程。
1.世界坐標(biāo)系轉(zhuǎn)為相機坐標(biāo)系(剛體變換)
對于空間中任意一點都可以用世界坐標(biāo)表示為P=[XW,YW,ZW]T,該點在相機中表示為P1=[XC,YC,ZC]T,從世界坐標(biāo)變換為相機坐標(biāo)時,需要考慮該點的旋轉(zhuǎn)R矩陣和平移T矩陣。
2.相機坐標(biāo)系轉(zhuǎn)為圖像物理坐標(biāo)系(透視投影)
圖2 相機坐標(biāo)系轉(zhuǎn)為圖像物理坐標(biāo)系
圖3 圖像物理坐標(biāo)系轉(zhuǎn)換為圖像像素坐標(biāo)系
以O(shè)點為原點建立相機坐標(biāo)系,其中在相機坐標(biāo)系中的P1=[XC,YC,ZC]T被光線投影到圖像平面上為P2=[X,Y,f]T,其中圖像平面垂直于主光軸z,f為相機的焦距。
3.圖像物理坐標(biāo)系轉(zhuǎn)換為圖像像素坐標(biāo)系
圖像物理坐標(biāo)系轉(zhuǎn)換為圖像像素坐標(biāo)系,只是坐標(biāo)軸的轉(zhuǎn)移,對應(yīng)圖像像素坐標(biāo)系上的點為P3=[u,v,1]T。
其中,A為相機內(nèi)參,[r1 r2 r3]和t為相機外參。
(二)相機標(biāo)定和圖像矯正
1.計算相機內(nèi)參矩陣
有兩種畸變對投影圖像影響較大:徑向畸變和切向畸變。這兩個畸變系數(shù)將影響相機的內(nèi)參計算。
2.計算外參矩陣
3.圖片矯正
在拍照的過程中有些圖片會出現(xiàn)畸變,相機標(biāo)定時會產(chǎn)生相機的畸變系數(shù)。對于發(fā)生畸變的圖片需要做矯正處理。首先計算畸變映射,然后將求得的映射重新應(yīng)用到圖片上。完成圖片的矯正處理。
(一)canny邊緣檢測算子檢測邊緣
1.圖像平滑
Canny方法采用二維高斯函數(shù)對圖像進(jìn)行平滑,去除圖像中多余的噪聲:
其中,σ是高斯濾波器參數(shù)。σ較小的濾波器定位精度高,但信噪比低;σ較大,則反之。
2.梯度幅值和方向的計算
Canny算子利用一階微分算子來計算平滑后圖像I各點處的梯度幅值和梯度方向,從而獲得相應(yīng)的梯度幅值圖像G和梯度方向圖像θ。其中,點(i,j)處2個方向的偏導(dǎo)數(shù)Gx(i,j)和Gy(i,j)分別為:
Gx(i,j)=[I(i,j+1)-I(i,j)+I(i+1,j+1)-I(i+1,j)]/2
Gy(i,j)=[I(i,j)-I(i+1,j)+I(i,j+1)-I(i+1,j+1)]/2
則點(i,j)處的梯度幅值和梯度方向分別為:
3.非極大值抑制
Canny算子在梯度幅值圖像G中以點(i,j)為中心3×3的鄰域內(nèi)沿梯度方向θ(i,j)進(jìn)行插值,如果點(i,j)處的梯度幅值G(i,j)大于θ(i,j)方向上與其相鄰的2個插值,則將點(i,j)標(biāo)記為候選邊緣點,從而得到候選邊緣圖像。
4.檢測和連接邊緣
Canny算子采用雙閾值法從候選邊緣點中檢測和連接得到最終的邊緣,大于高閾值的部分認(rèn)為是圖像中的邊界,低閾值將高閾值丟失的邊緣連接起來,使得邊緣完整、封閉。小于低閾值部分就認(rèn)為不是圖像中的閾值。
(二)獲取物體輪廓
檢測出圖像邊緣后,尋找每個圖像邊緣所在的輪廓,檢測每個邊緣的輪廓連續(xù)性,將輪廓按等級排列,并將輪廓中的點也按順序排列。
在之前的圖片矯正處理之后,以相機標(biāo)定時的第一個角點為原點,以繪制角點的途徑為X軸和Y軸建立之間坐標(biāo)系。讀取原點所在角點所在棋盤格的對角角點的像素坐標(biāo),該點像素坐標(biāo)減去原點所在角點的像素坐標(biāo),并用棋盤格的實際大小除以這兩點的像素坐標(biāo)差值得到新建坐標(biāo)系的單位長度。
在獲取的輪廓坐標(biāo)中用新建立的世界坐標(biāo)代替,獲得每個點的世界坐標(biāo)。將每個輪廓點按照存儲在累加器里的順序一個個描繪、連線。
在圖像中讀取任意點之間的坐標(biāo)并計算它們之間的距離,與實際的物體大小比較,計算誤差。
本文提出的方法完成了相機標(biāo)定,解決了世界坐標(biāo)與像素坐標(biāo)的轉(zhuǎn)換問題,對發(fā)生畸變的圖片進(jìn)行矯正,并且獲得圖像物體輪廓和輪廓點順序??梢栽诠S加工時直接讀取輪廓點的順序,依次對圖像輪廓有序移動和加工。
[1]劉振中,傅莉.攝像機標(biāo)定研究[J].沈陽航空工業(yè)學(xué)院學(xué)報,2010(1):43-47.
[2]賈洪濤,朱元昌.攝像機圖像畸變糾正技術(shù)[J].電子測量與儀器學(xué)報,2006,1(3):46-49.
[3]張宏林.精通Visual C++數(shù)字圖像處理典型算法及實現(xiàn)[M].北京:人民郵電出版社,2008.
[4]萬力,易昂,傅明.一種基于Canny算法的邊緣提取改善算法[J].計算機技術(shù)與自動化,2003,22(1):24-26.
李曉穎,女,福建泉州人,碩士研究生,主要從事圖像處理方面的研究工作;周衛(wèi)星,教授,主要從事信號處理方面的研究工作。