華東理工大學(xué) 李承澤 毛丹程 葉秉華 謝思遠
在相機標定中,人物目標定位是相當(dāng)重要的應(yīng)用領(lǐng)域。人物識別的準確性與快速性決定了系統(tǒng)的可靠性。本實驗使用單目相機,基于MATLAB軟件對所拍攝的照片進行標定,并獲得鏡頭參數(shù)。進而配合Yolo v3圖像識別技術(shù),對圖片中的人物進行識別而后獲取相應(yīng)的目標定位。實驗結(jié)果表明,本實驗設(shè)計能取得良好的人物目標識別并定位的結(jié)果。
三維世界的物體標定在當(dāng)今的生活中起到的作用越來越明顯,在實際運用中,精準快速地識別一片區(qū)域內(nèi)的人數(shù),統(tǒng)計瞬時人流作為參考數(shù)據(jù),也可以協(xié)助分散大量人流,避免人員的大量聚集帶來的危險。監(jiān)控設(shè)備也可以通過該技術(shù)來自動提示敏感區(qū)域的人員出入信息,保護用戶自身的利益安全。精確,快速的識別與定位是人們所一直追求的,而基于不同算法的標定,三維識別本領(lǐng)各有千秋。本實驗使用單目相機來獲得三維世界目標,以MATLAB及Yolo v3作為工具。在三維物體轉(zhuǎn)換為二維圖像時,相機自身引起的相機畸變會引來圖像失真,影響識別精確度。本實驗使用MATLAB的相機標定功能技術(shù)成熟,其采用的張正友方法精度高,公式理論成熟,且通過MATLAB操作便捷。而在圖像識別技術(shù)上,通過Yolo v3識別物體輪廓,找到二維圖像中的物體坐標,最后使用張正友方法的反向思維,實現(xiàn)物體的三維定位。使用工具便捷,步驟簡潔,趣味性強,適合相機標定初學(xué)者。
該方法是張正友教授于1998年提出的單平面棋盤格的相機標定方法。傳統(tǒng)的標定方法雖然標定精度較高,可用于任意的攝像機模型,但是標定的過程復(fù)雜,需要高精度的已知結(jié)構(gòu)信息。張正友方法是介于傳統(tǒng)標定方法與自標定方法之間的一種簡易標定方法,該方法根據(jù)位于同一平面上的特征點可以建立起關(guān)于相機內(nèi)部參數(shù)的兩個方程這一特點,提出了通過不同位置和方向的幾個平面來求解相機的內(nèi)參矩陣,然后再計算相機的外參矩陣。這種標定方法不需要昂貴的標定材料,只需要一張打印出來的棋盤格,因此成本較為低廉,同時也具備良好的魯棒性,是一種靈活而又簡便的相機標定方法。
相機標定主要用于進行像素坐標到三維世界坐標的轉(zhuǎn)換。在本次實驗中,主要通過兩個步驟進行,第一步,是像素坐標到標定板坐標的轉(zhuǎn)換,第二步,是標定板坐標到世界坐標的轉(zhuǎn)換。
其轉(zhuǎn)換公式如下:
Step1:像素坐標轉(zhuǎn)換為標定板坐標
關(guān)于扭轉(zhuǎn)因子的求解:
在像素坐標到世界坐標的過程中根據(jù)公式(1),并且在獲得了圖片中相關(guān)已知的點坐標之后可以求得。
Step2:將求得的標定板坐標轉(zhuǎn)換為未知的世界坐標
圖1 標定板圖片
本小節(jié)主要對相機標定的過程進行詳細介紹,主要包括相機標定所需的準備工作以及相關(guān)參數(shù)的計算,如相機內(nèi)參、外參,以及通過yolov3進行人像識別進而獲取其坐標的過程。
對實驗所用到的攝像機進行標定,則首先需要求解該攝像機的內(nèi)參,此過程中,本文基于matlab自帶工具欄中的“camera calibrator”平臺對所拍得的一系列標定板照片進行標定。
所用到的標定板圖片如圖1所示,本文用A3尺寸的紙張打印,得到格子邊長為5.88cm的標定板。而后將紙張平放在桌面,使用實驗所用攝像機對標定板從多個角度進行拍照,將所得的20張相片導(dǎo)入到上述應(yīng)用軟件中,點擊“calibrate”按鈕后進行相機標定,在運行后可以初步得到角點識別后的結(jié)果,如圖2所示。其中對所有圖片的識別都存在一個統(tǒng)一的識別起點,即坐標原點(Checkerboard Origin),因為實驗中所用到的張氏標定法默認標定板在三維坐標中,因此只需要識別X和Y軸兩個坐標方向,在成功識別角點之后,即可進行后續(xù)的計算。
圖2 角點識別結(jié)果
攝像機標定后得到的內(nèi)參如下所示:
接下來是對所需目標定位的照片進行外參的計算,外參的計算仍然是基于上述matlab平臺進行。
目標定位首先需要進行目標識別,此過程是應(yīng)用python+yolov3實現(xiàn)的對圖片中的人物進行識別,其識別后的結(jié)果如圖3(a)所示,根據(jù)人物外邊框底邊的兩個點可以得到目標人物在圖片中的像素坐標為(1320,3046)。識別后輸出的像素坐標信息會在后續(xù)的目標定位中使用。在此圖片中人為確定了世界坐標系原點(如圖3(b)中藍色點所示,水平方向為x軸,豎直方向為y軸),以便于后續(xù)對坐標的計算。
圖3 人物識別及目標定位結(jié)果
在經(jīng)過與內(nèi)參計算相同的步驟之后可以得到旋轉(zhuǎn)矩陣及平移向量,如表1所示。
表1 相機外參
至此,目標定位所需測量的參數(shù)均已獲取,在后續(xù)將根據(jù)以上參數(shù)以及第二小節(jié)中的公式應(yīng)用matlab進行相關(guān)計算。
將上一小節(jié)計算后得到像素坐標參數(shù)帶入到公式(1)、(2)中,計算后得到相應(yīng)的世界坐標結(jié)果,其示意圖如圖3(b)所示,藍色點為定義的世界坐標系原點,紅色點為識別后的定位結(jié)果。為了檢測目標定位的準確性,本文后續(xù)在圖2中取了幾個不同的像素點進行檢驗,其定位結(jié)果以及定位誤差如表2所示。其中定位誤差為圖像中檢測點的實際三維坐標到定位坐標的歐氏距離(cm)。
表2 目標定位結(jié)果及誤差分析
本章節(jié)主要通過yolov3對圖片中的人物進行識別并且獲得其坐標,結(jié)合相機標定的原理進行目標定位。此種標定方法可以實現(xiàn)初步的目標定位,但是通過比對標定坐標的結(jié)果與已知坐標可知,標定的結(jié)果存在一定誤差,根據(jù)實驗過程分析誤差產(chǎn)生的原因:(1)在求解內(nèi)參的過程中照片數(shù)量較少,可能在運算過程中存在一定誤差。(2)人物識別存在一定誤差,通過圖2可以看到,人物識別的邊框其實并不是嚴格與人物外邊緣相切,所以在獲取像素坐標時可能存在十幾像素的誤差,從而對后續(xù)計算產(chǎn)生影響。(3)因為在應(yīng)用參數(shù)計算的過程中,存在有效數(shù)字的取舍,所以可能導(dǎo)致所取的計算參數(shù)與實際參數(shù)存在一定出入,導(dǎo)致誤差出現(xiàn)。
但是分析計算結(jié)果與實際世界坐標的歐氏距離得出結(jié)論,可以在一定誤差范圍內(nèi),對圖片中的目標人物進行三維定位。
后續(xù)的改進意見:
(1)可以采用精度更高、尺寸更大的標定板來使內(nèi)外參等計算所需的參數(shù)更加接近真實值。
(2)對目標識別程序進行改進,使其可以輸出更加精確的人物像素坐標。
(3)在試驗場地增設(shè)坐標尺,從而減少因世界坐標系的測量誤差對實驗結(jié)果造成的影響。