① 求魚眼鏡頭全景圖像校正演算法的matlab代碼
(一) opencv裡面攝像機標定計算內參數矩陣用的是張正友標定法,非常經典,MATLAB標定工具箱也是用的該方法。具體的標定過程可以參見張正友的原文: http://research.microsoft.com/en-us/um/people/zhang/Papers/TR98-71.pdf。或者參考博文:http://hi..com/chb_seaok/item/62179235eef8873c2e20c40b
(二) 基於opencv的攝像機標定用的主要函數有:
cvFindChessboardCorners:提取一幅圖片上的所有角點。
cvFindCornerSubPix:亞像素精確化。
cvDrawChessboardCorners:顯示角點。
cvCalibrateCamera2:標定攝像機參數,求出內參數矩陣,畸變系數,旋轉向量和平移向量。
校正主要用的函數有2個:
cvInitUndistortMap:根據cvCalibrateCamera2計算出來的內參數矩陣和畸變系數計算畸變映射。
cvRemap:根據畸變映射校正圖像。
(三)詳細的過程及參考書籍:
1、《基於OpenCV的計算機視覺技術實現》 陳勝勇,劉盛編著 科學出版社,2008;(該書用OpenCV 1.0庫,第14章詳細介紹如何用opencv進行攝像機標定,包括攝像機標定的原理,opencv相關庫函數詳細的介紹以及例子)
2、《學習OpenCV(中文版)》 於仕琪譯 清華大學出版社,2009;(OpenCV 2.0庫,第11、12章詳細介紹如何進行攝像機標定以及三維重建)
3、OpenCV的標定參數中,對於鏡頭畸變採用的方法是Brown博士在71年發表的文章中提到的。
(四)MATLAB標定也在這里提一下:
http://www.vision.caltech.e/bouguetj/calib_doc/index.html#examples,該網站有很詳細的使用說明
matlab標定工具箱來進行標定,它也是基於張正友的平面標定方法的,有誤差分析、標定結果三維重建、重投影計算角點等功能 。
Matlab中的鏡頭畸變參數採用基於Heikkil博士提出的方法,將非線性干擾因素引入到內外參數的求解過程。標定的過程需要手動選取四個角點,標定圖片拍攝的多的話,比較麻煩。
(五)實驗結果
自己買了個手機魚眼鏡頭,拍攝了16幅標定板圖片。注意拍攝的角度不要和成像平面平行。
示常式序049--攝像機標定和魚眼校正