相機標定(實踐)

2021-07-08 21:02:55 字數 2145 閱讀 2244

關於相機標定,最常用的方法莫過於matlab和opencv了。這兩者的目標都是得到相機的內參矩陣(3*3)和誤差矩陣(5*1),至於原理我還來不及研究,已經迫不及待的想要了解怎麼採用這兩種現成的工具怎麼實現了?

首先,在標定之前先採集標定板的,連線好要標定的攝像頭,做好乙個標定板。opencv自帶了乙個標定板,你可以列印出來的,這個文件存放在sources資料夾下,如我的存放路徑是:d:\program files\opencv\sources\doc\patten.png。按照旋轉、平移的角度,轉動標定板,拍攝一組**,作為標定的依據。記住,盡量讓標定板佔滿整幅畫面。

接下來就是標定工具的選擇了,相對來說,opencv的比較繁瑣一些,下面主要講解opencv是如何實現標定的?至少先把這一套流程走完先。

opencv自帶了標定的2個函式,存放路徑在d:\program files\opencv\sources\samples\cpp,分別是imagelist_creator.cpp,用於生成的序號;和calibration.cpp,用於生成內參和誤差矩陣。具體用法是:

在vs2010下新建控制台應用程式的工程,載入imagelist_creator.cpp檔案,編譯生成exe檔案。進入dos系統,也就是cmd.exe,進入你所在的工程,分別執行

工程名.exe imagelist.xml a1.png a2.png a3.png a4.png a5.png
這樣就會生成乙個imagelist.xml的檔案了。檔案內容大致是:

opencv_storage>現在已經生成了的序列檔案了,下一步就是採用calibration生成內參矩陣和誤差矩陣。同理,新建乙個win32控制台應用程式的工程,載入calibration.cpp,並編譯生成可執行檔案*.exe,在cmd下輸入

*

.exe -w8-h

6-s0.025

-o camera.yaml -op

-oe imagelist.

xml

-w 8 是指標定板的長邊的內角點數,-h 6 是指標定板寬的內角點數,同時把imagelist.xml和所有的放到與*.exe同一路徑下,目的是為了方便找到這些檔案。回車後就會生成乙個camera.yaml的檔案,大致如下:

%yaml:1.0

calibration_time:

"12/11/15 10:29:34"

nframes:

9image_width:

640image_height:

480board_width:

8board_height:

6square_size:

1.flags:

0camera_matrix: !!opencv-matrix

rows: 3

cols: 3

dt: d

data: [ 8.1851236466343710e+002, 0., 3.0903984677764441e+002, 0.,

8.1746895098846801e+002, 2.0063288110431276e+002, 0., 0., 1. ]

distortion_coefficients: !!opencv-matrix

rows: 5

cols: 1

dt: d

data: [ 2.5939251617159848e-001, -2.2449638446166724e+000,

3.7120604052127667e-003, 6.2924995823829537e-004,

4.0328352932945775e+000 ]

除了以上這些,還會生成一些檔案。因為沒有用到,不作解釋。

這樣,採用opencv得到了相機的內參和誤差矩陣。注意,在dos下的命令不同於linux,進入e盤就直接輸入

e:
參看e盤下的所有文件,鍵入

dir

深度學習 相機標定 相機標定

術語 內參矩陣 intrinsic matrix 焦距 focal length 主點 principal point 徑向畸變 radial distortion 切向畸變 tangential distortion 旋轉矩陣 rotation matrices 平移向量 translation ...

相機標定之棋盤標定

該文章主要學習如何進行相機標定,原理部分只是比較多,不多贅述。首先,相機標定主要是去求解內參k和外參 r t 以下為相機標定過程中常用的opencv自帶的幾個重要函式。1.opencv 提供的函式projectpoints2 投影三維點到影象二維點。函式引數如下 void cvprojectpoin...

相機畸變以及相機標定

相機畸變的種類 徑向畸變 產生原因 由透鏡形狀引起的畸變稱為徑向畸變,徑向畸變主要分為桶形畸變和枕型畸變。在針孔模型中,一條直線投影到畫素平面上還是一條直線。但在實際中,相機的透鏡往往使得真實環境中的一條直線在中變成了曲線。越靠近影象的邊緣現象越明顯。由於透鏡往往是中心對稱的,這使得不規則畸變通常徑...