一 、 理解攝像機模型,網上有很多講解的十分詳細,在這里我只是記錄我的整合出來的資料和我的部分理解
計算機視覺領域中常見的三個坐標系:圖像坐標系,相機坐標系,世界坐標系,實際上就是要用矩陣來表
示各個坐標系下的轉換,首先在圖像坐標系下與相機坐標系的關系
可得出 Xcam=x/dx+x0, Ycam=y/dy+y0 表示為矩陣形式
Xcam 1/dx 0 x0 x
Ycam = 0 1/dy y0 * y
1 0 0 1 1
相機坐標系與圖像坐標系的關系是
既有可以寫成
我們知道相機坐標系與世界坐標系的關系是
表達成矩陣表示為
可以推導出
(這里面的Xc ,Yc,Zc 也就是上面的X Y Z )其中
K= 就為相機的內參 R T 為相機的外參(好難編輯)
接下來就是說明一下使用MATLAB Opencv ,以及ROS環境下的Opencv進行相機校准
相機的標定主要有兩種方法 :攝像頭標定方法和攝像頭自標定方法,典型的有:(1)Tsai(傳統的標定方法) (2)張正友(介於傳統與自標定方法之間)張正友標定法由於很簡單
所以得到廣泛 的應用,張正友標定法的步驟:
1、打印一張模板並貼在一個平面上;
2、從不同角度拍攝若干張模板圖像;
3、檢測出圖像中的特征點;
4、求出攝像機的外參數(單應性矩陣)和內參數(最大似然估計) ;
5、求出畸變系數;
6、優化求精。
二、對於在matlab中進行相機標定是一件非常簡單的事,因為在matlab官方網站,以及matlab中文論壇上都是有教程的,只需要找到標定模板就可以了,
matlab中文論壇的學習網址 http://www.ilovematlab.cn/thread-267670-1-1.html
詳細相機標定過程請參考 http://www.mathworks.com/help/vi ... ator.html#btxr8c_-2
MATLAB相機標定教學視頻 http://www.mathworks.com/videos/ ... h-matlab-81233.html
2.1 首先我們得准備軟件matlab,安裝matlab就按照網上的教程既可以安裝成功了,不過安裝過程可能遇到一些軟件破解的一些問題,如果安裝不上,
那就果斷的換安裝的軟件版本, 其次就是准備標定魔板,我是直 接用A3的紙打印了標准的棋盤方格,自己百度一下標定棋盤網上有很多圖紙可供下載,
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf
我使用的就是check-108,其中108代表的是每個小方格的邊長為108mm,使用A3的紙張打印,后來測量一下每個黑白方格的邊長為35mm,
2.2 材料和軟件都准備好了,我們在准備攝像頭,我們有四個選擇:(1)手機拍照 我們就標定手機的攝像頭,(2)筆記本自帶的攝像頭,(3)使用帶USB的的攝像頭(4)網上提供的模板
2.2.1 手機攝像頭標定,最好的方法是將手機固定,然后移動標定模板,改變模板的遠近位置,以及翻轉角度等等,如下圖
這里面是我把標定模板給固定,改變手機的位置,這就導致拍出來的照騙有些事不能用的(可以試試),就會明白為什么會不能進行標定了,
這只是展示其中四張照片,當然拍下來的至少要20張不一樣的照片,現在開始使用MATLAB進行標定了,
2.2.2當我們想標定筆記本的攝像頭或者我自己外界一個攝像頭的時候,就需要使用一個軟件去獲取攝像頭的照騙,使用 Ecap軟件就可以打開攝像頭,並且捕捉照騙
可以捕獲很多不同角度的關於標定模板的圖片,至少需要20張,緊接着打開matlab,在命令行輸入
>> cameraCalibrator 出現:
之后可以添加“add images”,然后選擇我的模板的方格大小,默認是25mm 改為與實際模板一致的邊長是35mm
也可以直接添加網上所提供的標定模板,
此標定模板為6*4 108mm 添加完選擇“”calibrate“”有
右邊出現一下統計圖,左下角就是每個圖片相對攝像頭的遠近和角度,點擊保存calibration.mat文件,點擊“Export camera parameters”出現標定的結果
到此MATLAB的相機標定就完成了
(雖然我寫的很幸苦,但是我也只是想記錄下我的實驗過程,中間也遇到很多問題,這都是解決后的結果本來是1,2,3放在一起的
但是因為篇幅太長,只好將其分為三段,中間也丟失過好幾次,然后又重新寫,大神們看見就當是在看笑話,一笑了之即可,
我知道這其中沒有什么創新可言,真實慚愧,謝謝)
版權所有,轉載請注明出處
如果您覺得看完有所收獲,歡迎掃一掃,可以資助一分,幾分money,不在乎多少(我也是跟網上的大神們學的),不想掙錢娶媳婦的程序員不是好程序員,謝謝