相机标定 matlab opencv ROS三种方法标定步骤(1)
? ? ? ? 計算機視覺領域中常見的三個坐標系:圖像坐標系,相機坐標系,世界坐標系,實際上就是要用矩陣來表
??????? 示各個坐標系下的轉換,首先在圖像坐標系下與相機坐標系的關系
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
???????? 可得出 ? 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,不在乎多少(我也是跟網上的大神們學的),不想掙錢娶媳婦的程序員不是好程序員,謝謝
? ? ? ? ?
總結
以上是生活随笔為你收集整理的相机标定 matlab opencv ROS三种方法标定步骤(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运行ORB-SLAM笔记_使用篇(二)
- 下一篇: 相机标定 matlab o