簡體   English   中英

在相機校准 (openCV) 中找到內部參數后,是否需要轉換它們

[英]Do I need to convert my intrinsic parameters after finding them in camera calibration (openCV)

我正在構建一個需要使用單目相機了解其軌跡的機器人。

我已經使用 openCV 校准了我的相機並收到了它的內在參數。 我已按照本教程進行操作。

我不明白的一件事是他的地塊的單位,他是如何設法達到米的?

我在這里閱讀了他的代碼,與單位轉換無關。 他聲稱他的單位是米。

我重寫了大部分代碼,我所有的情節都非常混亂。 當我測試它走1米時,它可以說我走了8米。

我從校准中收到了以像素為單位的內在參數,我從樹莓派攝像頭網站找到了以毫米為單位的焦距和以微米為單位的像素大小。

我想我需要使用這兩個將我的內部參數轉換為儀表。 在任何地方都找不到關於此的文檔。 那會解決我的問題嗎?

distance (in meters) = (focal length (in mm) * object size (in pixels)) / (object size (in pixels) * pixel size (in um))

例如,如果您有一個 object,寬度為 50 像素,相機的焦距為 5 毫米,相機的像素大小為 0.0026 毫米(2.6um),則可以按如下方式計算 object 的物理寬度: (5 * 50) / (50 * 2.6 * 10^-6) = 0.96 米

請記住,此等式假設相機未相對於 object 傾斜或旋轉,並且還假設 object 與相機的距離固定。 如果不滿足這些條件中的任何一個,則需要進行額外的計算。

此鏈接也可能對您有用: https://www.scantips.com/lights/subjectdistance.html

相機矩陣中的所有單位都是像素,也是焦距。 唯一以世界單位表示的校准參數是基線(米或毫米,或您可能使用的任何單位)。

那么,基線從何而來? 好吧,例如,在用棋盤進行校准時,通常會要求您設置方塊大小 這是您將其設置為世界單位(例如毫米)的機會。 一個例子在這里

請注意,您也可以將其保留為 1 以獲得維度 3D重建。 這可能就是您獲得不對應距離的原因。

在您的情況下,您也可以通過適當的因子重新調整基線來避免重新校准。 祝你好運!

注意像素焦距是物理焦距 (mm) 除以實際像素尺寸 (mm) 得到的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM