我想用opencv測量使用3d立體照相手機的物體的距離。我正在尋找能夠測量距離測量精確度的公式,具體取決於焦距,兩臺攝像機之間的距離,圖像分辨率以及被測物體的大小。 谷歌搜索一點,我發現這個公式:opencv深度圖精度
d = Z^2 * P /(F * B)
ž - 距離爲對象,對 - 視差精度,F - 焦距,B - 基線(相機之間的距離)。
我知道基線和焦距,但我不知道差異的準確性。 這個公式是我需要的嗎?如果是這樣,我如何找到差異的準確性?
謝謝。
我想用opencv測量使用3d立體照相手機的物體的距離。我正在尋找能夠測量距離測量精確度的公式,具體取決於焦距,兩臺攝像機之間的距離,圖像分辨率以及被測物體的大小。 谷歌搜索一點,我發現這個公式:opencv深度圖精度
d = Z^2 * P /(F * B)
ž - 距離爲對象,對 - 視差精度,F - 焦距,B - 基線(相機之間的距離)。
我知道基線和焦距,但我不知道差異的準確性。 這個公式是我需要的嗎?如果是這樣,我如何找到差異的準確性?
謝謝。
如果您看中的公式8之後的段落,您可以看到它們的差異精度爲0.18 * 10^-6m。進一步閱讀,我得出結論,他們使用的視差精度是所用相機的CCD上兩個像素之間的距離。對於分辨率爲640X480(非常老的VGA相機)的1/4「CCD(尺寸爲3.2mm×2.4mm),這將是5 * 10^-6。我不知道LG Optimus 3D的傳感器尺寸但假設1/4英寸CCD和2592像素水平分辨率,視差精度的基線將爲:1.23 * 10^-6,在10米處的深度精度爲0.85米。這對我來說看起來很合理。如果CCD較小,則它會改善(即準確度值降低)。
這是假設兩個立體圖像之間的特徵完美匹配的最低可能值。該值僅代表立體聲對的物理限制。
我意識到這是一年後,但以防萬一有人發現這一點。
的公式是這樣的:
dD = dd * D^2/fB
其中:
dd
=視差誤差dD
=深度誤差D
=深度f
=焦距B
=基線f = 6mm = 0.006m
如果,B = 24mm = 0.024m
,D = 10m
,dd
是1個像素[讓我們稱之爲P
現在,但它通常是約1.4um。
封堵所有的數字中得出:
dD = P * 10^2/(0.006 * 0.024) ~ 694444 P
對於P=1.4um, dD = 0.97 m
(約爲9.7%)。
現在假定您的對應關係給出了單像素錯誤。你可以做子像素搜索,根據圖像中的噪聲水平和紋理,你可以得到亞像素精確的對應關係。在這種情況下,你的準確性會好一點。
請注意,此公式適用於錯誤。視差和深度之間的映射如下:
d = fB/D
其中:
d
=視差D
=深度f
=焦距B
=基線同樣,插入數字給出:
d = (0.006 * 0.024/10) m = 0.0000144 m = 0.0144 mm = 14.4 um
。
如果您認爲您的像素大小約爲1.4um
,那麼14.4um
約爲10像素。這與上面的錯誤一致 - 意味着1像素誤差約佔10%。
10米以外的車在左右傳感器之間移動10個像素。
我希望有幫助。
嗨@thang,我的問題是關於差異的錯誤。它是作爲一個典型值使用還是通過傳感器參數的已知知識來計算? –
謝謝。我試圖粗略估計這個值,看看我的項目是否可行。我目前使用的手機是LG Optimus 3d。它的焦距爲6毫米,基線爲24毫米。我想計算10米處的距離測量誤差。即使我假設視差誤差只有1個像素,這是沒有意義的(或者它是什麼?) d = 10000^2 * 1 /(24 * 6)=〜694米... 我是什麼做錯了? – barisdad
好的,我的第一個錯誤是,這不是米。但我仍然不明白這意味着什麼。 – barisdad
...我的第二個錯誤是,這個值明顯低於1(這是一個比例,而不是一個像素值)。什麼可以估計一輛10米的汽車的差距值? – barisdad