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)。