A. python怎樣調用opencv對單目相機進行標定
檢測在一幅圖像中的棋盤格,並獲取它到攝像機的距離. 你可以使用同樣的方法來針對任何已知三維幾何結構的物體,這個物體可以在一幅圖像中被檢測到.。
B. 求魚眼鏡頭全景圖像校正演算法的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--攝像機標定和魚眼校正
C. 怎麼把照片做出魚眼效果,除PS以外!
用QQ軟體自帶的濾鏡功能可以做出魚眼效果,具體操作步驟如下:
一、首先,打開qq軟體,進入到主界面,如圖所示。
D. python opencv 外參標定怎麼用
相機標定相機標定的目的
獲取攝像機的內參和外參矩陣(同時也會得到每一幅標定圖像的選擇和平移矩陣),內參和外參系數可以對之後相機拍攝的圖像就進行矯正,得到畸變相對很小的圖像。
相機標定的輸入
標定圖像上所有內角點的圖像坐標,標定板圖像上所有內角點的空間三維坐標(一般情況下假定圖像位於Z=0平面上)。
相機標定的輸出
攝像機的內參、外參系數。
拍攝的物體都處於三維世界坐標系中,而相機拍攝時鏡頭看到的是三維相機坐標系,成像時三維相機坐標系向二維圖像坐標系轉換。不同的鏡頭成像時的轉換矩陣不同,同時可能引入失真,標定的作用是近似地估算出轉換矩陣和失真系數。為了估算,需要知道若干點的三維世界坐標系中的坐標和二維圖像坐標系中的坐標,也就是拍攝棋盤的意義。
相機成像
相機的成像原理:小孔成像
相機的內參相機的外參
在實際由於設計工藝問題、相機安裝環境或物體擺放位置等影響,會照成成像與實際圖像不一樣的現象。
由於設計工藝照成的影響是無法改變的事實,所以這將是相機的內參;
由環境或安裝方式照成的影響是可以改變的,這就是相機的外參。
張正友標定相機原理
1.求得相機內參數:
用於標定的棋盤格是特製的,其角點坐標已知。標定棋盤格是三維場景中的一個平面∏,棋盤格在成像平面為π(知道了∏與π的對應點坐標之後,可求解兩個平面1對應的單應矩陣H)。
根據相機成像模型,P為標定的棋盤坐標,p為其像素點坐標。則,通過對應的點坐標求解H後,可用於求K,R,T。
2.設棋盤格所在平面為世界坐標繫上XOY平面,則棋盤格上任一角點P世界坐標系為(X,Y,0)。