opencv标定模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
又称为线性摄像机模型,任何空间点m在图像中的投影位置m,为光心oc与m的连线ocm与图像平面的交点。此时有比例关系如下:
将上面的世界坐标到摄像机坐标的转换代入,最后皆可以得到世界坐标系与摄像机坐标系之间的关系:alph=f/dx,beta=f/dy,分别代表了以x轴与y轴方向上的像素为单位表示的等效焦距。
int*corner_counter;
float*temppoints;//这里可以使用内存动态存储管理。。。cvpoint2d32f*corners;//存储角点坐标的数组
[实验原理]
1、理论知识
如图,(u、v)表示以像素为单位的图像坐标系的坐标,(x、y)表示以mm为单位的图像坐标系的坐标,在x、y坐标系中,原点o1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心,但是由于制造原因,很多情况下会有偏移,若o1在u、V坐标系中坐标为(u0,v0),每一个像素在x轴与y轴方向上的无力尺寸为dx、dy,则图像任意一个像素在两个坐标系下的坐标有如下关系:
intchessboardsize_h=7;
intwidth_pixel=1280;//像素
inthigh_pixel=1024;
floatsquaresize=10;//棋盘大小
intnimages=16;
cvsizechessboardsize;
cvsizeimage_pixel;
intnpoints=0;
竭诚为您提供优质文档/双击可除
opencv标定模板
篇一:摄像机标定原理及源码
计算机视觉摄像机标定实验报告
[实验名称]基于opencV的摄像机标定
[实验项目]
1、学会使用opencV
2、利用opencV进行摄像机标定,编程实现,给出实验结果及其分析。
[实验仪器设备]电脑+Visualstudio20xx+opencV.2.4.8。
离心畸变其数学模型可以表示为:
薄棱镜畸变是由镜头设计和制造缺陷等误差造成(比如镜头与摄像机像面之间有很小的倾角,其不仅会引起径向偏差,而且会引起切向误差)其数学模型为:
综合考虑径向畸变和切向畸变,就需要对小孔成像模型进行修正,理想的图像点归一化坐标为p=(x,y)t,有畸变的图像点的归一化坐标为pd=(xd,yd)t之间关系为:
如图,
oc点为摄像机光心,xc轴和yc轴与图像的x轴与y轴平行,zc轴为摄像机光轴,它与图像平面垂直。光轴与图像平面的交点,极为图像坐标系的原点,由点oc与xc、yc、zc轴组成的直角坐标系称为摄像机坐标系,ooc为摄像机焦距:
由于摄像机可以安放在环境中任意位置,所以在环境中选择一个基准坐标系来描述摄像机位置,并用它描述环境中任何物体的位置,该坐标系为世界坐标系。它有xw、yw和zw轴组成,摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵与平移向量t来描述。
intmain(intargc,char**argv)
{
inti=1;
chark=0;
intcurrentimage=0;
intcurrentRow=0;//行
intcurrentcolumn=0;//列
intfindcorner_result=0;
File*fp;//文件指针
intchessboardsize_w=6;//角点个数
在上面的式子中m是3x4不可逆矩阵,当已知m与(u,v)时,由公式得到的三个方程中消去z,只可以得关于xw,yw与zw的两个线性方程,这个方程组即为射线op的方程,也就是说,投影点为m的所有点均在该射线上,所以,该空间是不能唯一确定的。
摄像头由于光学透镜的特性使得成像存在着径向畸变,可由三个参数k1,k2,k3确定;由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数p1,p2确定。单个摄像头的定标主要是计算出摄像头的内参(焦距f和成像原点cx,cy、五个畸变参数(一般只需要计算出k1,k2,p1,p2,对于鱼眼镜头等径向畸变特别大的才需要计算k3))以及外参(标定物的世界坐标)。opencV中使用的求解焦距和成像原点的算法是基于张正友的方法,而求解畸变参数是基于brown的方法
总体来说,世界坐标系到图像坐标系的关系可总结如下:
摄像头成像几何关系,其中oc点称为摄像头(透镜)的光心,xc轴和yc轴与图像的x轴和y轴平行,zc轴为摄像头的光轴,它与图像平面垂直。光轴与图像平面的交点o1,即为图像坐标系的原点。由点oc与xc、yc、zc轴组成的坐标系称为摄像头坐标系,oco1的距离为摄像头焦距,用f表示。
设(u、v)为理想的图像像素坐标,相对应的,
就为理想的图像物理坐标,为真实获得的像素坐标。则(x,y)为实际获得的图像物理坐标,可以得到如下的关系式:
我们知道,(u0,v0)在求摄像机内参的时候可以知道,在圆心提取排序后也可以知道,(u,v)可以通过opencV中cvprojectpoints函数求得反投影残差。(x,y)可以通过
篇二:利用opencv进行矫正代码
opencv图像矫正代码
/*标定的过程:
图片的加载
角点的检测ຫໍສະໝຸດ 提取角点精确坐标参数求解利用参数对图像进行矫正
*/
#include
#include"cv.h"
#include"highgui.h"
#include
//函数声明
voidprintmat(cvmat*matrix,boolsave_or_show,File*fp);
和求出,于是克得到如下公式:
设dk=d,所以可以求出畸变系数k1,k2.
在求得了径向畸变的系数以后,就可以如下得到成像仪某点理想的径向位置
其中,r就是当前点的所在透镜半径,k3只有在精度很高的时候才用得到
切向畸变主要包括离心畸变和薄棱镜畸变,其中,离心畸变是由摄像机的镜头中各个透镜的光轴不能完全重合造成的。
gamma在较高精度的相机模型中引入,表示图像平面中以像素为单位的坐标轴倾斜程度的量度,gamma=alpha*tan(theta)theta是相机ccd阵列v轴的偏斜角度。
由针孔模型我们可以知道,如果一直摄像机的内外参数,就知道投影矩阵m,这时候对任何空间点就可以求出其对应图像坐标,但是如果已知空间某点的像点m位置(u,v)即使已经知道摄像机内外参数,xw也不能唯一确定,因为在投影过程中消去了zc的信息。
相关文档
最新文档