2013-01-10 27 views
2

如果實際條形碼的大小和相機檢測到的條形碼的所有角落的(x,y)是否可以找到檢測到的qr條形碼(正方形)和相機之間的距離知道了嗎?查找條形碼和相機之間的距離?

即使相機與條形碼成角度,我也希望該方法能夠正常工作。

我嘗試使用一個簡單的公式,如f = d * z/D,其中f是攝像機的局部長度,D是對象的大小,d是檢測到的對象的寬度(以像素爲單位),z是相機和條形碼之間的距離。首先,我使用已知距離的數據計算焦距,然後相應地得到z值。

雖然上述方法工作得很好,但是如果相機處於某個角度,它會出現很多錯誤。

是否有更好的方法來做到這一點?

此外,我只能使用一個相機,使用兩個相機不是一個選項。

+0

你認爲相機和條碼的距離是多少?相機圖像平面中心和條碼中心之間的距離? – Niko

+0

是的,條形碼中心和圖像平面中心。 –

+0

需要注意的另一件事是我的相機安裝在機器人上,條形碼將放在牆上。 –

回答

0

使用您當前的公式(您聲明的效果很好)針對最長邊和其相反方向,然後對結果取平均值。

或者,只是平均最長邊和其相反的長度。這些關係都是線性的,所以你最終應該得到相同的答案。

+0

'(infinity + x)/ 2'似乎不是一個好的結果。無限來自一個非常有角度的圖像,其中一邊的寬度接近0像素。 – mmgp

+0

@mmgp,我的更新是否有意義呢? –

0

首先你必須知道攝像機的角度。 如果您無法從設備讀取該參數,則可以使用其他度量來估計該參數。

例如,您知道條形碼是矩形的。所以通過檢測它可以得到四個角度,並從中估計一個同態矩陣。通過了解單應性矩陣,您可以通過將座標乘以單應性逆來簡化您的問題。

當呈現已知圖案(例如棋盤)時,相機矩陣被嚴格用於相機校準。