<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          立體視覺入門指南:相機標(biāo)定之Zhang式標(biāo)定法

          共 4844字,需瀏覽 10分鐘

           ·

          2022-01-23 08:09

          技術(shù)來自于點擊下方卡片,關(guān)注“新機器視覺”公眾號

          視覺/圖像重磅干貨,第一時間送達

          作者丨李迎松@知乎
          來源丨h(huán)ttps://zhuanlan.zhihu.com/p/378819083
          編輯丨3D視覺工坊
          親愛的同學(xué)們,我們的世界是3D世界,我們的雙眼能夠觀測三維信息,幫助我們感知距離,導(dǎo)航避障,從而翱翔于天地之間。而當(dāng)今世界是智能化的世界,我們的科學(xué)家們探索各種機器智能技術(shù),讓機器能夠擁有人類的三維感知能力,并希望在速度和精度上超越人類,比如自動駕駛導(dǎo)航中的定位導(dǎo)航,無人機的自動避障,測量儀中的三維掃描等,都是高智機器智能技術(shù)在3D視覺上的具體實現(xiàn)。
          立體視覺是三維重建領(lǐng)域的重要方向,它模擬人眼結(jié)構(gòu)用雙相機模擬雙目,以透視投影、三角測量為基礎(chǔ),通過邏輯復(fù)雜的同名點搜索算法,恢復(fù)場景中的三維信息。它的應(yīng)用十分之廣泛,自動駕駛、導(dǎo)航避障、文物重建、人臉識別等諸多高科技應(yīng)用都有它關(guān)鍵的身影。
          本課程將帶大家由淺入深的了解立體視覺的理論與實踐知識。我們會從坐標(biāo)系講到相機標(biāo)定,從被動式立體講到主動式立體,甚至可能從深度恢復(fù)講到網(wǎng)格構(gòu)建與處理,感興趣的同學(xué)們,來和我一起探索立體視覺的魅力吧!
          課程是電子資源,所以行文并不會有太多條條框框的約束,但會以邏輯清晰、淺顯易懂為目標(biāo),水平有限,若有不足之處,還請不吝賜教!
          個人微信:EthanYs6,加我申請進技術(shù)交流群 StereoV3D,一起技術(shù)暢聊。
          CSDN搜索 :Ethan Li 李迎松,查看網(wǎng)頁版課程。
          隨課代碼,將上傳至github上,地址:StereoV3DCode:ethan-li-coding/StereoV3DCode(https://github.com/ethan-li-coding/StereoV3DCode)
          大家好,上一篇:立體視覺入門指南:關(guān)鍵矩陣(本質(zhì)矩陣,基礎(chǔ)矩陣,單應(yīng)矩陣)https://zhuanlan.zhihu.com/p/377794028
          中,我們對立體視覺的3個關(guān)鍵矩陣:本質(zhì)矩陣 E 、基礎(chǔ)矩陣 F、單應(yīng)性矩陣H作了較為詳細的描述,同時給出了本質(zhì)矩陣、單應(yīng)性矩陣的求解方法以及本質(zhì)矩陣分解外參R,t 的具體公式。更加難能可貴的是,我們在博文最后提供了幾個作業(yè)題并在Github開源了參考答案代碼【我知道很多心理都在默念李博666】【當(dāng)然肯定也有一些人在默念這太easy了李博能不能上點難度】。無論如何,博主覺得這是一件有意義的事情,只希望沒有誤人子弟。
          而本篇的內(nèi)容,則是立體視覺的絕對核心模塊:相機標(biāo)定。雖然它因為技術(shù)相對成熟,如今研究的人不多,也容易被人忽略,往往用一個開源算法庫如Opencv或者Matlab標(biāo)定工具箱就直接搞定,但實際在立體視覺工程化、產(chǎn)品化時,開源工具由于其精度不高、靈活度低而不建議直接使用,企業(yè)往往是自己開發(fā)相機標(biāo)定算法。相機標(biāo)定作為立體視覺的核心模塊,掌握其理論是相當(dāng)必要的,對我們深入理解立體視覺技術(shù)大有幫助,有開山辟路之效

          所謂標(biāo)定,即是由大量觀測值擬合參數(shù)模型的過程,且在此擬合的參數(shù)模型是已知的,所以應(yīng)盡可能探索能便捷獲取大量觀測值的方案,如果觀測值之間還滿足一些其他的幾何約束就更有助于求解具體單個參數(shù)值。

          今天所述的Zhang式標(biāo)定法1即提供了一種便捷獲取大量觀測值的的方案,同時觀測值之間還滿足一類明顯的幾何約束(即平面約束),可直接求解出內(nèi)外參。其操作方式非常簡單,只需要拍攝帶有標(biāo)定板圖案的平面,即可完成相機標(biāo)定,使標(biāo)定難度極大降低,如果不追求高精度,打印一張棋盤格標(biāo)定板圖案粘貼到近似平的硬紙板上即可完成標(biāo)定,加快了立體視覺的入門和普及,影響深遠,是相機標(biāo)定領(lǐng)域絕對的經(jīng)典。
          本篇即帶大家深入了解Zhang式相機標(biāo)定法,掌握本篇對立體視覺的理論掌握及工程實戰(zhàn)來說都是非常必要的。

          實施方法

          Zhang式標(biāo)定法能夠被廣泛應(yīng)用,其中一個重要原因是其實施方法十分簡單,不需要專業(yè)的工藝制作即可完成。
          第一步,設(shè)計一張具有明顯角點特征,且已知每個角點二維坐標(biāo)的圖案作為標(biāo)定圖案,常見的圖案有三種:
          規(guī)則的圖案設(shè)計可以方便的計算出角點在圖案內(nèi)的二維坐標(biāo),拿棋盤格來說,角點之間的間隔像素數(shù)是固定的,假設(shè)左上角角點的坐標(biāo)為(0,0),則其他角點的像素坐標(biāo)都可以通過格子的偏移量計算出來,而一張已知DPI的標(biāo)定板圖像,在打印后每個角點的二維空間坐標(biāo)也是完全已知的(通過像素換算成空間尺寸)。
          第二步,將標(biāo)定板圖案以某種方式置于一個平面上。比如最簡單的方式是將標(biāo)定圖原尺寸打印出來,然后找一塊近似平的平板,將打印后的標(biāo)定圖案粘貼至平板上;更專業(yè)高精度的方式是找專業(yè)廠家制作高精平板(如陶瓷板)并將標(biāo)定圖案以某種工藝刻印到平板上。這一步的目的是讓標(biāo)定圖案的角點都位于一個平面上。
          圖片來源:Calibration Patterns Explained
          如此,第一步所描述的二維坐標(biāo)可以轉(zhuǎn)換成第三維  坐標(biāo)等于0的三維坐標(biāo)(將世界坐標(biāo)系的原點放在標(biāo)定板的某個角點,Z軸垂直于標(biāo)定板)。
          第三步,移動相機到N(N>=3)個不同的位姿拍攝標(biāo)定板圖案。
          第四步,對上一步拍攝的標(biāo)定板圖案進行角點提取,解算標(biāo)定參數(shù)。
          matlab軟件標(biāo)定示意圖
          以上便是相機標(biāo)定的實施步驟,總結(jié)來說,在一個平面標(biāo)定板上有一組已知空間坐標(biāo)的角點,相機在多個不同位姿下拍攝角點圖案并提取角點的像素坐標(biāo),即可完成相機內(nèi)外參數(shù)的解算。這句總結(jié)蘊含2個重要的知識點:
          1.標(biāo)定圖案中角點的空間坐標(biāo)是已知的,且它們都位于一個平面上, Z坐標(biāo)等于0
          2.相機需要在多個不同的位姿拍攝角點圖案并提取像素坐標(biāo)
          可以看到Zhang式標(biāo)定法確實是易于實施的方法,其中蘊含的標(biāo)定理論,是非常有價值的,對于立體視覺的初學(xué)者來說,掌握其理論很有必要,還請務(wù)必閱讀本篇接下來的內(nèi)容。
          理論基礎(chǔ)

          定義

          單應(yīng)性矩陣

          在實施方法中,我們一定能夠關(guān)注到一個非常關(guān)鍵的信息:標(biāo)定圖案被置于一個平面上。它的目的是為了讓標(biāo)定圖案中的角點都位于一個空間平面上,從而當(dāng)相機拍攝角點成像后,空間平面和像平面之間存在一個單應(yīng)性變換關(guān)系,即可通過一個單應(yīng)性矩陣H將角點的空間坐標(biāo)轉(zhuǎn)換成圖像坐標(biāo)。

          對內(nèi)參的約束

          由上式可知,單應(yīng)性矩陣H和內(nèi)參矩陣A的元素之間滿足兩個線性方程約束。如果能夠計算出單應(yīng)性矩陣,直觀上感覺應(yīng)該可通過解線性方程解出內(nèi)參矩陣。具體是否可以呢?我們繼續(xù)往下看。

          相機參數(shù)求解

          本小節(jié)將帶大家了解相機參數(shù)的具體解法,回答上節(jié)遺留的問題,即是否能夠通過公式(7)來求解相機參數(shù)。
          本小節(jié)將分為3個部分,第一部分介紹直接由式(7)求解相機參數(shù)的閉合解公式;第二部分介紹相機參數(shù)的最大似然解法;第三部分介紹考慮相機畸變后的畸變參數(shù)解法。

          閉合解

          這是一個典型的線性方程組,系數(shù)矩陣的行數(shù)為2,求解6維向量 b 。由公式(4),當(dāng)相機在1個位姿下拍攝標(biāo)定板圖案后,經(jīng)過角點的像素坐標(biāo)提取,可得所有角點的世界坐標(biāo)系和像素坐標(biāo)系的對應(yīng)關(guān)系,進而通過線性方程組的最小二乘解法求解當(dāng)前位姿下的單應(yīng)性變換矩陣 H ,可得公式(11)的具體表達式。
          但公式(11)的系數(shù)矩陣只有2行,要求解6維向量b是不夠的。所以我們需要相機在n個位姿下拍攝標(biāo)定圖案,得到n個單應(yīng)性矩陣,以及行數(shù)為2n的系數(shù)矩陣,當(dāng) n>=3 時,便可求解6維向量 b 。也就是說至少3張圖片才能完成相機標(biāo)定。最后得到的總方程組可表達為:

          以上,內(nèi)外參數(shù)全部解出,整個閉合解法完成。
          備注:感謝微信公眾號「3D視覺工坊」整理。

          最大似然估計

          閉合解法可得到代數(shù)距離最小的解,并沒有考慮到各個參數(shù)實際的幾何含義,由于噪聲的存在,解并不會非常精確。我們可以通過最大似然估計法來獲取更精確的解。
          如果我們觀測到標(biāo)定板n張拍攝圖像中的m個點對。假設(shè)所有點存在獨立的等尺度的噪聲,則最大似然估計即最小化如下表達式:

          式(16)是一個非線性表達式,所以這是一個非線性最小化求解問題,可以用Levenberg-Marquardt算法來求解。想必部分同學(xué)知道求解該類問題需要一個相對準(zhǔn)確的初始化值,這個值便可以使用前一節(jié)得到的閉合解來獲取。
          在工程實踐中,我們通常用ceres-solver庫來搞定這部分。

          相機畸變

          到目前為止,我們還沒有考慮相機畸變,所有推導(dǎo)都是基于無畸變的理想情況,而實際情況是相機必然會有多多少少的畸變,主要包括兩種:徑向畸變和切向畸變。一般情況下,會考慮3項徑向畸變 k1,k2,k3 和2項切向畸變p1,p2 。在Zhang式標(biāo)定法中,只考慮了2項徑向畸變 k1,k2 ,而實際應(yīng)用時,我們會考慮更多項,原理相同,依次類推即可。

          式(17)是一個線性方程組,求解k1,k2看上去是一件簡單的事兒,但實際上卻面臨一個問題,即無法獲取無畸變的理想坐標(biāo) (u,v),它需要已知準(zhǔn)確的內(nèi)外參通過投影公式(2)來求解,同學(xué)們可能會問:前兩節(jié)不是解出了內(nèi)外參數(shù)嗎?。坎灰?,前面是沒有考慮相機畸變的,內(nèi)外參的求解實際是不精確的(把觀測值當(dāng)做無畸變坐標(biāo)來求解的內(nèi)外參,是有偏差的)。所以這成了一個雞生蛋蛋生雞的矛盾問題。
          那就干脆不奢求通過線性方程求出精確畸變,將閉合解得到的內(nèi)內(nèi)外參代入公式(2)求出近似的理想坐標(biāo) (u,v),從而由公式(17)建立線性方程組求解近似的k1,k2 。
          然后,我們建立新的最大似然估計表達式:

          同樣通過非線性求解方法來求解所有內(nèi)外參數(shù)和畸變系數(shù)。而畸變系數(shù)的初值由上面所描述的方法來求解。
          實際上,因為畸變系數(shù)是非常小值,所以直接將畸變系數(shù)的初值全部設(shè)置為0也是可以的,這就不需要解線性方程組了。

          總結(jié)

          下面對整個Zhang式標(biāo)定的流程做一個總結(jié):
          1.打印標(biāo)定圖案并粘貼至一個平面上,稱之為標(biāo)定板。
          2.通過移動相機或移動標(biāo)定板在不同的位姿拍攝多張標(biāo)定板圖像(圖像數(shù)>=3)。
          3.在所有圖像上檢測特征點(角點或者圓心點)。
          4.使用閉合解法求解所有內(nèi)參數(shù)和外參數(shù)。
          5.通過線性方程組求解近似的畸變系數(shù)(或者直接賦值為0)。
          6.通過非線性優(yōu)化計算精確的內(nèi)外參數(shù)和畸變系數(shù)。
          以上便是Zhang式標(biāo)定法的所有理論講解,希望同學(xué)們讀完此篇能有醍醐灌頂之效,并能融會貫通,在實際工程應(yīng)用中得心應(yīng)手。
          在Zhang式標(biāo)定法的原文中,還有一些值得學(xué)習(xí)的高階知識點并未在本篇中體現(xiàn),包括關(guān)鍵公式(7)的幾何解釋,以及退化情況下的討論,感興趣的同學(xué)可以繼續(xù)閱讀原文來了解。
          下一篇我們將帶來相機標(biāo)定的另一種方法:DLT直接線性變換法。
          作業(yè)
          這里為大家準(zhǔn)備了一些練習(xí)題,可以通過實踐加深理解:
          1 通過opencv開源庫提供的接口完成相機標(biāo)定,可使用opencv提供的圖像,也可使用自己的圖像。
          2 更高階的是,你能夠自己不依賴opencv庫寫一套相機標(biāo)定算法嗎?或者只使用opencv來檢測角點坐標(biāo),其他步驟自己來實現(xiàn)。
          參考答案地址:https://github.com/ethan-li-coding/StereoV3DCode
          [代碼持續(xù)更新,大家感興趣可以star和watch,本篇代碼暫缺]。

          參考文獻

          - [1] Zhang Z . A Flexible New Technique for Camera Calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11):1330-1334.
          本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。
          —THE END—
          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄片在线免费观看免播放器 | 欧美成在线观看 | www操操操 | 成人精品91 | 在线伊人|