日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

认知机器人:相机校准

發(fā)布時(shí)間:2024/3/12 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 认知机器人:相机校准 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文章收錄在黑鯨智能系統(tǒng)知識(shí)庫(kù)-黑鯨智能系統(tǒng)知識(shí)庫(kù)成立于2021年,致力于建立一個(gè)完整的智能系統(tǒng)知識(shí)庫(kù)體系。我們的工作:收集和整理世界范圍內(nèi)的學(xué)習(xí)資源,系統(tǒng)地建立一個(gè)內(nèi)容全面、結(jié)構(gòu)合理的知識(shí)庫(kù)。

作者博客:途中的樹

在機(jī)器人的感知系統(tǒng)中,有時(shí)我們需要攝像機(jī)來構(gòu)建三維世界的投影圖像,這篇文章來聊一聊

攝像機(jī)模型

  • 描述了一個(gè)三維世界點(diǎn)在攝像機(jī)圖像中的投影。
  • 假設(shè)
    • 有一個(gè)無限小的小孔的盒子
  • 攝像機(jī)中心是射線的交匯點(diǎn)(針孔)。
  • 后墻是圖像平面image plane
  • 攝像機(jī)中心和圖像平面之間的距離是攝像機(jī)常數(shù)Camera constant

在歐幾里德幾何學(xué)中描述這種變換是比較困難的,不過在射影幾何中就簡(jiǎn)單許多,射影幾何的變換可以在齊次坐標(biāo)系下表示

  • 射影幾何 Projective geometry是幾何變換的一個(gè)可替代方法
  • 齊次坐標(biāo)系homogenous coordinates 在機(jī)器人學(xué)中廣泛應(yīng)用
  • 優(yōu)勢(shì):在射影幾何中仿射變換和投影變換可以用一個(gè)矩陣的乘法來傳達(dá)

相機(jī)校準(zhǔn)

  • 相機(jī)可以將三維世界的點(diǎn)投射到二維圖像平面上
  • 校準(zhǔn)的影響因素
    • 圖片中心
    • 焦距
    • 鏡頭畸變參數(shù)
  • 為什么需要校準(zhǔn)
    • 便宜的鏡頭,相機(jī)的制作過程中都會(huì)產(chǎn)生誤差
    • 精確的校準(zhǔn)是非常必要的
      • 圖像3D信息解釋
      • 重建地圖模型
      • 機(jī)器人與環(huán)境的互動(dòng)(手眼協(xié)調(diào))

Pinhole相機(jī)的三個(gè)假設(shè)

  • 來自物體的所有射線相交于一個(gè)點(diǎn)
  • 所有圖像點(diǎn)都被投射在一個(gè)平面上
  • 從物體點(diǎn)到圖像的射線點(diǎn)是一條直線
    • 當(dāng)然這些假設(shè)往往不成立,導(dǎo)致圖像不完美

    鏡頭和針孔的區(qū)別

    • 鏡頭只是針孔相機(jī)模型的一個(gè)近似值
    • 物體上和圖像中的相應(yīng)點(diǎn),以及鏡頭的中心通常不在一條線上
    • 光束通過透鏡中心的距離越遠(yuǎn),誤差就越大

    坐標(biāo)系框架

    • 環(huán)境坐標(biāo)系 World coordinate frame SoS_oSo?
      • 表示為 [X,Y,Z]T[X,Y,Z]^T[X,Y,Z]T
    • 相機(jī)坐標(biāo)系 Camera coordinate frame SkS_kSk?
      • 表示為 [kX,kY,kZ]T[^kX,^kY,^kZ]^T[kX,kY,kZ]T
    • 圖像坐標(biāo)系 image coordinate frame ScS_cSc?
      • 表示為 [cx,cy]T[^cx,^cy]^T[cx,cy]T
    • 傳感器坐標(biāo)系 Sensor coordinate SsS_sSs?
      • 表示為 [sx,sy]T[^sx,^sy]^T[sx,sy]T

    坐標(biāo)系轉(zhuǎn)換 Transformation

    • 我們想要從傳感器坐標(biāo)系轉(zhuǎn)換到環(huán)境坐標(biāo)系

    • 其中環(huán)境坐標(biāo)系SoS_oSo? 到相機(jī)坐標(biāo)系SkS_kSk?屬于外在轉(zhuǎn)換
      • 外在參數(shù)描述攝像機(jī)在環(huán)境中的姿態(tài)
    • 其他的轉(zhuǎn)換屬于內(nèi)在轉(zhuǎn)換
      • 內(nèi)在參數(shù)描述了相機(jī)前的場(chǎng)景與最終圖像(傳感器)中的像素的映射關(guān)系

    假設(shè)一個(gè)點(diǎn)P\mathcal{P}P

    外在參數(shù)

    • 攝像機(jī)相對(duì)于世界的姿態(tài)
    • 可逆變換 Invertible transformation
    • How many parameters are needed?
      • 6個(gè):3個(gè)位置參數(shù)+3個(gè)方向參數(shù)
    • 在環(huán)境坐標(biāo)系中點(diǎn)P\mathcal{P}P的坐標(biāo)為 XP=[XP,YP,ZP]T\mathrm{X}_P=[X_P,Y_P,Z_P]^TXP?=[XP?,YP?,ZP?]T
    • 在相機(jī)坐標(biāo)系中圓點(diǎn)的坐標(biāo)(在環(huán)境坐標(biāo)系中的坐標(biāo))為 XO=[XO,YO,ZO]T\mathrm{X}_O=[X_O,Y_O,Z_O]^TXO?=[XO?,YO?,ZO?]T
    • 在下文中,我們將看到為什么與歐幾里得坐標(biāo)相比,H.C.是描述變換的更好選擇

    環(huán)境坐標(biāo)系轉(zhuǎn)換到相機(jī)坐標(biāo)系 So→SkS_o \rightarrow S_kSo?Sk?

    直覺上講,知道了環(huán)境坐標(biāo)系中的坐標(biāo),也知道的相機(jī)坐標(biāo)系的坐標(biāo),想將點(diǎn)坐標(biāo)從環(huán)境坐標(biāo)系轉(zhuǎn)換到相機(jī)坐標(biāo)系,可以先做一個(gè)平移和旋轉(zhuǎn) kXP=R(XP?XO)^kX_P=R(X_P-X_O)kXP?=R(XP??XO?),當(dāng)然這是在歐式坐標(biāo)系中的表示

    如果放到H.C.齊次坐標(biāo)系中,則為

    • [kXp1]=[R00T1][I3?XO0T1][XP1]=[R?RXO0T1][XP1]\begin{bmatrix} ^kX_p \\ 1 \end{bmatrix} = \begin{bmatrix} R & 0 \\ 0^\mathrm{T} & 1 \end{bmatrix}\begin{bmatrix} I_3 & -X_O \\ 0^\mathrm{T} & 1 \end{bmatrix}\begin{bmatrix} X_{P} \\ 1 \end{bmatrix}= \begin{bmatrix} R & -RX_O \\ 0^\mathrm{T} & 1 \end{bmatrix}\begin{bmatrix} X_P \\ 1 \end{bmatrix}[kXp?1?]=[R0T?01?][I3?0T??XO?1?][XP?1?]=[R0T??RXO?1?][XP?1?]
    • 或者寫為kXP=kHXP^k\mathrm{X}_P=^k\mathrm{HX}_PkXP?=kHXP?kH=[R?RXO0T1]^k\mathrm{H}= \begin{bmatrix} R & -RX_O \\ 0^\mathrm{T} & 1 \end{bmatrix}kH=[R0T??RXO?1?]

    內(nèi)在參數(shù)

    • 將點(diǎn)從相機(jī)框架投射到傳感器框架的過程
    • 可逆變換
      • 圖像平面到傳感器框架
      • 模型偏差
    • 不能直接倒置:投影
    • 理想狀態(tài)下的投影可以分為三步
    • 將透視投影投射到圖像平面上
    • 轉(zhuǎn)換到傳感器坐標(biāo)系框架(像素)
    • 前面兩個(gè)映射步驟是理想化的,需要進(jìn)行校正,或者說補(bǔ)償compensation

    相機(jī)坐標(biāo)系到圖像坐標(biāo)系

    • 在圖像坐標(biāo)系統(tǒng)中:
      • 我們定義一個(gè)相機(jī)常數(shù) ccc 用來表示投影中心(小孔位置)OOO到圖像平面中心H\mathcal{H}H的距離
      • 該值是作為相機(jī)校準(zhǔn)的一部分計(jì)算出來的
      • c<0c<0c<0情況如下圖

    如果上圖的透視投影是沒誤差的,根據(jù)截?cái)喽ɡ韼缀侮P(guān)系我們可以得到點(diǎn)P\mathcal{P}P (3D)在圖像平面上的投影點(diǎn)P ̄\overline{\mathcal{P}}P(3D)的坐標(biāo)[cxP ̄,cyP ̄][^cx_{\overline{\mathcal{P}}},^cy_{\overline{\mathcal{P}}}][cxP?,cyP?],

    cxP ̄:=kXP ̄=ckXPkZP^cx_{\overline{\mathcal{P}}}:=^kX_{\overline{\mathcal{P}}}=c\frac{^kX_{\mathcal{P}}}{^kZ_{\mathcal{P}}}cxP?:=kXP?=ckZP?kXP??

    cyP ̄:=kYP ̄=ckXPkZP^cy_{\overline{\mathcal{P}}}:=^kY_{\overline{\mathcal{P}}}=c\frac{^kX_{\mathcal{P}}}{^kZ_{\mathcal{P}}}cyP?:=kYP?=ckZP?kXP??

    H.C. 齊次坐標(biāo)模式

    cxP ̄=[cuP ̄cvP ̄cwP ̄]=[c0000c000010][cXPcYPcZP1]^c\mathrm{x}_{\overline{\mathcal{P}}}= \begin{bmatrix} ^cu_{\overline{P}}\\^cv_{\overline{P}}\\^cw_{\overline{P}} \end{bmatrix} = \begin{bmatrix} c & 0 & 0 & 0\\0 & c & 0 & 0\\0 & 0 & 1 & 0 \end{bmatrix}\begin{bmatrix} ^cX_P\\^cY_P\\^cZ_P\\1 \end{bmatrix}cxP?=???cuP?cvP?cwP?????=???c00?0c0?001?000?????????cXP?cYP?cZP?1??????

    可以寫成 cxP ̄=cPkkXP^c\mathrm{x}_{\overline{\mathcal{P}}}= ^c\mathrm{P}_k \\ ^k\mathrm{X}_PcxP?=cPk?kXP? with cPk=[c0000c000010]^c\mathrm{P}_k =\begin{bmatrix} c & 0 & 0 & 0\\0 & c & 0 & 0\\0 & 0 & 1 & 0 \end{bmatrix}cPk?=???c00?0c0?001?000????這定義了從相機(jī)框架中的一個(gè)點(diǎn)到圖像框架的投影

    環(huán)境坐標(biāo)系到圖像坐標(biāo)系

    • 如此結(jié)合一下前面的兩部轉(zhuǎn)換,從世界框架到相機(jī)框架的轉(zhuǎn)換,然后投射到圖像框架中(H.C.)

      cxP ̄=cPX^c\mathrm{x}_{\overline{\mathcal{P}}}= ^c\mathrm{P}\mathrm{X}cxP?=cPX with cP=cPkkH=[c0000c000010][R?RXO0T1]^c\mathrm{P}=^c\mathrm{P}_k {^k\mathrm{H}}=\begin{bmatrix} c & 0 & 0 & 0\\0 & c & 0 & 0\\0 & 0 & 1 & 0 \end{bmatrix}\begin{bmatrix} R & -RX_O \\ 0^\mathrm{T} & 1 \end{bmatrix}cP=cPk?kH=???c00?0c0?001?000????[R0T??RXO?1?]

    • 理想相機(jī)的校準(zhǔn)矩陣 cK=[c000c0001]^c\mathrm{K}=\begin{bmatrix} c & 0 & 0\\0 & c & 0\\0 & 0 & 1\\\end{bmatrix}cK=???c00?0c0?001????

    • 我們可以把整個(gè)映射寫成右圖

    • 各種矩陣變換,就不細(xì)說了下面寫一下最后結(jié)果

    • 校準(zhǔn)矩陣
      • 現(xiàn)在我們有cP=cKR[I3∣?XO]^c\mathrm{P}=^c\mathrm{K}R[I_3|-X_O]cP=cKR[I3??XO?]
      • 所以現(xiàn)在把一個(gè)點(diǎn)映射到圖像層為 cx=cKR[I3∣?XO]X^c\mathrm{x}=^c\mathrm{K}R[I_3|-X_O]\mathrm{X}cx=cKR[I3??XO?]X
      • 最后得到H.C.坐標(biāo)為 cx^c\mathrm{x}cx
        • [cu′cv′cw′]=[c000c0001][r11r12r13r21r22r23r31r32r33][X?XOY?YOZ?ZO]\begin{bmatrix} ^cu'\\^cv'\\^cw' \end{bmatrix} = \begin{bmatrix} c & 0 & 0 \\0 & c & 0 \\0 & 0 & 1 \end{bmatrix}\begin{bmatrix} r_11 & r_12 & r_13 \\r_21 & r_22 & r_23 \\r_31 & r_32 & r_33 \end{bmatrix}\begin{bmatrix} X-X_O\\Y-Y_O\\Z-Z_O \end{bmatrix}???cucvcw????=???c00?0c0?001???????r1?1r2?1r3?1?r1?2r2?2r3?2?r1?3r2?3r3?3???????X?XO?Y?YO?Z?ZO?????

    環(huán)境坐標(biāo)到傳感器坐標(biāo)

    • 現(xiàn)在要把圖像層映射到傳感器層

    • 假設(shè)圖像層到傳感器層是線性誤差

    • 主點(diǎn)在圖像平面中的位置(偏移)

    • 基于芯片設(shè)計(jì)的x和y的比例差異

    • 圖像層的中心點(diǎn)的位置

      • 傳感器坐標(biāo)系的中心點(diǎn)(0,0)(0,0)(0,0)并不是圖像的中心點(diǎn)
      • 通過移位來補(bǔ)償偏移
      • cHc=[10xH01yH001]^c\mathrm{H}_c=\begin{bmatrix} 1 & 0 & x_{\mathrm{H}}\\0 & 1 & y_{\mathrm{H}}\\0 & 0 & 1\\\end{bmatrix}cHc?=???100?010?xH?yH?1????

    • 比例差別
      • cHc=[10xH01+myH001]^c\mathrm{H}_c=\begin{bmatrix} 1 & 0 & x_{\mathrm{H}}\\0 & 1+m & y_{\mathrm{H}}\\0 & 0 & 1\\\end{bmatrix}cHc?=???100?01+m0?xH?yH?1????
    • 最后得到傳感器坐標(biāo)
      • sx=sHccKR[I3∣?XO]X^s\mathrm{x}=^s\mathrm{H}_c\\^c\mathrm{K}R[I_3|-X_O]\mathrm{X}sx=sHc?cKR[I3??XO?]X
      • K=sHccK=[10xH01+myH001][c000c0001]=[10xH0c(1+m)yH001]\mathrm{K}=^s\mathrm{H}_c\\^c\mathrm{K}=\begin{bmatrix} 1 & 0 & x_{\mathrm{H}}\\0 & 1+m & y_{\mathrm{H}}\\0 & 0 & 1\\\end{bmatrix}\begin{bmatrix} c & 0 & 0 \\0 & c & 0 \\0 & 0 & 1 \end{bmatrix}=\begin{bmatrix} 1 & 0 & x_{\mathrm{H}}\\0 & c(1+m) & y_{\mathrm{H}}\\0 & 0 & 1\\\end{bmatrix}K=sHc?cK=???100?01+m0?xH?yH?1???????c00?0c0?001????=???100?0c(1+m)0?xH?yH?1????

    相機(jī)參數(shù)

    • 這個(gè)就是我們要找的相機(jī)參數(shù),拋開旋轉(zhuǎn)不論
      • 這個(gè)校準(zhǔn)矩陣Calibration Matrix包含4個(gè)參數(shù)
        • 相機(jī)常數(shù)ccc
        • 中心點(diǎn) xH,yHx_H,y_HxH?,yH?
        • 比例差異 mmm

    非線性誤差補(bǔ)償

    • 到目前為止,我們只考慮了線性參數(shù)
    • 現(xiàn)實(shí)世界是非線性的
      • 不完善的鏡頭
      • 傳感器的非平面性

    • 怎么解決呢?
      • 再加最后一步校正這個(gè)非線性的影響
      • 傳感器坐標(biāo)系中與位置有關(guān)的移動(dòng)
      • 根據(jù)與圖像中心的距離,對(duì)每個(gè)像素進(jìn)行單獨(dú)移動(dòng)

    ax=sx+Δx(x,q)^ax=^sx+\Delta x(x,q)ax=sx+Δx(x,q)

    ay=sy+Δy(x,q)^ay=^sy+\Delta y(x,q)ay=sy+Δy(x,q)

    In the image

    • 來個(gè)例子吧
      • 畸變的近似值ax=x(1+qr2),ay=y(1+qr2)^ax=x(1+qr^2),^ay=y(1+qr^2)ax=x(1+qr2)ay=y(1+qr2)
      • rrr 是像素到圖像中心的距離
      • qqq 是一般映射的附加參數(shù)
    • 放到H.C.
      • ax=aHs(x,q)sx^a\mathrm{x}= ^a\mathrm{H}_s(x,q) \\ ^s\mathrm{x}ax=aHs?(x,q)sx with aHs(x,q)=[10Δx(x,q)01Δy(x,q)001]^a\mathrm{H}_s(x,q)=\begin{bmatrix} 1 & 0 & \Delta x(x,q)\\0 & 1 & \Delta y(x,q)\\0 & 0 & 1\\\end{bmatrix}aHs?(x,q)=???100?010?Δx(x,q)Δy(x,q)1????
      • ax=aHc(x,q)KR[I3∣?XO]X^a\mathrm{x}=^a\mathrm{H}_c(x,q)\mathrm{K}R[I_3|-X_O]\mathrm{X}ax=aHc?(x,q)KR[I3??XO?]X

    最終校正矩陣

    • 一般的校準(zhǔn)矩陣是通過將仿生變換的矩陣與一般的映射結(jié)合起來得到的

      • aK(x,q)=aHs(x,q)K=[10xH+Δx(x,q)0c(1+m)yH+Δy(x,q)001]^a\mathrm{K}(x,q)=^a\mathrm{H}_s(x,q)\mathrm{K}=\begin{bmatrix} 1 & 0 & x_{\mathrm{H}}+\Delta x(x,q)\\0 & c(1+m) & y_{\mathrm{H}}+\Delta y(x,q)\\0 & 0 & 1\\\end{bmatrix}aK(x,q)=aHs?(x,q)K=???100?0c(1+m)0?xH?+Δx(x,q)yH?+Δy(x,q)1????
    • 這就求得最終的映射

      • ax=aP(x,q)X^a\mathrm{x}=^a\mathrm{P}(x,q)\mathrm{X}ax=aP(x,q)X with aP(x,y)=aK(x,y)R[I3∣?XO]^a\mathrm{P}(x,y)= ^a\mathrm{K}(x,y)R[I_3|-X_O]aP(x,y)=aK(x,y)R[I3??XO?]
    • 如果Intrinsics是未知的,我們稱之為未校準(zhǔn)的攝像機(jī)

    • 如果Intrinsics是已知的,我們稱相機(jī)為校準(zhǔn)的。

    • 獲得Intrinsics的過程被稱為相機(jī)校準(zhǔn)

    總結(jié)

    以上是生活随笔為你收集整理的认知机器人:相机校准的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。