相機標定 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,不在乎多少(我也是跟網上的大神們學的),不想掙錢娶媳婦的程序員不是好程序員,謝謝

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM