在往期文章【技術流派】教你提高雙目立體視覺系統的精度!中,博主關于立體視覺系統的精度做了一個較為具體的分析,但整體來說是定性的,本篇再次關于精度做一次定量分析,畢竟絕大部分場景下精度都始終是第一要素,定量分析更有助于系統設計和精度優化,希望看完此篇,讀者能更深一步了解精度的決定因素以及它們各自對精度所影響的尺度,以及能夠回答如下三個問題:
1. 雙目立體視覺系統的精度由那些因素決定?
2. 各個因素對精度的決定程度一樣嗎?
3. X/Y/Z三個方向的精度都是一樣的嗎?如果不是一樣,哪個方向精度更好呢?
文章目錄
- Z方向精度
- XY方向精度
- X/Z精度曲線
- 參考文獻
最常見的情況下,雙目立體視覺的最終輸出是左相機坐標系下的XYZ坐標,本篇便以這三個分量為精度分析物件,
首先,做一些變數的定義:
b b b:基線長度
f f f:焦距
x , y x,y x,y :像點坐標(以像主點為原點)
X , Y , Z X,Y,Z X,Y,Z:相機坐標系下的坐標
d d d:視差
我們先看這三個分量的求解公式:
Z
=
b
f
d
,
X
=
Z
f
x
,
Y
=
Z
f
y
Z=\frac {bf} d,X=\frac Z f x,Y=\frac Z f y
Z=dbf?,X=fZ?x,Y=fZ?y
從公式可知,在硬體引數 B , f B,f B,f固定的情況下, X Y Z XYZ XYZ的值和像點坐標值直接相關, X Y Z XYZ XYZ的精度實際上是像點精度下的空間偏差值,因此我們以像點精度為基本(最小)精度單位,
假設像點 x , y x,y x,y的精度為 s x , s y s_x,s_y sx?,sy?,視差 d d d的精度為 s d s_d sd?,通常認為 x , y x,y x,y的精度是相同的,即 s x = s y = s s_x=s_y=s sx?=sy?=s,而視差的精度一般來說可以用公式 s d = s x 2 s_d = \frac {s_x} {\sqrt 2} sd?=2 ?sx??來估計1,
Z方向精度
首先對于
Z
Z
Z,自變數是
d
d
d,我們對
d
d
d求偏導,可得
?
Z
?
d
=
?
b
f
d
2
=
?
Z
2
b
f
\frac {\partial Z} {\partial d}=-\frac {bf} {d^2}=-\frac {Z^2} {bf}
?d?Z?=?d2bf?=?bfZ2?
因此,
Z
Z
Z方向的精度可以表示為
s
Z
=
Z
2
b
f
s
d
=
Z
2
2
b
f
s
s_Z=\frac {Z^2} {bf}s_d=\frac {Z^2} {\sqrt 2bf}s
sZ?=bfZ2?sd?=2
?bfZ2?s
可知 Z Z Z方向精度和 Z Z Z的平方正相關,即和物體離相機的距離的平方正相關(嚴格來說是Z方向距離),
同時,上式可以變換一種形式:
s
Z
=
Z
b
Z
f
s
d
s_Z=\frac {Z} {b}\frac {Z} {f}s_d
sZ?=bZ?fZ?sd?
假設 q = Z b , m = Z f q=\frac {Z} {b},m=\frac {Z} {f} q=bZ?,m=fZ?,則 q q q是我們所熟知的基高比的倒數, m m m是影像的尺度(即GSD,一個像素代表的空間尺寸),這個公式顯示,基高比和GSD對 Z Z Z方向精度起著關鍵作用,更大的基高比和更小的GSD有助于提高 Z Z Z方向精度,這可以用于指導雙目立體視覺系統的設計,
XY方向精度
同理,對于
X
X
X,自變數是
Z
Z
Z和
x
x
x,我們對
Z
Z
Z和
x
x
x求偏導,可得
?
X
?
Z
=
x
f
,
?
X
?
x
=
=
Z
f
\frac {\partial X} {\partial Z}=\frac x f,\frac {\partial X} {\partial x}==\frac Z f
?Z?X?=fx?,?x?X?==fZ?
X
X
X方向精度可表示為
s
X
=
(
x
f
s
Z
)
2
+
(
Z
f
s
x
)
2
s_X=\sqrt {{(\frac x f s_Z)}^2+{(\frac Z f s_x)}^2}
sX?=(fx?sZ?)2+(fZ?sx?)2
?
同理,
Y
Y
Y方向精度可表示為
s
Y
=
(
y
f
s
Z
)
2
+
(
Z
f
s
y
)
2
s_Y=\sqrt {{(\frac y f s_Z)}^2+{(\frac Z f s_y)}^2}
sY?=(fy?sZ?)2+(fZ?sy?)2
?
把 s Z = Z 2 2 b f s , s x = s y = s s_Z=\frac {Z^2} {\sqrt 2bf}s,s_x=s_y=s sZ?=2 ?bfZ2?s,sx?=sy?=s代入公式,可得
s
X
=
1
+
(
x
Z
2
f
b
)
2
Z
f
s
=
1
+
(
X
2
b
)
2
Z
f
s
s_X=\sqrt {1+{(\frac {xZ} {\sqrt 2 fb})}^2}\frac Z f s=\sqrt {1+{(\frac X {\sqrt 2 b})}^2}\frac Z f s
sX?=1+(2
?fbxZ?)2
?fZ?s=1+(2
?bX?)2
?fZ?s
s
Y
=
1
+
(
y
Z
2
f
b
)
2
Z
f
s
=
1
+
(
Y
2
b
)
2
Z
f
s
s_Y=\sqrt {1+{(\frac {yZ} {\sqrt 2 fb})}^2}\frac Z f s=\sqrt {1+{(\frac Y {\sqrt 2 b})}^2}\frac Z f s
sY?=1+(2
?fbyZ?)2
?fZ?s=1+(2
?bY?)2
?fZ?s
可以看出,
s
X
s_X
sX?和
s
Y
s_Y
sY?是等尺度的,結合前式,
s
Z
=
Z
2
2
b
f
s
s_Z=\frac {Z^2} {\sqrt 2bf}s
sZ?=2
?bfZ2?s
得到三個方向的精度運算式,
X/Z精度曲線
為了更清晰的觀察三個方向精度隨著 Z Z Z值變化的趨勢,我們來做一個仿真,假設像點精度為10 μ m \mu m μm,計算并繪制 Z Z Z和 X X X方向( Y Y Y方向和 X X X方向等尺度,趨勢一致)的精度曲線,
其他引數仿真資料:
f = 1100 f = 1100 f=1100 pix
x = 640 x = 640 x=640 pix
b = 200 b = 200 b=200 mm
繪制的精度曲線如下:

從精度計算的結果和趨勢圖可以看出,精度數值隨著 Z Z Z的增加而變大(意味著精度越來越差),且當 Z Z Z值較大時, Z Z Z方向精度比 X ( Y ) X(Y) X(Y)方向精度要差,隨著Z的增加,差距更加明顯,
而當
Z
Z
Z值較小時,
Z
Z
Z方向精度反而會比
X
Y
XY
XY方向要好,我們將Z的范圍減小到0~500,再繪制一條曲線圖,

可以看到,在
Z
Z
Z小于350mm左右時,
Z
Z
Z方向精度要好于
X
X
X方向,這個臨界
Z
Z
Z值是根據硬體引數和精度公式計算出的,且和像點坐標相關,
參考文獻
- [1] Walker, Stewart. Close-Range Photogrammetry and 3D Imaging, 2nd Edition[J]. Photogrammetric Engineering & Remote Sensing, 2015.博主簡介:
Ethan Li 李迎松(知乎:李迎松)
武漢大學 攝影測量與遙感專業博士
主方向立體匹配、三維重建
2019年獲測繪科技進步一等獎(省部級)
愛三維,愛分享,愛開源
GitHub: https://github.com/ethan-li-coding
個人微信:
歡迎交流!
關注博主,更多三維重建知識科普,感謝!
博客主頁:https://ethanli.blog.csdn.net
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272819.html
標籤:AI
下一篇:天池學習賽——街景字符編碼識別

