<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 使用 Ladybug 相機呈現的幾何視覺(jué)

使用 Ladybug 相機呈現的幾何視覺(jué)

發(fā)布人:12345zhi 時(shí)間:2023-07-27 來(lái)源:工程師 發(fā)布文章

相機系統的六個(gè)傳感器通過(guò)精確校準傳感器的物理位置和方向以及鏡頭的失真模型,從而實(shí)現有效的圖像變形和圖像拼接。此校準還能夠對圖像數據進(jìn)行攝影測量分析。本應用說(shuō)明描述了如何在相機坐標系和單個(gè)傳感器之間進(jìn)行映射。

1  Ladybug 相機上的坐標系

每個(gè)鏡頭都有自己的右手 3D 坐標系。還有一個(gè)Ladybug 3D 坐標系,它與整個(gè)相機相關(guān)聯(lián)。這使每個(gè) Ladybug 相機上總共有七個(gè) 3D 坐標系。此外,每個(gè)傳感器都有一個(gè) 2D 像素網(wǎng)格坐標系。

鏡頭 3D 坐標系

六個(gè)鏡頭中每個(gè)鏡頭都有自己的右手 3D 坐標系。

● 原點(diǎn)是鏡頭的光學(xué)中心

● Z 軸從傳感器指向場(chǎng)景–即光軸

● X 軸和 Y 軸相對于與該鏡頭相關(guān)的圖像傳感器的像素網(wǎng)格

● Y 軸指向圖像列。Y 軸正方向為升序行號的方向。這從法線(xiàn)方向圖像的視點(diǎn)指向下方

● X 軸指向圖像行。X 軸正方向為升序列號的方向。這指向法線(xiàn)方向圖像的右側

● 此坐標系用于表示每個(gè)鏡頭/傳感器的視點(diǎn)的 3D 空間。其單位是米,而不是像素。

圖片

圖 1:3D 傳感器坐標

傳感器 2D 坐標系

每個(gè)傳感器都有自己的右手 3D 坐標系。

● u 軸和 v 軸是基于圖像的校正后的圖像空間的 2D 圖像坐標系,以像素為單位測量

● 坐標系的原點(diǎn)位于光軸和校正后圖像平面的交點(diǎn)處,每個(gè)傳感器的坐標系的原點(diǎn)都不同

● u 軸沿圖像傳感器行指向升序列號方向(即向右)

● v 軸沿列指向升序行號方向(即向下)。

圖片

圖 2:2D 傳感器坐標

Ladybug 相機坐標系

Ladybug 相機坐標系位于 Ladybug 外殼的中心,由 6 個(gè)鏡頭坐標系的位置決定。

原點(diǎn)是五個(gè)水平攝像頭原點(diǎn)的中心

Z 軸平行于頂部鏡頭的光軸(鏡頭 5)(*)

X 軸平行于鏡頭 0 的光軸 (*)

Y 軸與基于 X 軸和 Z 軸的右手坐標系一致

LD2 – LD3 – LD5可能會(huì )有一些變化

(*) 注意 –由于裝配容差,鏡頭 5 和鏡頭 0 的光軸通常不會(huì )完全垂直。Ladybug 相機坐標系的 X 軸經(jīng)過(guò)微調,以確保它們垂直。

圖片

圖 3:全局坐標

2  相對鏡頭坐標系和 Ladybug 坐標系

可從 Ladybug API 檢索每個(gè)鏡頭坐標系相對于 Ladybug 坐標系的位置。首先,使用 ladybuggeom.h 中定義的 ladybugGetCameraUnitExtrinsics() 檢索 3D 變換和歐拉角旋轉。

/**

* 獲取指定相機單元的 6-D 外參矢量。

*

* 6-D 外參矢量符合 EulerZYX 慣例(參見(jiàn) Craig 的

*《機器人學(xué)導論》 第 45-49 頁(yè))。外參分量的

* 順序為:

*

* - 元素 0 - Rx - 繞 X 軸旋轉(弧度)

* - 元素 1 - Ry - 繞 Y 軸旋轉(弧度)

* - 元素 2 - Rz - 繞 Z 軸旋轉(弧度)

* - 元素 3 - Tx - 沿 X 軸平移(米)

* - 元素 4 - Ty - 沿 Y 軸平移(米)

* - 元素 5 - Tz - 沿 Z 軸平移(米)

*

* 所謂外參,意思是指對應的 4x4 變換矩陣

* 允許將本地相機單元坐標中的點(diǎn)映射到

* Ladybug 坐標系中的坐標。其中 s=sin,c=cos,矩陣的格式

* 如下所示。

*

* 示例:

* 要將其映射到 Craig 的矩陣中:

* - Rz = α

* - Ry = β

* - Rx = γ

*

* - |X'| |((cRz)(cRy)) ((cRz)(sRy)(sRx)-(sRz)(cRx)) ((cRz)(sRy)(cRx)+(sRz)(sRx)) Tx||X|

* - |Y'|=|((sRz)(cRy)) ((sRz)(sRy)(sRx)+(cRz)(cRx)) ((sRz)(sRy)(cRx)-(cRz)(sRx)) Ty||Y|

* - |Z'| |((-sRy)) ((cRy)(sRx)) ((cRy)(cRx))) Tz||Z|

* - |1 | |0 0 0 1 ||1|

*

* @param context - 要訪(fǎng)問(wèn)的 LadybugContext。

* @param uiCamera - 感興趣的相機指數。

* @param ardEulerZYX - 返回的 6-D EulerZYX 外參矢量。

*

* @return A LadybugError 表示該函數成功。

*/

LADYBUGDLL_API LadybugError

ladybugGetCameraUnitExtrinsics(

LadybugContext context,

unsigned int uiCamera,

double ardEulerZYX[6] );

請注意,該函數注釋說(shuō)明了如何將提供的歐拉角(Rx、Ry、Rz)和平移(Tx、Ty、Tz)轉換為 4x4 變換 T。使用標準齊次變換公式:

圖片

圖片

在適當的坐標系中。

一旦獲得此齊次變換,它就可以用于計算 Ladybug 坐標系中的鏡頭坐標系原點(diǎn),或 Ladybug 坐標系中鏡頭坐標系的坐標軸,反之亦然。

3  將像素位置轉換為 3D 射線(xiàn)

使用 Ladybug 相機進(jìn)行幾何視覺(jué)時(shí)的一個(gè)常見(jiàn)任務(wù)是將特定圖像中的像素位置解釋為 Ladybug 坐標系中的 3D 射線(xiàn)。存在可以從中提取像素的各種圖像空間,例如球型、圓柱形、校正或原始圖像空間。鼓勵用戶(hù)將原始圖像用于此類(lèi)應用。原始圖像是唯一未重采樣的圖像,因此在查找或跟蹤圖像特征時(shí)可提供最佳精確度。

要將原始圖像中的像素位置轉換為 Ladybug 坐標系中的 3D 射線(xiàn),應采取以下步驟:

1. 使用 ladybugGetCameraUnitFocalLength() 獲取相應鏡頭的焦距

2. ladybugGetCameraUnitImageCenter() 獲取鏡頭的圖像中心

3. 使用 ladybugGetCameraUnitExtrinsics() 獲取相機的 6D 外參矢量(歐拉角和平移)

4. 使用 ladybugRectifyPixel() 校正 2D 像素位置

5. 查找此校正圖像位置的(u,v)像素坐標

6. 將校正后的 2D 像素位置變換成本地相機坐標系內的 3D 射線(xiàn)

7. 在 Labybug 坐標系中將局部 3D 射線(xiàn)轉換為 3D 射線(xiàn)

要從校正(列、行)圖像位置查找(u,v)像素位置,必須考慮圖像中心信息:

圖片

圖片

其中

圖片

等于像素行位置, 等于圖像中心行位置。

通過(guò)使用標準針孔相機模型解釋校正圖像,可以將校正圖像位置(u,v)轉換為局部 3D 射線(xiàn)值。請注意,為相機獲得的焦距和圖像中心以像素為單位,僅適用于指定相機的校正圖像。為了從經(jīng)校正的 2D 像素位置計算局部 3D 射線(xiàn),Z 是任意的,并且可以設置為 1。然后應用針孔模型方程,可以得出:

圖片

圖片

圖片

矢量 。要將此矢量轉換為 Ladybug 坐標系,只需應用第 1.5 節中所示的齊次變化的 3x3 旋轉分量:

圖片

其中 R 是 T 的左上角 3x3 子矩陣。此矢量的原點(diǎn)將是轉換為 Ladybug 相機坐標系的局部坐標系的原點(diǎn),或

圖片

4  將像素位置轉換為

鏡頭偏移校正的 3D 射線(xiàn)

由于每個(gè)鏡頭中心都與 Ladybug 坐標系的中心有偏移,因此將 2D 原始像素映射到 3D 射線(xiàn)的過(guò)程很復雜。為了獲得最準確的結果,射線(xiàn)必須同時(shí)具有起點(diǎn)和方向,而不僅僅是從 Ladybug 坐標系中心發(fā)出的方向。

映射原始像素分兩個(gè)步驟進(jìn)行:

1. 將原始像素映射到其校正坐標 – API:ladybugRectifyPixel()

/**

* 將失真(原始)像素位置映射到校正圖像的

* 對應點(diǎn)。

*

* 該函數必須在 ladybugSetOffScreenImageSize() 之后調用,

* 該函數設置校正圖像的分辨率。

*

* @param context - 要訪(fǎng)問(wèn)的 LadybugContext。

* @param uiCamera - 此圖像對應的相機指數。

* @param dDistortedRow - 要映射的失真(原始)像素的行坐標。

* @param dDistortedCol - 要映射的失真(原始)像素的列坐標。

* @param pdRectifiedRow - 返回校正圖像中同一點(diǎn)

* 行坐標的位置。

* @param pdRectifiedCol - 返回校正圖像中同一點(diǎn)

* 列坐標的位置。

*

* @return A LadybugError 表示該函數成功。

* 如果任何通道所選區域的

* 平均強度超過(guò) 254/255,則返回 LADYBUG_OVEREXPOSED。

*

* @see ladybugSetOffScreenImageSize()

*/

LADYBUGDLL_API LadybugError

ladybugRectifyPixel(

LadybugContext context,

unsigned int uiCamera,

double dDistortedRow,

double dDistortedCol,

double* pdRectifiedRow,

double* pdRectifiedCol

2. 將校正后的坐標映射到射線(xiàn)位置和方向 – API:ladybugRCtoXYZ()

/**

* 將特定相機單元上的 2D 點(diǎn)投影到 Ladybug 坐標系中的

* 3D 射線(xiàn)中。射線(xiàn)被定義為其起點(diǎn)和方向。

* 起點(diǎn)考慮相機單元與

* ladybug 相機中心偏移,這使得在不同于拼接半徑的距離處

* 精確投影射線(xiàn)。

*

* @param context - 要訪(fǎng)問(wèn)的 LadybugContext。

* @param dRectifiedRow - 2D 輸入點(diǎn)的校正行。

* @param dRectifiedCol - 2D 輸入點(diǎn)的校正列。

* @param uiCamera - 相機單元。

* @param pdLocationX - 輸出射線(xiàn)位置 x 分量。

* @param pdLocationY - 輸出射線(xiàn)位置 y 分量。

* @param pdLocationZ - 輸出射線(xiàn)位置 z 分量。

* @param pdDirectionX - 輸出射線(xiàn)方向 x 分量。

* @param pdDirectionY - 輸出射線(xiàn)方向 y 分量。

* @param pdDirectionZ - 輸出射線(xiàn)方向 z 分量。

*

* @return A LadybugError 表示該函數成功。

*/

LADYBUGDLL_API LadybugError

ladybugRCtoXYZ(

LadybugContext context,

double dRectifiedRow,

double dRectifiedCol,

unsigned int uiCamera,

double* pdLocationX,

double* pdLocationY,

double* pdLocationZ,

double* pdDirectionX,

double* pdDirectionY,

double* pdDirectionZ);

該映射類(lèi)型的示例代碼以及其他不嚴重依賴(lài) API 功能的映射類(lèi)型,可在 Ladybug SDK 隨附的 ladybugTranslate2dTo3d 示例中獲得。

5  將 3D 點(diǎn)轉換為像素位置

將第 1.6 和 1.7 節中描述的像素轉換為 3D 問(wèn)題略微復雜,因為需要首先找到 3D 點(diǎn)將投影到哪個(gè)鏡頭中。否則,可以直接使用函數 ladybugXYZtoRC() 完成。函數頭信息如下所示。

/**

* 將 3D 點(diǎn)(相對于 Ladybug 坐標系)投影到

* 指示的相機單元,并返回其將位于其校正圖像的

* 位置。

*

* @param context - 要訪(fǎng)問(wèn)的 LadybugContext。

* @param dLadybugX - 要投影的點(diǎn)的 X 坐標。

* @param dLadybugY - 要投影的點(diǎn)的 Y 坐標。

* @param dLadybugZ - 要投影的點(diǎn)的 Z 坐標。

* @param uiCamera - 此圖像對應的相機指數。

* @param pdRectifiedRow - 返回的 3D 點(diǎn)所在的校正行位置

* (如果該點(diǎn)為投影到校正圖像,

* 則將則小于 0)。

* @param pdRectifiedCol - 返回的 3D 點(diǎn)所在的校正列位置

* (如果該點(diǎn)為投影到校正圖像,

* 則將則小于 0)。

* @param pdNormalized - 從校正像素到焦點(diǎn)中心的距離

* 以焦距為標準。如果調用者對此值不感興趣,

* 可設置為 NULL。

*

* @return A LadybugError 表示該函數成功。

*/

LADYBUGDLL_API LadybugError

ladybugXYZtoRC(

LadybugContext context,

double dLadybugX,

double dLadybugY,

double dLadybugZ,

unsigned int uiCamera,

double* pdRectifiedRow,

double* pdRectifiedCol,

double* pdNormalized);

為了確定一個(gè) 3D 點(diǎn)將投影到哪個(gè)鏡頭中,該函數可用于 6 個(gè)鏡頭位置中的每一個(gè)(通過(guò)適當設置 uiCamera 參數)。如果返回代碼成功 (LADYBUG_OK),則由 dLadybugX、Y 和 Z 定義的 3D 點(diǎn)就會(huì )投影到相機 uiCamera 中的 pdRectifiedRow 和 pdRectifiedCol 提供的校正行和列位置??梢允褂?ladybugUnrectifypPixel 來(lái)確定原始圖像中像素的位置。

6  校準精確度

Ladybug 相機的平均精確度在 10 m 距離為 2 mm,即 0.0116 度,如下圖所示。

圖片

局部到 Ladybug 轉換誤差

相對于 Ladybug 相機坐標系,數學(xué)模型與鏡頭的實(shí)際位置和方向匹配程度存在誤差。這與實(shí)際物理位置與相機校準期間計算的位置之間的差異有關(guān)。

這與以下方面有關(guān):

● 相對鏡頭坐標系和 Ladybug 坐標系

● 將 3D 點(diǎn)轉換為像素位置

校正誤差

數學(xué)模型與潛在的鏡頭失真的匹配程度存在誤差。

這與以下方面有關(guān):

● 將像素位置轉換為 3D 射線(xiàn)

● 將 3D 點(diǎn)轉換為像素位置

相機中心視差誤差

視差誤差是額外的誤差來(lái)源,不包括在上述 10 米距離為 2 毫米的精確度內。

視差誤差是從兩個(gè)不同的起始位置指向同一目的地的兩條射線(xiàn)之間的差異。在這種情況下,位置差異在鏡頭中心和相機坐標中心之間。

下圖顯示了在鏡頭中心位于實(shí)際位置和透鏡中心位于 Ladybug 坐標系中心之間時(shí)。觀(guān)察 3D 空間中同一點(diǎn)的角度差。

圖片

圖片

圖片

圖片

*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: Ladybug 相機

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>