<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>

          【CV】一文圖解單目相機(jī)標(biāo)定算法

          共 3737字,需瀏覽 8分鐘

           ·

          2021-02-02 20:49

          有一天,蟹老板找底下的員工川建國(guó)同學(xué):
          等蟹老板走后,然后轉(zhuǎn)頭問(wèn)旁邊的學(xué)霸李雷同學(xué):
          李雷同學(xué)整理了下情緒:


          有人反映哦,有時(shí)候我們發(fā)出來(lái)的技術(shù)貼太硬了,不方便去理解,于是,就有了上面這個(gè)嘗試,在開(kāi)始正課之前,我們先講一段故事。如果大家覺(jué)得OK,后面我們將繼續(xù)用這種方式來(lái)講課,如果不OK,請(qǐng)大家在我們?cè)u(píng)論區(qū)提供您寶貴的意見(jiàn)。

          這次單目相機(jī)標(biāo)定教程,預(yù)計(jì)有三期,第一期講單目相機(jī)成像過(guò)程,第二期講MATALAB和OpenCV的單目相機(jī)標(biāo)定實(shí)踐,第三期則講張正友標(biāo)定法的原理。這里是3D視覺(jué)工坊嘉賓,Atlas博士生計(jì)算機(jī)視覺(jué)大講堂,致力于把計(jì)算機(jī)視覺(jué)知識(shí)講得不那么無(wú)趣!

          01 什么是相機(jī)標(biāo)定?
          說(shuō)到相機(jī)標(biāo)定,就要先說(shuō)什么是傳感器的標(biāo)定。我們知道,任何傳感器,它都是存在有誤差的,那么狹義上說(shuō),標(biāo)定就是去校正這部分誤差,讓傳感器盡量準(zhǔn)確一點(diǎn)。我們來(lái)看相機(jī)標(biāo)定前后輸出圖像的差別:
          圖1 相機(jī)標(biāo)定前后輸出圖像的差別
          有人說(shuō)了,那為什么相機(jī)出廠前,它不提前做好標(biāo)定呢?
          李雷同學(xué)又鄙夷了一次建國(guó)同學(xué):
          出廠前相機(jī)標(biāo)定,廠家想做(誰(shuí)不想自己的傳感器準(zhǔn)一點(diǎn)呢),但這個(gè)真還不是廠家懶,它真做不了。因?yàn)橄鄼C(jī)要標(biāo)定的參數(shù),跟相機(jī)實(shí)際的光圈、焦距大小有關(guān),而這兩個(gè)參數(shù),在一般的工業(yè)相機(jī)中都是可調(diào)節(jié)的,所以只能你自己來(lái)標(biāo)定。
          常見(jiàn)單目相機(jī)標(biāo)定方法是張正友標(biāo)定法,這在很多軟件,比如說(shuō)MATLAB、或者庫(kù)OpenCV中都有相應(yīng)的實(shí)現(xiàn)。至于相機(jī)標(biāo)定,要標(biāo)定哪些參數(shù),先讓我來(lái)和你說(shuō)一下單目相機(jī)的成像模型。
          哦,對(duì)了,要補(bǔ)充一點(diǎn),我們常說(shuō)的標(biāo)定可不光光指糾正傳感器的誤差,當(dāng)涉及到兩個(gè)或者多個(gè)傳感器的標(biāo)定的時(shí)候,往往還包括計(jì)算出這些傳感器間的相互位置關(guān)系。比如說(shuō)在機(jī)器人系統(tǒng)里,我們經(jīng)常需要在不同坐標(biāo)系下轉(zhuǎn)換位置關(guān)系,那么我們所說(shuō)的一些標(biāo)定還包括標(biāo)定出這些關(guān)節(jié)、傳感器之間的相互位置關(guān)系。再比如說(shuō)我們雙目相機(jī)的標(biāo)定,就包括左相機(jī)、右相機(jī)的傳感器誤差標(biāo)定,還包括它們之間相互位置關(guān)系的這么一個(gè)標(biāo)定。


          概括一下,常說(shuō)的標(biāo)定包括兩部分內(nèi)容:傳感器誤差的校正、傳感器相互之間的位置關(guān)系。


          而單目相機(jī)的標(biāo)定主要指前者,傳感器誤差的校正,常用的方法是張正友標(biāo)定法

          02 理想單目相機(jī)成像模型


          實(shí)際上,小孔成像的模型其實(shí)可以看作是針孔相機(jī)模型的基礎(chǔ):

          圖2 小孔成像模型
          進(jìn)一步地,針孔相機(jī)模型可以簡(jiǎn)化為下面這個(gè)模型:
          圖3 針孔相機(jī)模型(未翻轉(zhuǎn))
          圖中,P是物點(diǎn), 是前者在CCD上成像的像點(diǎn),而是相機(jī)的光心,則為成像平面到光心的距離,我們稱之為焦距。


          實(shí)際上,焦距的定義會(huì)更復(fù)雜,是所有平行光透過(guò)透鏡匯聚一點(diǎn),那一點(diǎn)到透鏡光心的距離,它就涉及到攝影里非常專業(yè)的概念最小彌散圓了,我們之后會(huì)講一期相機(jī)光圈、焦距、景深、視場(chǎng)大小、最佳成像距離的專欄。


          這里先把模型簡(jiǎn)化一下吧,下面我們來(lái)講整個(gè)成像過(guò)程,在相機(jī)成像模型中,主要有四大坐標(biāo)系:世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系、像素坐標(biāo)系。
          圖4 四大坐標(biāo)系
          其中:


          世界坐標(biāo)系(3D)世界坐標(biāo)系就是以外界某個(gè)參考點(diǎn)建立的坐標(biāo)系,單位為mm,或者m。
          相機(jī)坐標(biāo)系(3D):以光心建立相機(jī)坐標(biāo)系,其中軸指向相機(jī)的正前方。
          圖像坐標(biāo)系(2D):光心在成像平面的投影,也就是點(diǎn)建立另一坐標(biāo)系,稱為圖像坐標(biāo)系,單位為mm。
          像素坐標(biāo)系(2D):像素坐標(biāo)系是我們最終用戶所看到的,也就是坐標(biāo)系的原點(diǎn)在圖像左上角,單位為像素。

          那么這中間,我們?cè)趺唇?shí)際物理點(diǎn)(世界坐標(biāo)系)到圖像上點(diǎn)(像素坐標(biāo)系)的一一映射呢?需要三步轉(zhuǎn)換,也就是:


          世界-> 相機(jī) -> 圖像 -> 像素

          這中間,這些坐標(biāo)系有什么差別,它們是怎么轉(zhuǎn)換的?請(qǐng)看下面的文章。

          2.1世界坐標(biāo)系 -> 相機(jī)坐標(biāo)系

          我們知道,世界坐標(biāo)系就是以外界某個(gè)參考點(diǎn)建立的坐標(biāo)系,而相機(jī)坐標(biāo)系則是以相機(jī)的光心作為坐標(biāo)原點(diǎn),光軸的正方向作為Z軸建立的坐標(biāo)系,兩者屬于剛體變換,只需要進(jìn)行旋轉(zhuǎn)和平移,如下所示:
          圖5 世界坐標(biāo)系到相機(jī)坐標(biāo)系的轉(zhuǎn)換


          為了統(tǒng)一旋轉(zhuǎn)和平移,我們將其寫為齊次形式,至于為什么要用齊次,我們之后的欄目里也會(huì)說(shuō),總而言之是這樣的。

          2.2 相機(jī)坐標(biāo)系 -> 圖像坐標(biāo)系

          在完成了世界坐標(biāo)系 -> 相機(jī)坐標(biāo)系的轉(zhuǎn)換后,我們?cè)購(gòu)南鄼C(jī)坐標(biāo)系 -> 圖像坐標(biāo)系。為了方便描述,我們將針孔相機(jī)模型對(duì)稱翻轉(zhuǎn)過(guò)來(lái),如下圖所示,從數(shù)學(xué)的角度,它們是等價(jià)的:


          想不明白沒(méi)關(guān)系,這里就算是不等價(jià)的,我們就假設(shè)相機(jī)的電子設(shè)備已經(jīng)幫我們做好了這樣一個(gè)翻轉(zhuǎn)

          圖6 針孔相機(jī)模型(翻轉(zhuǎn))

          先回顧一下前面所說(shuō)的,如我們之前所說(shuō):P是物點(diǎn)、P’是像點(diǎn),現(xiàn)在我們將它翻轉(zhuǎn)過(guò)來(lái)了,記作小寫的p。其中:

          跟之前的公式統(tǒng)一一下,寫為齊次形式:


          ? 2.3 圖像坐標(biāo)系 -> 像素坐標(biāo)系
          圖像坐標(biāo)系中,坐標(biāo)的原點(diǎn)在圖像中間,而我們平時(shí)處理圖像時(shí)用的坐標(biāo)系,稱為像素坐標(biāo)系,坐標(biāo)系的原點(diǎn)在圖像的左上角,此外它們的度量單位也不同,前者的單位是mm,而后者的單位是像素。如下圖所示,兩個(gè)坐標(biāo)系之間的差別:
          圖7 圖像坐標(biāo)系和像素坐標(biāo)系的差別



          CCD并不是一個(gè)正方形,dx、dy的大小是有所差別的

          其進(jìn)行移項(xiàng),并寫為齊次的形式,有:

          2.4 匯總
          總結(jié)一下之前所說(shuō)的四大坐標(biāo)系的關(guān)系
          圖8 四大坐標(biāo)系間關(guān)系

          它們的公式如下:
          1.世界坐標(biāo)系->相機(jī)坐標(biāo)系

          2.相機(jī)坐標(biāo)系->圖像坐標(biāo)系

          3.圖像坐標(biāo)系->像素坐標(biāo)系

          那么將這些式子聯(lián)立,最終得(你可以嘗試自己去推導(dǎo)一下,就是幾個(gè)式子代換一下):

          進(jìn)一步化簡(jiǎn):

          這個(gè)公式就是整個(gè)單目相機(jī)在理想情況下的成像公式,可以建立世界坐標(biāo)系到像素坐標(biāo)系的一一映射。

          再補(bǔ)充一個(gè)知識(shí)點(diǎn),歸一化平面:



          歸一化平面,其實(shí)際是圖像坐標(biāo)系的等比縮放,也就是當(dāng)f=1的情況,主要是便于公式推導(dǎo),它與圖像坐標(biāo)系是等比縮放關(guān)系,只需要乘以f即可完成相互轉(zhuǎn)換。

          圖9 圖像坐標(biāo)系與歸一化平面關(guān)系

          03 相機(jī)畸變


          以上是理想情況下世界坐標(biāo)系到像素坐標(biāo)系的轉(zhuǎn)換。而由于相機(jī)制造工藝的原因,其成像過(guò)程中難免存在著畸變,在后續(xù)構(gòu)建精確的三維重建算法前,我們要對(duì)相機(jī)的畸變進(jìn)行矯正,以提高算法重建的精度,這一步驟才稱為相機(jī)標(biāo)定。

          3.1徑向畸變



          徑向畸變?cè)颍涸谙鄼C(jī)制造過(guò)程中,很難保證鏡頭的厚度完全均勻,由于制造工藝的原因,通常為這種情況為中間厚、邊緣薄,因而光線在遠(yuǎn)離透鏡中心的地方,會(huì)發(fā)生更大程度的扭曲,這種現(xiàn)象在魚(yú)眼相機(jī)(桶形畸變)中尤為明顯。

          徑向畸變主要有兩種類型:枕型畸變桶型畸變,示意圖如下:
          圖10 相機(jī)徑向畸變



          需要注意的是,這里校正,并不是用的系數(shù)越多,整個(gè)矯正結(jié)果越精確,我們應(yīng)該考慮相機(jī)的實(shí)際情況,選擇合適的參數(shù)數(shù)量。


          3.2切向畸變



          切向畸變?cè)颍呵邢蚧儺a(chǎn)生的原因在于相機(jī)在制造過(guò)程中,成像平面與透鏡平面不平行,產(chǎn)生了透視變換。


          圖11 切向畸變
          這種畸變可以由以下公式描述,它也與距離圖像中心的距離半徑有關(guān):

          3.3合并考慮

          將徑向畸變和切向畸變合并,只需要將兩個(gè)畸變矯正直接加起來(lái)即可,公式如下:




          合并考慮畸變?cè)颍浩鋵?shí)也很簡(jiǎn)單,兩種畸變是同時(shí)發(fā)生在成像過(guò)程中的,發(fā)生的原因也是相互獨(dú)立的,而且也都是關(guān)于距離的表達(dá)式,你似乎也找不到更好的方式來(lái)綜合考慮這兩種誤差,實(shí)踐證明,這種合并考慮畸變的情況效果還不錯(cuò)。

          04 成像過(guò)程總結(jié)
          我已經(jīng)把所有需要記住的知識(shí)點(diǎn)匯聚在一張圖片上了,請(qǐng)大家對(duì)照著前面的文章去理解:


          05?思考問(wèn)題


          當(dāng)看完這次推文之后,請(qǐng)大家在腦海里梳理以下幾個(gè)概念:

          1. 世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系、像素坐標(biāo)系、歸一化坐標(biāo)系,它們之間的差別是什么,怎么進(jìn)行相互轉(zhuǎn)換?
          2. 徑向畸變、切向畸變、它們的主要因素、以及如何去校正?
          3. 最好的話,你自己去畫(huà)這個(gè)圖,去推導(dǎo)一遍公式。雖然你后面公式會(huì)忘,但相信我,3D視覺(jué)領(lǐng)域好多公式,我不需要你記住它,但你要有個(gè)直覺(jué)印象,去推導(dǎo)一遍有助于你真正理解這個(gè)公式。
          當(dāng)明白了這些以后,下節(jié)課我們講,怎么通過(guò)張正友標(biāo)定法去獲得要標(biāo)定的參數(shù),標(biāo)定得來(lái)的參數(shù)怎么用,用MATALAB跟OpenCV分別去實(shí)踐,不過(guò)在此之前,你要自己思考以下這些問(wèn)題:
          1. 相機(jī)標(biāo)定,我們究竟要標(biāo)定那些參數(shù)?
          2. 相機(jī)畸變發(fā)生在四大坐標(biāo)系轉(zhuǎn)換的哪一過(guò)程?
          3. 假設(shè)我們拿到了這些參數(shù)怎么用?
          4. 對(duì)于每個(gè)物點(diǎn),在像素坐標(biāo)系下都有唯一像點(diǎn)與之對(duì)應(yīng),那么反過(guò)來(lái)是否成立?
          5. 怎么去評(píng)判標(biāo)定的好不好?
          大家還想要我們講什么呢?請(qǐng)踴躍留言!高能預(yù)警,下節(jié)課我們將以視頻的形式來(lái)講解。不過(guò),如果你沒(méi)有好好看這個(gè)相機(jī)成像過(guò)程的文章,下節(jié)課我講的再有趣也是白扯~這里是3D視覺(jué)工坊嘉賓,Atlas博士計(jì)算機(jī)視覺(jué)大講堂,致力于把計(jì)算機(jī)視覺(jué)知識(shí)講得不那么無(wú)趣!

          往期精彩回顧





          本站知識(shí)星球“黃博的機(jī)器學(xué)習(xí)圈子”(92416895)

          本站qq群704220115。

          加入微信群請(qǐng)掃碼:

          瀏覽 105
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  99国产视频在线 | 一级爱爱免费看 | 日本三级少妇三级99夜在线观看 | 大香蕉尹人视频 | 韩国免费一级a一片在线播放 |