0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

相機標定的邏輯和學(xué)習資料詳細概述

電子工程師 ? 來源:未知 ? 2019-06-01 09:54 ? 次閱讀

相機標定可以說是計算機視覺/機器視覺的基礎(chǔ),但是初學(xué)者不易上手,本文將給讀者整理一遍相機標定的邏輯,并在文末回答評論區(qū)提出的問題。分為以下內(nèi)容:

相機標定的目的和意義

相機成像過程的簡化與建模

針孔相機模型的數(shù)學(xué)描述

標定針孔相機模型的參數(shù)

相機標定的目的和意義

我們所處的世界是三維的,而照片是二維的,這樣我們可以把相機認為是一個函數(shù),輸入量是一個場景,輸出量是一幅灰度圖。這個從三維到二維的過程的函數(shù)是不可逆的。

相機標定的目標是我們找一個合適的數(shù)學(xué)模型,求出這個模型的參數(shù),這樣我們能夠近似這個三維到二維的過程,使這個三維到二維的過程的函數(shù)找到反函數(shù)。

這個逼近的過程就是「相機標定」,我們用簡單的數(shù)學(xué)模型來表達復(fù)雜的成像過程,并且求出成像的反過程。標定之后的相機,可以進行三維場景的重建,即深度的感知,這是計算機視覺的一大分支。

相機成像過程的簡化與建模

提到相機的成像,從根本上來說,就是在討論相機的鏡頭。固定結(jié)構(gòu)的相機鏡頭決定了一對固定的物像共軛關(guān)系,所謂「共軛」,意思是鏡頭前某個位置的物,它的像一定在鏡頭后的某個位置,這個關(guān)系是固定的。舉個最簡單的例子,無窮遠處的物必然會在鏡頭的焦點處成像。這里說的固定結(jié)構(gòu),指的是鏡頭的焦距固定,光圈固定。

上圖是Canon EF 85mm/F1.2L II USM,我們可以找一個與這個鏡頭具有相同的物像共軛關(guān)系的凸透鏡來等效這個鏡頭,我們把這個凸透鏡稱作等效透鏡,用朝外的雙箭頭表示,如下圖。

這里說的等效,只是針對物像共軛關(guān)系的等效,也就是光路的等效,鏡頭中之所以用了形態(tài)各異的透鏡主要是為了消除各種各樣的像差,提高清晰度。換句話說,等效透鏡的目的絕不是為了在實際應(yīng)用中取代鏡頭(畢竟一個鏡頭都好貴),只是為了幫助我們理解。這樣我們就可以畫出相機拍攝到清晰的蠟燭燃燒場景的草圖,如下圖。

其中, 是火苗尖的物點, 是火苗尖的像點 , 是蠟燭根的物點,是蠟燭根的像點, ?是等效透鏡的中心(也稱為光心),紅色虛線表達了物點 ?到 像點成像光路中的兩條,綠色虛線表達了物點 到像點 成像光路中的兩條,紅色是CCD面。注意,剛剛說到我們畫的是「相機拍攝到清晰的蠟燭燃燒場景的草圖」,這表明像點 和像點 剛好落在CCD面上,那么假如像點沒有落在CCD面上,也就是CCD拍攝的圖像不清晰,我們?nèi)绾未_定像點的位置?

根據(jù)幾何光學(xué)的作圖法,由過等效透鏡的焦點 的光線和過光心 的光線,我們可以作出像點 的位置,現(xiàn)在我們對「相機拍攝到清晰的蠟燭燃燒場景的草圖」同樣用作圖法,只考慮 點的物像關(guān)系。

這樣我們就能夠得到成像光路中的4條:①是過透鏡上邊沿的光路,④是過透鏡下邊沿的光路,②是過等效透鏡焦點的光路,③是過光心的光路。它們都表達了物點 與像點 的物像共軛關(guān)系,顯然③過光心的光路是最容易建立物像共軛關(guān)系數(shù)學(xué)模型,因此我們用③來代表成像光路,對相機成像過程進行簡化。

到這里我們發(fā)現(xiàn),簡化后的相機模型和針孔相機的成像原理很相似,因此我們把簡化后的相機模型稱為針孔相機模型。上圖中的 是針孔相機模型的焦距,但請注意,此針孔相機「焦距」非彼等效透鏡「焦距」,只是借用了「焦距」匯聚光線的概念,表達的是CCD面到光心的距離。

但是我們說的是簡化后的相機模型和針孔相機的成像原理僅僅是相似,絕不能等同,由于針孔相機的原理是光沿直線傳播,所以真實的針孔相機是沒有「焦距」的概念的,也不存在像差,其物像關(guān)系不具有一一對應(yīng)性,如下圖。

所以準確的講把相機的成像過程簡化成針孔相機模型,只是借用了針孔相機中簡單的數(shù)學(xué)關(guān)系來表達一些本來難以表達的數(shù)學(xué)關(guān)系,使得數(shù)學(xué)上大大降低了復(fù)雜性,但是這個簡化的代價同樣很大,它本身不考慮像差(雖然針孔相機模型補充了消畸變模型)、不考慮景深(針孔相機模型物像關(guān)系不具有一一對應(yīng)性,認為凡是物總能成清晰像),并且假定等效透鏡是薄透鏡。所以說針孔相機模型僅僅是一種真實相機的成像過程的近似,甚至于我們可以說這是一種非常粗糙的近似,這使得這個模型對越符合針孔相機模型的真實相機近似程度越高,如網(wǎng)絡(luò)攝像頭、手機鏡頭、監(jiān)控探頭等等。

針孔相機模型的描述

我們對相機成像過程進行簡化和建模得到了針孔相機模型,如下圖示。

首先建立相機坐標系,我們以光心 為坐標系的原點, 方向是CCD像素排列的水平和豎直兩個方向, 方向垂直與CCD面,建立右手坐標系,這是一個三維坐標系。其次,我們還需要建立CCD標號坐標系:以CCD左上角像素標號為原點,CCD像素排列的水平和豎直兩個方向為 方向,這是一個二維坐標系。為了方便描述,我們之后將把針孔相機模型對稱翻轉(zhuǎn)過來,如下圖所示,從數(shù)學(xué)的角度,它們是等價的。

由光心著光軸出發(fā),像平面在上,是相機的物理焦距(單位:)。

在空間中,在相機坐標系下的位置是

在像平面上,有兩個等價的位置描述:1. 在相機坐標系下的位置是;2. 在CCD標號坐標系下的位置是。

在無鏡頭畸變的條件下,光心、點與點在一條直線上。

是CCD單個像素在水平和豎直兩個方向上的尺寸(單位:/像素),因此定義焦距為(單位:像素)。

CCD標號坐標系原點到光軸的偏移量為(單位:像素)。根據(jù)相似三角形關(guān)系,可以得出:

(1) 二維CCD標號坐標二維CCD像素坐標建立CCD像面上的點標號坐標與物理坐標之間關(guān)聯(lián),由于像平面在上,可省略。

(2) 像點的二維像素坐標物點的三維空間中的坐標建立CCD像面上像點物理坐標與對應(yīng)的三維空間中物點坐標之間關(guān)聯(lián)。

(3) 像點的二維CCD標號坐標物點的三維空間中的坐標連接(1)和(2)的兩個關(guān)聯(lián),也是實際進行標定得到參數(shù)

由以上三個關(guān)聯(lián)可以得到:像點標號像點坐標物點坐標。

在OpenCV及Matlab標定工具箱直接使用了(3)關(guān)聯(lián),不需要知道CCD單個像素的尺寸,因此在標定過程是得不到物理焦距的,只能得到像素焦距。

很容易發(fā)現(xiàn),(3)關(guān)聯(lián)是不約束的,也就是說,針孔相機模型本身是欠定的,通過被點亮的CCD像素我們只能知道物點在射線上,但無法確定具體的點,所以我們講,針孔相機模型是一個射線方程模型,點的射線方程:

以上的關(guān)系是在無鏡頭畸變的條件下建立的,但是實際上存在鏡頭畸變,可以理解成像點和物點之間的光線是彎曲的,要得到射線模型,要進行消除畸變。

(4) 補充消畸變模型

以像面中心像素坐標為中心,像面上的點到中心的距離為

合成畸變其中:

徑向畸變

切向畸變

把消畸變模型補充進針

孔相機模型,因此「像點標號像點坐標物點坐標」被修正為:像點標號像點坐標物點坐標消畸變后的射線方程是:

標定針孔相機模型的參數(shù)

針孔相機模型中,只要確定這9個參數(shù)就可以唯一的確定針孔相機模型, ,這個過程就稱為「相機標定」,其中前4個我們稱為內(nèi)參數(shù),后5個稱為畸變參數(shù),畸變參數(shù)是為了補充內(nèi)參的。所以一旦相機結(jié)構(gòu)固定,包括鏡頭結(jié)構(gòu)固定,對焦距離固定,我們就可以用這9個的參數(shù)去近似這個相機。這里說的「鏡頭結(jié)構(gòu)固定」,按我個人的理解,除了焦距固定之外,也應(yīng)當包含光圈固定,因為改變光圈的大小,除了景深之外,是有可能改變針孔相機模型中的光心位置,但是影響并不是很大。這意味著標定好的相機如果改變光圈大小,會使得標定誤差變大但應(yīng)該不會大到難以接受的地步。對于針孔相機本身需要擬合的方程如下:

其中 代表了畸變圖像和消畸變圖像之間的變換。因此,我們現(xiàn)在的任務(wù)就是找出一大堆具有對應(yīng)關(guān)系的像點 和物點 的點對作為樣本,來訓(xùn)練出模型的9個參數(shù) 。那么這里就引發(fā)了兩個問題:(1) 這么多像點和物點到底誰和誰是一對兒?(2) 即便我知道物點在哪里,可是我怎么樣用相機坐標系來表達物點的位置 ?為了解決上述的兩個問題,標定板應(yīng)運而生。標定板的第一大作用,確定物點和像點的對應(yīng)性。這里用到的原理主要是「透視不變性」,打個比方,你近看一個人和遠看一個人,雖然他的鼻子大小變了,你看鼻子的視角也變了,但是拓撲結(jié)構(gòu)肯定是不變的,你也不可能把鼻子看成是嘴巴。

所以在標定板中,印刷了拓撲結(jié)構(gòu),廣泛應(yīng)用的是棋盤格和圓點格,這兩種之所以成為主流,不僅是因為它們的拓撲結(jié)構(gòu)明確且均勻,更重要的是檢測其拓撲結(jié)構(gòu)的算法簡單且有效。棋盤格檢測的是角點,只要對拍攝到的棋盤格圖像橫縱兩個方向計算梯度就可獲得;而圓點格的檢測只需要對拍攝到的圓點格圖樣計算質(zhì)心即可。假如你開發(fā)了一套非常完美的檢測人臉全部特征的算法,你完全可以用你的照片當作標定板。按照我的經(jīng)驗,圓點格的效果應(yīng)該是好于棋盤格,因為圓點質(zhì)心的「透視不變性」要比棋盤格的角點穩(wěn)定的多。下圖是同樣尺寸、同樣比例棋盤格和圓點在最大重投影誤差處的誤差對比,紅色十字是提取的角點/質(zhì)心,綠色圓圈是針孔相機模型計算出來認為的角點/質(zhì)心位置。

下圖是棋盤格與圓點格的重投影誤差圖,顯然圓點格的重投影誤差的誤差空間要小。

但是圓點格的檢測似乎是Halcon的專利(存疑),因此OpenCV和Matlab標定工具箱用的是棋盤格,要用圓點格得要自己寫算法。下文中提到的標定板說的都是棋盤格。標定板的第二大作用是把標定板中的角點變換到相機坐標系下的坐標 。對于標定的初學(xué)者來說,很容易忽略的一點是標定板是具有標定板坐標系的。換句話說,標定板中的每個角點,在標定板坐標系下的位置是確定并且是已知的。

而標定板坐標系變換到相機坐標系的變換矩陣,我們稱它的元素為外參數(shù),所以在我眼中,相機標定的外參根本就是標定內(nèi)參的副產(chǎn)品,它會隨著標定板的擺放不同而不同,由標定板坐標系變換到相機坐標系的變換矩陣可以由下式表達:

其中, 稱為旋轉(zhuǎn)矩陣, 稱為平移矩陣,下表 代表board to camera。注意這個坐標系的變換是一個線形變換,反應(yīng)到物理上講,這意味者標定板必須盡可能的平,如果標定板不平,這個變換就不是線形的了。我們把這個變換帶到原本要擬合的方程中去:

如此一來,我們就把能夠把CCD上拍攝的到角點的像素標號 和每一個角點已知的在標定板坐標系下的坐標 對應(yīng)起來,通過各種各樣的姿態(tài)作為樣本,訓(xùn)練出全部參數(shù) 。

至于參數(shù)訓(xùn)練的方法,最小二乘,極大似然估計等等,很容易找到相關(guān)的資料,在此不再贅述。如果用OpenCV或Matlab標定工具箱進行標定,需要給出棋盤格的物理尺寸,這其實就是在建立標定板坐標系,從測量的角度講,標定板的精度是相機標定精度的基準,是誤差傳遞鏈上的第一個環(huán)節(jié)。所以為了使針孔相機模型更逼近真實相機,對標定板的質(zhì)量有以下要求(按重要性順序):

標定板的平面度高,棋盤格是直角;

標定板每個格子尺寸的高一致性;

真實尺寸與標稱尺寸的差異小。

向祖師爺張正友致敬。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 相機
    +關(guān)注

    關(guān)注

    4

    文章

    1422

    瀏覽量

    54414
  • 機器視覺
    +關(guān)注

    關(guān)注

    163

    文章

    4488

    瀏覽量

    121928
  • 計算機視覺
    +關(guān)注

    關(guān)注

    9

    文章

    1705

    瀏覽量

    46492

原文標題:相機標定究竟在標定什么?

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    相機標定示例(OpenCV /C++ /matlab工具箱TOOLBOX_calib)精選資料分享

    這里相機標定主要內(nèi)容包括:圖像的采集、相機參數(shù)獲取、TOOLBOX_calib可視化描述一、相機標定感謝博主的代碼分享,這里主要參考了一些(
    發(fā)表于 08-18 07:24

    CALIBRATION相機標定模塊

    matrox mil開發(fā)資料:CALIBRATION相機標定模塊
    發(fā)表于 12-10 16:32 ?8次下載

    相機標定介紹

    什么是攝相機標定?攝相機標定方法的分類?感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-22 12:04 ?0次下載

    opencv相機標定原理與步驟

    我們首先介紹下計算機視覺領(lǐng)域中常見的三個坐標系:圖像坐標系,相機坐標系,世界坐標系。以及他們之間的關(guān)系。然后介紹如何使用張正友相機標定標定相機。攝像機
    發(fā)表于 12-04 16:56 ?1.9w次閱讀
    opencv<b class='flag-5'>相機</b><b class='flag-5'>標定</b>原理與步驟

    TI的邏輯器件詳細中文資料概述

    本文檔的主要內(nèi)容詳細介紹的是TI的邏輯器件中文資料概述
    發(fā)表于 07-02 08:00 ?10次下載
    TI的<b class='flag-5'>邏輯</b>器件<b class='flag-5'>詳細</b>中文<b class='flag-5'>資料</b><b class='flag-5'>概述</b>

    數(shù)字電子技術(shù)教程之邏輯代數(shù)基礎(chǔ)的詳細資料概述

    本文檔的主要內(nèi)容詳細加速度是數(shù)字電子技術(shù)教程之邏輯代數(shù)基礎(chǔ)的詳細資料概述包括了:概述2 .邏輯
    發(fā)表于 10-17 08:00 ?0次下載
    數(shù)字電子技術(shù)教程之<b class='flag-5'>邏輯</b>代數(shù)基礎(chǔ)的<b class='flag-5'>詳細資料</b><b class='flag-5'>概述</b>

    數(shù)字電路基礎(chǔ)教程之時序邏輯電路的詳細資料概述

    本文檔的主要內(nèi)容詳細介紹的是數(shù)字電路基礎(chǔ)教程之時序邏輯電路的詳細資料概述。內(nèi)容包括了:1.時序邏輯電路分析2.若干常用時序
    發(fā)表于 10-17 08:00 ?0次下載
    數(shù)字電路基礎(chǔ)教程之時序<b class='flag-5'>邏輯</b>電路的<b class='flag-5'>詳細資料</b><b class='flag-5'>概述</b>

    STM32Cube學(xué)習教程之時鐘樹配置的詳細資料概述

    本文檔的主要內(nèi)容詳細介紹的是STM32Cube學(xué)習教程之時鐘樹配置的詳細資料概述。
    發(fā)表于 08-14 08:00 ?3次下載
    STM32Cube<b class='flag-5'>學(xué)習</b>教程之時鐘樹配置的<b class='flag-5'>詳細資料</b><b class='flag-5'>概述</b>

    應(yīng)該如何學(xué)習STM32資料概述

    本文檔的主要內(nèi)容詳細介紹的是教你應(yīng)該如何學(xué)習STM32資料概述
    發(fā)表于 11-08 14:45 ?27次下載
    應(yīng)該如何<b class='flag-5'>學(xué)習</b>STM32<b class='flag-5'>資料</b><b class='flag-5'>概述</b>

    HALCON的3D相機標定

    轉(zhuǎn)自:微信公眾號AI圖像 創(chuàng)建標定數(shù)據(jù)模型 你可以用算子create_calib_data創(chuàng)建一個標定數(shù)據(jù)模型,指定相機標定物體的數(shù)量。當用一個
    的頭像 發(fā)表于 10-31 11:31 ?4395次閱讀
    HALCON的3D<b class='flag-5'>相機</b><b class='flag-5'>標定</b>

    相機標定含義(解決什么是相機標定

    在大多數(shù)條件下,這些參數(shù)必須通過實驗與計算才能得到。無論是在圖像測量或者機器視覺應(yīng)用中,相機參數(shù)的標定都是非常關(guān)鍵的環(huán)節(jié),其標定結(jié)果的精度及算法的穩(wěn)定性直接影響相機工作產(chǎn)生結(jié)果的準確性
    的頭像 發(fā)表于 06-21 11:12 ?8604次閱讀

    基于深度學(xué)習相機標定技術(shù)挑戰(zhàn)

    該數(shù)據(jù)集包括了不同仿真環(huán)境下生成的合成數(shù)據(jù),以及不同場景下由各類真實相機采集到的圖像和視頻序列。每一個數(shù)據(jù)樣本均提供了準確的標定結(jié)果、相機參數(shù)、或視覺線索。
    發(fā)表于 04-10 10:45 ?477次閱讀

    如何學(xué)習相機模型與標定?

    相機標定是通過輸入帶有標定patter的標定板來獲得相機參數(shù)的一個過程。實際的光學(xué)成像是一套非常復(fù)雜的過程,從三維世界投影到
    的頭像 發(fā)表于 06-01 14:36 ?937次閱讀
    如何<b class='flag-5'>學(xué)習</b><b class='flag-5'>相機</b>模型與<b class='flag-5'>標定</b>?

    雙目相機標定的原理和方法

    首先,課程介紹了雙目相機標定的基礎(chǔ)知識。我了解到雙目相機是由兩個相機組成的系統(tǒng),通過同時拍攝目標物體的兩個視角來獲取三維信息。
    的頭像 發(fā)表于 07-03 14:25 ?3650次閱讀
    雙目<b class='flag-5'>相機</b><b class='flag-5'>標定</b>的原理和方法

    相機標定究竟在標定什么?

    這個逼近的過程就是「相機標定」,我們用簡單的數(shù)學(xué)模型來表達復(fù)雜的成像過程,并且求出成像的反過程。標定之后的相機,可以進行三維場景的重建,即深度的感知,這是計算機視覺的一大分支。
    的頭像 發(fā)表于 10-18 17:00 ?1205次閱讀
    <b class='flag-5'>相機</b><b class='flag-5'>標定</b>究竟在<b class='flag-5'>標定</b>什么?

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品