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

          重磅!如何做到相機(jī)高精度標(biāo)定?

          共 5129字,需瀏覽 11分鐘

           ·

          2022-11-21 22:04

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)

          重磅干貨,第一時(shí)間送達(dá)



          作者丨王朝陽
          來源丨 如本科技RVBUST

          還記得當(dāng)年的華南虎照片事件嗎?我們能否從相機(jī)成像的原理來分析得知那是個(gè)紙板老虎?相機(jī)標(biāo)定為什么能夠達(dá)到小于0.01像素誤差的精度?單相機(jī)能進(jìn)行三維測(cè)量嗎?這篇文章的下半部分里,將介紹與這些問題相關(guān)的知識(shí)。

            Ⅰ 前言  

          時(shí)間過得好快。自從完成了這篇關(guān)于高精度相機(jī)標(biāo)定的文章的上半部分以來,兩個(gè)多月過去了。這兩個(gè)多月,我每天忙忙碌碌地做著各種工作,這其中也有一些相機(jī)標(biāo)定的工作。轉(zhuǎn)眼已經(jīng)11月,美國各大商店也早已擺滿了節(jié)日相關(guān)的商品。于是我蹬開被窩,決定把這下半部分寫完,這樣今年年底以前還能夠有空完成下一篇文章。

          在上半部分里,我描述了針孔成像的原理、相機(jī)成像的模型、以及相機(jī)標(biāo)定的基本原理。在這下半部分,我將介紹相機(jī)標(biāo)定的具體實(shí)施和幾個(gè)基本的應(yīng)用。

            Ⅱ 相機(jī)的成像與標(biāo)定模型回顧  

          首先,我們回顧一下相機(jī)成像的數(shù)學(xué)模型。這個(gè)基于小孔成像的模型使得給定一個(gè)世界坐標(biāo)系中的點(diǎn),可以通過理論上的計(jì)算來得到它成像后在圖像中的位置

          當(dāng)考慮鏡頭畸變時(shí),這個(gè)模型要分解為以下三步:

          顯然,相機(jī)的標(biāo)定就是把這個(gè)數(shù)學(xué)模型中涉及到的參數(shù)確定下來。這些參數(shù)包括

          • 18個(gè)內(nèi)參數(shù):

          • 6個(gè)外參數(shù):。其中決定了9個(gè)轉(zhuǎn)動(dòng)參數(shù)。


          因?yàn)橄鄼C(jī)成像的模型比較復(fù)雜,所以依賴于一張圖像來標(biāo)定相機(jī)是不可靠的。但是我們可以把世界坐標(biāo)固定在標(biāo)定板上,通過轉(zhuǎn)動(dòng)和平移標(biāo)定板來得到多幅不同的圖像。當(dāng)采用M幅標(biāo)定圖像時(shí),未知數(shù)的總數(shù)目是18+6M。
          為了可靠、精確地得到這些未知數(shù),一般采用Levenberg-Marquardt非線性最小二乘算法來優(yōu)化如下殘差:

          這里,分別是模型函數(shù)求得的標(biāo)識(shí)控制點(diǎn)的像素坐標(biāo)和實(shí)際圖像中檢測(cè)到的像素坐標(biāo)。

          基于以上分析,我們可以看到,相機(jī)標(biāo)定的關(guān)鍵步驟有兩點(diǎn):(1)精確地得到相機(jī)采集到的標(biāo)定板圖像中標(biāo)識(shí)控制點(diǎn)的像素坐標(biāo)位置;(2)運(yùn)用迭代的方法來獲取相機(jī)的內(nèi)外參數(shù)。

            Ⅲ 相機(jī)標(biāo)定的實(shí)施  

           ·圖像中標(biāo)識(shí)控制點(diǎn)的位置獲取 

          如前所述,目前最常用的標(biāo)定板圖像有兩種:棋盤格圖案圓點(diǎn)(環(huán))圖案。通常情況下,使用圓環(huán)圖案能得到比使用圓點(diǎn)和棋盤格圖案更高的精度。此外,同心圓環(huán)的個(gè)數(shù)可以超過2個(gè)。為了盡可能提高準(zhǔn)確度,圓心的位置可以按照以下步驟來檢測(cè):

          1.  利用灰度梯度信息對(duì)圖像進(jìn)行邊緣檢測(cè),常用的算法是Canny邊緣檢測(cè)方法。
          2.  搜索每一條連續(xù)的線??紤]到噪聲的干擾,一條線上的點(diǎn)無須像素挨著像素,線可以有斷開,而可允許的斷開距離需要根據(jù)圖像的情況設(shè)定。
          3.  對(duì)屬于同一條線上的點(diǎn),用橢圓模擬結(jié)合最小二乘的方法來確定這條線是否是一個(gè)橢圓,如果是,則去除一小部分偏差最大的點(diǎn),重新擬合橢圓并計(jì)算橢圓圓心的坐標(biāo)。
          4.  檢查整幅圖像中的圓心數(shù)目是否正確。如果不正確,則需要改變檢測(cè)參數(shù),重復(fù)搜索圓心。
          5.  根據(jù)檢測(cè)的圓心進(jìn)行相機(jī)標(biāo)定(詳細(xì)過程見下一節(jié))。
          6.  根據(jù)標(biāo)定結(jié)果把各圖像轉(zhuǎn)換為正面圖像,再利用模板匹配的方法得到相應(yīng)的圓心并轉(zhuǎn)換回原始位置。這樣就得到了更準(zhǔn)確的標(biāo)識(shí)控制點(diǎn)的坐標(biāo)。
          7.  再一次進(jìn)行相機(jī)標(biāo)定。

          采用上面所述的方法再加上一些優(yōu)化手段,相機(jī)標(biāo)定的標(biāo)識(shí)控制點(diǎn)的再次投影誤差可控制在0.01像素以下,相比之下,最常用的OpenCV相機(jī)標(biāo)定庫和MATLAB相機(jī)標(biāo)定工具箱只能得到0.1像素左右的誤差。

           ·標(biāo)定過程的算法實(shí)施 

          Levenberg-Marquart非線性最小二乘算法是一種簡(jiǎn)單而非常強(qiáng)大的算法,它本質(zhì)上是把高斯-牛頓算法和梯度下降算法結(jié)合了起來。大家如果沒有用過,有時(shí)間的話可以自己寫代碼試一下。當(dāng)然,如果實(shí)在覺得自己一行行地寫這個(gè)相機(jī)標(biāo)定優(yōu)化的代碼有難度,還有一個(gè)方法就是使用谷歌的開源庫Ceres Solver以及相關(guān)的開源相機(jī)標(biāo)定代碼?,F(xiàn)在,無論采用哪種方案,大家應(yīng)該可以輕松搞定高精度相機(jī)標(biāo)定了吧?!

          其實(shí)事情還沒有那么簡(jiǎn)單。原因是Levenberg-Marquart算法給出的是局部最優(yōu)解,而不一定是全局最優(yōu)解。為了解決這一問題,我們必須在迭代之前賦給標(biāo)定參數(shù)們一些可靠的初始值。在所有的內(nèi)參數(shù)中,我們其實(shí)只需要初始化α和β,其它的參數(shù)除了u0and v0設(shè)為圖像寬度和高度的一半之外,一律設(shè)為0即可。當(dāng)然,外參數(shù)是需要全部初始化的。

          那么,如何初始化呢?其實(shí)也不難,但是具體的推導(dǎo)過程會(huì)需要一些篇幅。我建議大家去讀一下Elan Dubrofsky的碩士論文[1]和張正友的那篇經(jīng)典文章[2],就可以了!

          此外,前面其實(shí)忽視了一個(gè)技術(shù)細(xì)節(jié),就是關(guān)于旋轉(zhuǎn)矩陣和它相應(yīng)的旋轉(zhuǎn)向量。它們之間的互相轉(zhuǎn)換,沒什么難度。但是迭代算法所需要的相關(guān)求導(dǎo),推導(dǎo)起來會(huì)讓人有些頭大。縱然不能一一列出推導(dǎo)過程,但本著嚴(yán)謹(jǐn)求實(shí)又簡(jiǎn)單快捷的科研精神,我把初始化和旋轉(zhuǎn)矩陣相關(guān)的關(guān)鍵公式列在這里。我相信如果你了解了Levenberg-Marquart算法,又讀了前面所提到的相關(guān)文章,是能夠看到這些公式的有用之處的!

          旋轉(zhuǎn)矩陣對(duì)旋轉(zhuǎn)向量的導(dǎo)數(shù):

          這里,

          內(nèi)參的初始化公式:

          其中


          H的計(jì)算以及實(shí)際編程中對(duì)一些變量的正則化,參考一下前述的文獻(xiàn)就一目了然了。

          外參的初始化公式:

          其中h的計(jì)算與上面的H類似,繼續(xù)參考一下文獻(xiàn)即可。

          下面的動(dòng)圖,顯示了上述相機(jī)標(biāo)定的過程。

          *高精度相機(jī)標(biāo)定的步驟演示

            Ⅳ 相機(jī)標(biāo)定的擴(kuò)展  

          得益于使用圓環(huán)圖案、利用模板匹配更新圓心位置、以及使用復(fù)雜的鏡頭畸變模型等措施,上述的相機(jī)標(biāo)定方法在實(shí)測(cè)中可以達(dá)到再次投影誤差在0.005-0.01像素的范圍內(nèi)。而在后續(xù)的三維成像應(yīng)用中,可以容易地幫助三維成像達(dá)到微米級(jí)的精度。但是,上述的相機(jī)標(biāo)定的一個(gè)主要缺陷是它依賴于使用帶標(biāo)定圖案的標(biāo)定板。在小尺度視野的相機(jī)標(biāo)定中,尚可以使用光刻的微小標(biāo)定板和變更的成像模型來實(shí)現(xiàn)標(biāo)定。而在稍大尺度視野下的相機(jī)標(biāo)定中,可以使用編碼的標(biāo)定圖案,因?yàn)閳D案是可以隨意放置的,如下圖所示的幾塊標(biāo)定板可以同時(shí)且隨意地放在視野中。

          *編碼的標(biāo)定圖案可以用來在較大視野下的相機(jī)標(biāo)定

          然而,在超大的視野下,采用標(biāo)定板的相機(jī)標(biāo)定方法是不可行的。如下圖中對(duì)水壩位移的監(jiān)測(cè)應(yīng)用。關(guān)于這種情況的高精度標(biāo)定方法,我將在接下來的幾篇文章中有介紹,請(qǐng)耐心等待。

          *采用標(biāo)定板的相機(jī)標(biāo)定方法在超大視野應(yīng)用中是不可行的

            Ⅴ 相機(jī)標(biāo)定的幾個(gè)基本應(yīng)用  

          到此,相信大家已經(jīng)清楚相機(jī)標(biāo)定是怎么回事和怎么實(shí)施了。如果還有不明白的地方,就請(qǐng)把這篇文章的上下兩部分再仔細(xì)讀一遍。如果還需要幫助,那就......

          但是,事情還沒有結(jié)束。

          既然我們花了這么長(zhǎng)的篇幅介紹高精度相機(jī)標(biāo)定,那就索性再多介紹一點(diǎn)兒關(guān)于相機(jī)標(biāo)定的基本應(yīng)用。比如,看下面這張幾周前國慶70周年閱兵的一個(gè)鏡頭。假設(shè)相機(jī)或者攝像機(jī)是標(biāo)定過了的話(注:這個(gè)標(biāo)定其實(shí)屬于超大視野標(biāo)定),我們能夠得到什么額外的常規(guī)相機(jī)不能提供的信息呢?

          *國慶70周年閱兵現(xiàn)場(chǎng)的一個(gè)鏡頭

          為了回答這個(gè)問題,我們先再一次回顧一下相機(jī)的成像數(shù)學(xué)模型:

          當(dāng)我們拿到一幅由已經(jīng)標(biāo)定過的相機(jī)拍攝的照片后,對(duì)于照片中每一個(gè)基本單元—像素,上面公式中有四個(gè)未知量:。方程有幾個(gè)?只有三個(gè)!這就意味著我們是不能解得那四個(gè)未知量的。這倒也符合我們的常識(shí):?jiǎn)螒{單個(gè)相機(jī)是不能用來做三維成像的。接下來,問題來了。我們本著愛鉆研的精神,想:能不能引入一些額外信息,使得方程可解呢?答案是肯定的。

          我們知道天安門城樓上毛澤東畫像的尺寸是有規(guī)格的,于是查了一下:高6.4米,寬5米?,F(xiàn)在,我們?nèi)芜x這個(gè)畫像的三個(gè)角點(diǎn),那么顯然上面的公式將給我們總共12個(gè)未知量和9個(gè)方程。與此同時(shí),這12個(gè)未知量中的9個(gè)三維坐標(biāo)還會(huì)根據(jù)畫像的尺寸組成下面三個(gè)公式:

          完美!因?yàn)楝F(xiàn)在我們有12個(gè)未知量和12個(gè)方程,問題可以解決了!也就是說,我們是可以通過解方程來得到畫像的三維坐標(biāo)的。即便畫像在圖像中不是正對(duì)著相機(jī)而是傾斜的,也沒有問題。另外,我們也可以得到其它的一些信息,比如拍攝者距離天安門有多遠(yuǎn)。這個(gè)例子在當(dāng)前的熱門領(lǐng)域—網(wǎng)售和物流—是有重要應(yīng)用的,它可以檢測(cè)商品和包裝盒的姿態(tài)來配合機(jī)械臂進(jìn)行分揀。

          在寫上面單相機(jī)進(jìn)行三維測(cè)量的過程中,我想起了多年前的華南虎照片一事。相信大家都知道此事,實(shí)在不知道怎么一回事的就百度一下吧。這件事情的核心,就是陜西省安康市某村一個(gè)叫周正龍村民,從年畫上復(fù)印了一張老虎的圖片,再貼到紙板上并立到草叢中,然后在幾米到10米不等的距離處拍了幾十張照片。之后,宣稱自己拍攝到了瀕危動(dòng)物野生華南虎。一出鬧劇之后,陜西省政府正式通報(bào),照片中的老虎其實(shí)是紙板老虎。

          *曾經(jīng)轟動(dòng)一時(shí)的周正龍所拍攝的“華南虎”照片

          我提這件事情的原因是想給大家出一道“作業(yè)題”:根據(jù)周正龍所拍的一系列照片,雖然我們不能去標(biāo)定當(dāng)時(shí)的相機(jī),通過本篇文章所介紹的知識(shí),你能否通過計(jì)算分析得出那個(gè)老虎是個(gè)平面老虎?

          讓我們?cè)倩氐剿膫€(gè)未知量和三個(gè)方程?,F(xiàn)在假設(shè)我們有兩個(gè)相機(jī),在共同的世界坐標(biāo)系下標(biāo)定后,那么對(duì)于物體或場(chǎng)景中的任何一個(gè)實(shí)際點(diǎn)來說,如果它能同時(shí)出現(xiàn)在兩個(gè)相機(jī)分別拍攝的照片中,總共就有五個(gè)未知量:和六個(gè)方程。也就是,未知量居然比方程數(shù)還少一個(gè)!毫無疑問,問題是可解的。這也就是我們常說的立體視覺。例如下圖中的人臉三維成像。

          *使用雙相機(jī)的人臉三維成像

          當(dāng)然,這種基于雙相機(jī)的三維成像有一個(gè)難點(diǎn):左右圖像的匹配。也就是對(duì)于一幅圖像中的一個(gè)像素,必須在另一幅圖像中找到對(duì)應(yīng)的另一個(gè)像素。為了使匹配容易,一些產(chǎn)品例如蘋果手機(jī)的三維人臉成像傳感器、英特爾的RealSense三維測(cè)量傳感器,都會(huì)采用紅外的點(diǎn)結(jié)構(gòu)光來輔助圖像的匹配。關(guān)于這個(gè)話題,我將在以后專門寫一篇文章。

          事情到這里,細(xì)心的讀者也許會(huì)有一個(gè)疑問:我們既然“一不小心”把未知量數(shù)目減少得比方程數(shù)目多了從而使得事情變復(fù)雜了—也就是需要左右圖像的匹配,那么我們能否把未知量數(shù)目增加一個(gè)回去,從而使得匹配的問題變簡(jiǎn)單呢?

          答案是可以的。比如我們只匹配水平方向的像素,那么未知量的數(shù)目是六個(gè):,結(jié)合六個(gè)方程,問題是可解的!可是,怎么實(shí)現(xiàn)呢?

          這時(shí),有的讀者也許會(huì)馬上想到:Image Rectification 呀!不錯(cuò),Image Rectification正是只匹配了一個(gè)方向!不過遺憾的是,如果這個(gè)Rectification的方案可行,那么有了圖像后,馬上解方程好了,根本不再需要做任何匹配。而那個(gè)Middleburry數(shù)據(jù)庫和評(píng)估網(wǎng)站也可以馬上關(guān)掉了。顯而易見,這個(gè)方案是有問題的。至于原因,就再留給大家思考好了!

          可行的方案是什么呢?請(qǐng)?jiān)试S我繼續(xù)賣個(gè)關(guān)子,鼓勵(lì)大家思考一下好了。在本篇結(jié)束之前,趁機(jī)給大家一個(gè)提示:下面這一段基于高精度相機(jī)標(biāo)定而進(jìn)行的三維成像,正是采用了此方案。

          *基于高精度相機(jī)標(biāo)定進(jìn)行的三維成像

          本文已經(jīng)接近結(jié)束,我也該拉上被窩了。文中提到的三個(gè)問題,你是否有了答案?為了拖更,這些答案我們下一次再公布吧。如果讀者在閱讀過程中有疑問,可以關(guān)注我們公司的公眾號(hào)留言進(jìn)行交流,我們稍后也會(huì)推出技術(shù)論壇和技術(shù)交流群,方便大家相互交流相互學(xué)習(xí)。

          參考文獻(xiàn):

          [1] Elan Dubrofsky,Homography Estimation, Master's thesis, University of British Columbia, (2009)http://cseweb.ucsd.edu/classes/wi07/cse252a/homography_estimation/homography_estimation.pdf

          [2]  Z. Zhang, "A flexible new technique forcamera calibration'", IEEE Transactions on Pattern Analysis and MachineIntelligence, Vol.22, No.11, pages 1330–1334, 2000.http://research.microsoft.com/en-us/um/people/zhang/Papers/TR98-71.pdf

          本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。

          —THE END—

          瀏覽 198
          點(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>
                  日本无码在线看 | 美女久久久久 | 免费淫色网站 | 亚欧成人| 精品久久噜噜午夜论理电影 |