張正友 本科浙大,本來以為是中國(guó)人論文是中文呢,哎
張正友的主頁: http://research.microsoft.com/en-us/um/people/zhang/Calib/
不過里面的棋盤格跟我的不一樣啊,why???,我決定先看看中文的論文吧,我的首要任務(wù)是弄清楚輸入輸出,流程,怎么用吧
matlab 跟 opencv上都有張正友的實(shí)現(xiàn)
matlab calibration主頁 : http://www.vision./bouguetj/calib_doc/
GML C++ Camera Calibration Toolbox: http://graphics.cs./en/science/research/calibration/cpp
因?yàn)閏vCalibrateCamera2 函數(shù)主要是用張正友的平面標(biāo)定方法的,所以首先我建議大家看一下張正友的那篇經(jīng)典的論文 1) 完整版 22頁 里面分析的非常詳細(xì)《A Flexible New Technique for Camera Calibration.rar》(http://research.microsoft.com/~zhang/Papers/TR98-71.pdf) 2) 精簡(jiǎn)版 8頁《Flexible Camera Calibration by Viewing a Plane from Unknown Orientations》 - Zhang, ICCV99, (http://www.vision./bouguetj/ ... zhan99.pdf)
http://www./forum/viewtopic.php?t=4603
piao 在opencv論壇上的帖子
看到論壇里有不少人在用OpenCV中的標(biāo)定函數(shù)cvCalibrateCamera2 進(jìn)行相機(jī)標(biāo)定時(shí)遇到不少問題,說一些自己的看法。
1)因?yàn)閏vCalibrateCamera2
函數(shù)主要是用張正友的平面標(biāo)定方法的,所以首先我建議大家看一下張正友的那篇經(jīng)典的論文 完整版 22頁 里面分析的非常詳細(xì)《A Flexible New
Technique for Camera Calibration.rar》(http://research.microsoft.com/~zhang/Papers/TR98-71.pdf) 精簡(jiǎn)版
8頁《Flexible Camera Calibration by Viewing a Plane from Unknown Orientations》 -
Zhang, ICCV99, (http://www.vision./bouguetj/
... zhan99.pdf)
2)至于不少人說OpenCV中用cvCalibrateCamera2
進(jìn)行相機(jī)標(biāo)定的精度差,標(biāo)定結(jié)果不穩(wěn)定,我想可能的原因有:
原因之一)可能是在標(biāo)定的時(shí)候標(biāo)定板所在平面與成像平面(image
plane)之間的夾角太小,張正友論文里的仿真數(shù)據(jù)(有噪聲的數(shù)據(jù))說明當(dāng)兩者夾角太小誤差 會(huì)很大,
從張正友的論文里給出的5幅圖中(http://research.microsoft.com/~zhang/Calib/)其中標(biāo)定平面與成像平面的夾角分別為:
8.8947 11.2325 24.4875 10.8535
9.5829(單位:度)。 而且張正友的論文中也提到兩幅標(biāo)定板之間的位置平行放置的話,相關(guān)相當(dāng)于一幅
因此在實(shí)際標(biāo)定中平行放置的情況最好避免,可能有時(shí)你無形之中就犯了這 個(gè)錯(cuò)誤。
原因之二)標(biāo)定時(shí)拍攝的圖片太少,雖然張正友的論文里只用了5幅圖片,但是我建議搞個(gè)10來幅左右還是必要的,因?yàn)槲覀儗?shí)際中可能標(biāo)定板用A4的紙打印出 來貼在一塊板上的,標(biāo)定板上的世界坐標(biāo)精度就不是特別高,多拍攝幾幅圖像能減少這方面帶來的誤差,而且多個(gè)角度拍攝也可能解決了問題一:標(biāo)定板和成像 平面夾角小的問題。這個(gè)家伙用20幅來標(biāo)定(http://www.vision./bouguetj/
...
ample.html)
原因之三)圖像上角點(diǎn)提取的不準(zhǔn)確,我認(rèn)為用cvFindChessboardCorners函數(shù)找角點(diǎn)不是很好,假如拍到的圖像不是完整的棋盤格的時(shí)候肯定會(huì)有問題的,而 且也不少人反應(yīng)用這個(gè)函數(shù)提取不出角點(diǎn),建議可以用其他工具
比如: OpenCV and MatLab Camera Calibration Toolboxes
Enhancement(http://graphics.cs./en/research/calibration/) Camera
Calibration Toolbox for
Matlab(http://www.vision./bouguetj/calib_doc/htmls/example.html)★★★★★強(qiáng)烈推薦
當(dāng)然還有可能其他人為的什么原因。
3)建議用其他方法比如Tsai的標(biāo)定方法或其他的標(biāo)定工具進(jìn)行標(biāo)定 ★★★★★強(qiáng)烈推薦
用這個(gè)matlab標(biāo)定工具箱來進(jìn)行標(biāo)定,可以和OpenCV做個(gè)對(duì)比嘛
,它也是基于張正友的平面標(biāo)定方法的,做得非常人性化,呵呵, 有誤差分析、標(biāo)定結(jié)果三維重建、重投影計(jì)算角點(diǎn)等功能 。 Camera
Calibration Toolbox for
Matlab(http://www.vision./bouguetj/calib_doc/)
4)三個(gè)OpenCV下的標(biāo)定程序
程序1)《基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)》(http://www./s_single.php?id=14881)這本書上的相機(jī)標(biāo)定程序
(有標(biāo)定圖片 改下參數(shù) 可以直接運(yùn)行)
程序2)
自己寫的一個(gè)簡(jiǎn)單的標(biāo)定程序:plane_calibration_opencv(要先準(zhǔn)備好 角點(diǎn)的圖像坐標(biāo)和對(duì)應(yīng)的世界坐標(biāo) ) download/file.php?id=284 程序3)http://www.主頁上的例子 http://www./index.php?titl
... iant=zh-tw
附件
- 程序4) plane_calibration_opencv.rar
- opencv+cvut 實(shí)現(xiàn) http://wenku.baidu.com/view/e88cc989d0d233d4b14e691c.html
- 原理部分
- 單應(yīng)性矩陣在攝像機(jī)標(biāo)定時(shí)的作用
在計(jì)算機(jī)視覺中單應(yīng)性矩陣的求解在攝像機(jī)標(biāo)定的過程中有重要的意義,單應(yīng)性矩陣中包含著攝像機(jī)的內(nèi)參數(shù)矩陣,旋轉(zhuǎn)向量和平移向量。
我們?cè)O(shè)3維空間有一點(diǎn)Q=[X Y Z 1]T(齊次坐標(biāo)系表示),到成像儀上的q[x y 1]T映射,設(shè)單應(yīng)性矩陣為H,s為比例系數(shù)。則Q和q之間的關(guān)系可表示為q=ShQ.
在點(diǎn)映射過程中,點(diǎn)要經(jīng)過旋轉(zhuǎn)和平移的物理變換,所以設(shè)物理變換坐標(biāo)W=[R T],R為旋轉(zhuǎn)向量,T為平移向量。然后再投射過程中,根據(jù)得到的攝像機(jī)的內(nèi)參矩陣M,所以q=sMWQ,從而推算出H=sMW.
通過單應(yīng)性矩陣,我們把源圖像平面上的點(diǎn)擊位置與目標(biāo)圖像平面的傷的點(diǎn)擊位置聯(lián)系了起來,而opencv 中有一個(gè)函數(shù)提供了單應(yīng)性矩陣的計(jì)算:cvFindHomography().而opencv中是采用從多個(gè)視場(chǎng),采集圖片,并計(jì)算相應(yīng)的單應(yīng)性矩陣,從而求解攝像機(jī)的內(nèi)參數(shù)(內(nèi)參數(shù)相對(duì)于攝像機(jī)的視場(chǎng)是不變的)。
|