網(wǎng)友snow2012720
我剛開始學(xué)習(xí)計算機視覺的雙目三維重建內(nèi)容,感覺好多內(nèi)容不懂,看到你的博文,了解到你對雙目標定三維重建這些有深入的研究,您是過來人了,能否幫忙給我在學(xué)習(xí)標定匹配三維重建過程中給予指點?包括看什么資料,用什么算法程序等等,非常感謝!
答復(fù):
其實雙目三維重建這一塊我也沒有深入的原理研究,只是有一些相關(guān)經(jīng)驗吧。有一些資料對于這方面是很重要的,包括:
1、相機標定的理論與工具
相機標定是計算機視覺最基礎(chǔ)也是至關(guān)重要的一個問題,標定的精度夠不夠決定了以后的校正、去畸變、配準、計算三維坐標、恢復(fù)三維模型能否進一步做下去。這方面推薦你看張正友關(guān)于相機標定的paper(谷歌一下吧),這是這方面最重要的一個理論基礎(chǔ),目前我們使用的matlab標定工具箱 和 opencv標定api都是以這篇論文的方法為基礎(chǔ)的。
2、熟悉matlab calibration tollbox、 matlab computer vision toolbox 和 opencv
這是做這一塊最重要的幾個工具。opencv 的sample中有一個源程序 你可以到opencv的安裝路徑下去找stereo_match .cpp stereo_calib.cpp這兩個程序是opencv給的雙目匹配、相機標定的例子,跑一遍就知道整個過程了。matlab computer vision toolbox是2010版本才有的貌似,反正2008沒有
3、網(wǎng)上的相關(guān)資料
北航的一個博士的opencv學(xué)習(xí)筆記,對于初學(xué)者非常有幫助
http://blog.csdn.net/chenyusiyuan/article/details/5072597
opencv中文論壇
opencv的書籍:《學(xué)習(xí)opencv》很經(jīng)典的一本書
opencv 幫助文檔 http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html
有條件的話找一篇碩士或者博士論文看看,會讓你對整個領(lǐng)域有一個全貌的了解
我所知道的也只有這些了,祝學(xué)習(xí)順利!
QQ 網(wǎng)友龍卷風(fēng)問:
我現(xiàn)在在做標定時 得到的相機焦距在x y方向所占的象素不一樣 (一個994 一個999)但我的象元是方形的 5.2*5.2 這是為什么啊?
另外 我已知特征點的象素坐標 想得到他的攝像機系下的坐標 其中z值 我直接用的焦距 這樣對嗎?
答復(fù):
焦距在x y方向所占的象素不相等,表明一個像素的x、y兩個方向的尺寸不完全相等,可能的原因:(1)由于工藝條件限制,做不到象元的長寬完全的相等 (2)標定的過程本身有誤差 不知道你采集圖片是否足夠多,一般20張以上為佳
你給我看的結(jié)果 焦距在x y方向所占的象素似乎差別不算大 還是可以的
已知特征點的象素坐標 想得到他的攝像機系下的坐標 如果你說的特征點 指的是標定板的方格頂點, 這應(yīng)該根據(jù)相機的外參數(shù)可以得到,也就是拍這張照片時標定板坐標系和相機坐標系之間的變換關(guān)系(旋轉(zhuǎn)矩陣、平移向量描述)。直接用的焦距是怎么做的,我不太明白,能否說一下你的思路,如果直接用焦距作為Z值,肯定是沒有意義的了 呵呵
網(wǎng)友tingingjiayou:
我想問一下,如果使用標定工具箱進行標定,扭曲系數(shù)表示的是什么意思?怎么樣看出主點的偏移量,謝謝您了!幫我解決下
答復(fù):
在http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html 中,對扭去系數(shù)Skew coefficient的定義是:
The skew coefficient defining the angle between the x and y pixel axes is stored in the scalar alpha_c.
翻譯一下,扭曲系數(shù)就是一個像素的x,y兩個方向的夾角的表示,以標量alpha_c表示。
該頁面還有一段話:
Observe that fc(1) and fc(2) are the focal distance (a unique value in mm) expressed in units of horizontal and vertical pixels. Both components of the vector fc are usually very similar. The ratio fc(2)/fc(1), often called "aspect ratio", is different from 1 if the pixel in the CCD array are not square. Therefore, the camera model naturally handles non-square pixels. In addition, the coefficient alpha_c encodes the angle between the x and y sensor axes. Consequently, pixels are even allowed to be non-rectangular. Some authors refer to that type of model as "affine distortion" model.
翻譯一下,大意是說, fc(2)/fc(1)可以不等于1,表明一個像素的x、y兩個方向的尺寸可以不相等,并且,一個像素的x、y兩個方向可以不垂直,以至于一個像素不一定要是長方形!扭曲系數(shù)就是度量這種遠離矩形的程度的。
關(guān)于主點的偏移量,關(guān)鍵是要理解 主點位置cc 和 主點偏移量 的概念。
主點偏移量就是主點位置距離照片的中心的物理距離(以mm為單位,不是像素為單位)
http://blog.sina.com.cn/s/blog_77805ef60100s9a6.html 這里有答案,轉(zhuǎn)述如下
該如何計算像主點偏移量?
像主點偏移量的計算:我們相機檢校獲得的是像主點位置坐標。
相機檢校參數(shù):
主點x0:2785.2544主點y0:1895.4608(單位:像素)
像幅5616*3744像素,像素大小:6.41um
該如何計算像主點偏移量?
x偏移量=(x0-5616/2)*6.41um
y偏移量=(y0-3744/2)*6.41um
然后在分別除以1000,換算為mm。
網(wǎng)友cy610374797 2012-06-02 19:43 表示:“我只想要一個代碼,輸入像素點的坐標,輸出該點對應(yīng)的攝像機坐標,求助”
答復(fù)如下:
你想要的這個效果,就是雙目視覺領(lǐng)域的研究想要達到的最終效果:通過兩個相機的照片或者視頻信息,得到照片中特征點的三維坐標信息,即通過雙目(兩個攝像頭)達到“視覺”(獲得物體的三維坐標信息)。很遺憾的告訴你,我對這方面的積累還遠遠不足以給你一個直接就能用的代碼。我只能就我的理解,寫一寫我對實現(xiàn)這個效果的步驟的認識,未必全正確,請仔細推敲。
要達到這個目的,要分兩步,第一步,是攝像機標定,通過標定,得到左右相機的內(nèi)參外參,以及右邊相機相對于左邊相機的位置和角度關(guān)系(涉及旋轉(zhuǎn)和平移)。這也就是我的這四篇文章一直在講的事。
雙目標定的原理及MATLAB標定工具箱的使用
MATLAB標定工具箱的使用(一)、(二)、(三)
第二步,就是利用這些標定好的信息,通過照片上的像素位置來計算世界三維坐標了,這就是計算機視覺中三維重建所研究的問題。
我這里提供了一個三維重建的計算函數(shù),使用matlab寫的,通過兩幅圖像中的匹配點重建該匹配點在世界坐標系的坐標
注意,這里提到的兩幅圖中的射影矩陣實際上就是MATLAB標定工具箱的使用(一)所述的投影矩陣,即內(nèi)參矩陣和外參矩陣的乘積,而且這里的重建需要知道特征點在兩副照片中像素位置的對應(yīng)關(guān)系。這種對應(yīng)關(guān)系可以借用對極線來刻畫,建議去了解一些對極線的內(nèi)容,這方面我也不是很懂。
function X= Reconstruction(Pt1,Pt2,P1,P2)
%通過兩幅圖像中的匹配點重建該匹配點在世界坐標系的坐標
%輸入說明
% Pt1 第一幅圖像中匹配點的像素坐標(2列)
% Pt2 第二幅圖像中匹配點的像素坐標(2列)
% P1 第一幅圖像的射影矩陣(3*4)
% P2 第二幅圖像的射影矩陣
Np=size(Pt1,1);
X=zeros(Np,4);
for i=1:Np
A=zeros(4,4);
A(1,:)=P1(1,:)-Pt1(i,1)*P1(3,:);
A(2,:)=P1(2,:)-Pt1(i,2)*P1(3,:);
A(3,:)=P2(1,:)-Pt2(i,1)*P2(3,:);
A(4,:)=P2(2,:)-Pt2(i,2)*P2(3,:);
T= MinEigVector ( A'*A );%求最小特征值對應(yīng)的特征向量
X(i,:)=(T/T(4))';
end
csdn 網(wǎng)友chenyianhfut 問我:
大俠,你好,想問下,標定工具箱標定出來的fc是什么啊,我通過不同的鏡頭拍攝的圖像進行標定,fc都不一樣,能通過這些值求出有效焦距(mm)嗎,謝謝
為了和其他網(wǎng)友分享,我將答復(fù)發(fā)表如下:
fc的意思是用照片的像素尺寸折算出來的相機焦距,可以參考:
http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html
這里的解釋是Focal length: The focal length in pixels is stored in the 2x1 vector fc.
既然是焦距,不同的鏡頭焦距不一樣就很正常了。你的有效焦距的問題是這樣的,記有效焦距為f(mm),則fc=[f/dx , f/dy] 這里的dx dy分別表示照片上一個像素點在水平和垂直方向?qū)?yīng)于成像平面的物理距離(mm為單位),注意fc包含兩個方向的值。求有效焦距(mm)需要知道dx dy。建議你參考http://wenku.baidu.com/view/51cbe7da6f1aff00bed51edf.html
網(wǎng)友limeng198616 問:
您好,見您寫了好幾篇關(guān)于攝像機標定的博文,您對攝像機標定因該比較精通。我這段時間正在用matlab標定工具箱,但我發(fā)現(xiàn)標定出來的主點坐標誤差非常大,我在實際中根本就沒法子用。這是怎么個一回事啊?例如同一個攝像機第一次標定出來的結(jié)果是300*282,第二次標定就成了367*277,期間相機完全沒動過,就是兩次標定用的圖像不一樣。
答復(fù)如下:
你說的這個問題我沒有細究過,不過有兩點有必要確認一下:一、對相機的一次標定要多用幾張圖才會比較準確,如果你的兩次標定是每次用一張圖,那不準是很正常的;二、如果你的相機是自動變焦的,也可能會造成主點的計算差別大;三、如果不是前兩種原因,建議你做采集幾組照片標定試試看。matlab的相機標定工具箱calibration toolbox的標定是先預(yù)估然后做迭代優(yōu)化,預(yù)估時,主點的值一定是照片的尺寸的一半,如照片是1024*768 那么主點初值是512*384 經(jīng)過優(yōu)化以后會有小范圍調(diào)整,不會偏差太遠。
編輯:黃飛
-
攝像機
+關(guān)注
關(guān)注
3文章
1586瀏覽量
59969 -
計算機視覺
+關(guān)注
關(guān)注
8文章
1696瀏覽量
45930
原文標題:關(guān)于相機標定的問題答復(fù)網(wǎng)友
文章出處:【微信號:機器視覺沙龍,微信公眾號:機器視覺沙龍】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論