外参、畸变参数三种参数与相机的标定方法_liangjiubujiu的博客

文章推薦指數: 80 %
投票人數:10人

实际其fx=F*Sx,其中的F就是焦距上面的f,Sx是像素/没毫米即上面的dx,其是最后面图里的后两个矩阵进行先相乘,得出的,则把它看成整体,就相当于4个内参。

其是把r等于零, ... 内参、外参、畸变参数三种参数与相机的标定方法_liangjiubujiu的博客-程序员信息网_相机外参标定 转载:https://blog.csdn.net/yangdashi888/article/details/51356385https://blog.csdn.net/Loser__Wang/article/details/51811347 1、相机参数是三种不同的参数。

 相机的内参数是六个分别为:1/dx、1/dy、r、u0、v0、f。

opencv1里的说内参数是4个其为fx、fy、u0、v0。

实际其fx=F*Sx,其中的F就是焦距上面的f,Sx是像素/没毫米即上面的dx,其是最后面图里的后两个矩阵进行先相乘,得出的,则把它看成整体,就相当于4个内参。

其是把r等于零,实际上也是六个。

dx和dy表示:x方向和y方向的一个像素分别占多少长度单位,即一个像素代表的实际物理值的大小,其是实现图像物理坐标系与像素坐标系转换的关键。

u0,v0表示图像的中心像素坐标和图像原点像素坐标之间相差的横向和纵向像素数。

相机的外参数是6个:三个轴的旋转参数分别为(ω、δ、 θ),然后把每个轴的3*3旋转矩阵进行组合(即先矩阵之间相乘),得到集合三个轴旋转信息的R,其大小还是3*3;T的三个轴的平移参数(Tx、Ty、Tz)。

R、T组合成成的3*4的矩阵,其是转换到标定纸坐标的关键。

其中绕X轴旋转θ,则其如图:   注意:在每个视场无论我们能提取多少个角点,我们只能得到四个有用的角点信息,这四个点可以产生8个方程,6个用于求外参,这样每个视场就还赚两个方程来求内参,则其在多一个视场即可求出4个内参。

因为六个外参,这就是为什么要消耗三个点用于求外参。

  畸变参数是:k1,k2,k3径向畸变系数,p1,p2是切向畸变系数。

径向畸变发生在相机坐标系转图像物理坐标系的过程中。

而切向畸变是发生在相机制作过程,其是由于感光元平面跟透镜不平行。

其如下:   1.径向畸变:产生原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲径向畸变主要包含桶形畸变和枕形畸变两种。

下面两幅图是这两种畸变的示意:        它们在真实照片中是这样的:         2.切向畸变:产生的原因透镜不完全平行于图像平面,这种现象发生于成像仪被粘贴在摄像机的时候。

下面图片来自于《学习opencv》p413。

  其中畸变的形象示意图是如下:     其总的转换关系: 下面是普通摄像头标定后的输出值,其如下: 其中的fx、fy是f/dx、f/dy得出来的值。

其中的cx、cy一般不是正好是图像分辨率的一半,其是有偏差的,一般越好的摄像头则其越接近于分辨率的一半。

上面例子使用的摄像头是一个普通的1280x720分辨率的摄像头,其偏差还是蛮大的。

下面的数据是比较好的摄像头罗技720p的,其分辨率也是1280x720的分辨率。

可以看出其更接近分辨率的一半。

  2、相机的标定方法与意义: (一)什么是摄像机标定      在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。

在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定。

  (一)相机标定的意义     无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。

因此,做好摄像机标定是做好后续工作的前提,是提高标定精度是科研工作的重点所在。

其标定的目的就是为了相机内参、外参、畸变参数。

 其标定方法大概有三种如下: 1.线性标定方法的大概数学公式是: 其求解过程如下: 注意:这种标定是没有考虑到相机畸变的非线性问题,意思是这种标定是 在不考虑相机畸变的情况下使用。

  2.非线性标定方法: 当镜头畸变明显时必须引入畸变模型,将线性标定模型转化为非线性标定模型, 通过非线性优化的方法求解相机参数: 3.两步标定法:     1.Tsai的经典两步法       概念:Tsai基于RAC约束(RadialAlignmentConstrain)提出的两步法,在求解过程中将CCD(电耦合器件)阵列感光元的横向间距和纵向间距当作已知参数,求解的摄像机内部参数:有效焦距f;镜头径向畸变系数k1,k2;非确定性尺度因子xs;图像中心或主点u0,v0。

外部参数:世界坐标系与摄像机坐标系之间的旋转矩阵R与平移向量t。

       求解:首先利用最小二乘法求解超定线性方程组,求得模型外部参数;然后求解内部参数,如果摄像机无透镜畸变,可通过一个超定线性方程组解出,如果存在一个以二次多项式近似的径向畸变,则利用一个包含三个变量的目标函数进行优化搜索求解。

       1.相机坐标系: 相机坐标系是连接图像物理坐标系与世界坐标系的桥梁,其中相机坐标的系的坐标原点是:镜头的光心---其也是相机坐标系里的投影中心。

      参考文献: 像素坐标转换到标定纸坐标的过程https://blog.csdn.net/Loser__Wang/article/details/51811347 摄像机标定 本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行校正后的显示。

首先关于校正的基本知识通过OpenCV官网的介绍即可简单了解:http://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html 对于摄像机我们所关心的主要参数为摄像机内参,以及几个畸变系数。

上面的连接中后半部分也给了如何标定,然而OpenCV自带的标定程序稍显繁琐。

因而在本文中我主推使用MATLAB的工具箱。

下面让我们开始标定过程。

标定板 标定的最开始阶段最需要的肯定是标定板。

两种方法,直接从opencv官网上能下载到:http://docs.opencv.org/2.4/_downloads/pattern.png 方法二:逼格满满(MATLAB) 采集数据 那么有了棋盘格之后自然是需要进行照片了。

不多说,直接上程序。

按q键即可保存图像,尽量把镜头的各个角度都覆盖好。

#include"opencv2/opencv.hpp" #include #include usingnamespacecv; usingnamespacestd; intmain() { VideoCaptureinputVideo(0); //inputVideo.set(CV_CAP_PROP_FRAME_WIDTH,320); //inputVideo.set(CV_CAP_PROP_FRAME_HEIGHT,240); if(!inputVideo.isOpened()) { cout<>frame;//read if(frame.empty())break;//checkifatend imshow("Camera",frame); charkey=waitKey(1); if(key==27)break; if(key=='q'||key=='Q') { imgname=to_string(f++)+".jpg"; imwrite(imgname,frame); } } cout< usingnamespacecv; usingnamespacestd; intmain() { VideoCaptureinputVideo(0); if(!inputVideo.isOpened()) { cout<>frame; MatcameraMatrix=Mat::eye(3,3,CV_64F); cameraMatrix.at(0,0)=4.450537506243416e+02; cameraMatrix.at(0,1)=0.192095145445498; cameraMatrix.at(0,2)=3.271489590204837e+02; cameraMatrix.at(1,1)=4.473690628394497e+02; cameraMatrix.at(1,2)=2.442734958206504e+02; MatdistCoeffs=Mat::zeros(5,1,CV_64F); distCoeffs.at(0,0)=-0.320311439187776; distCoeffs.at(1,0)=0.117708464407889; distCoeffs.at(2,0)=-0.00548954846049678; distCoeffs.at(3,0)=0.00141925006352090; distCoeffs.at(4,0)=0; Matview,rview,map1,map2; SizeimageSize; imageSize=frame.size(); initUndistortRectifyMap(cameraMatrix,distCoeffs,Mat(), getOptimalNewCameraMatrix(cameraMatrix,distCoeffs,imageSize,1,imageSize,0), imageSize,CV_16SC2,map1,map2); while(1)//Showtheimagecapturedinthewindowandrepeat { inputVideo>>frame;//read if(frame.empty())break;//checkifatend remap(frame,frameCalibration,map1,map2,INTER_LINEAR); imshow("Origianl",frame); imshow("Calibration",frameCalibration); charkey=waitKey(1); if(key==27||key=='q'||key=='Q')break; } return0; } 相信此时你的镜头的畸变也得到了修复。

还有就是之前讨论的为什么选2系数而不是3系数。

因为。













下面是三系数的修正结果,惨不忍睹啊。

立体标定 想要让双目视觉系统知道视差,首先应该知道双目视觉系统中两个摄像头之间的相对位置关系。



任意两个坐标系之间的相对位置关系,都可以通过两个矩阵来描述:旋转矩阵R和平移矩阵T。

我们可以同时对两个摄像头进行标定,分别得到二者相对同一坐标系的旋转矩阵和平移矩阵,然后就可以获得两个摄像头之间的相对位置关系,这就是双目标定! --------------------- 立体校正 为了使立体匹配步骤更加容易并且更加精准,立体校正是必须的,基于对极几何立体校正将左右两幅图像调整为完全的行对准,当两幅图像是完全的行对准时,计算立体视差是最简单的。

立体校正的目的是对两台摄像头的图像平面重投影,是的它们精准落在同一个平面上,而且图像的行也完全地对准到前向平行的结构上。

本征矩阵的意义就是将两个相机拍摄的同一点的两个相机坐标系下的坐标联系起来,而基础矩阵就是将同一点在两个像平面坐标系下的坐标联系起来。

关于本征矩阵和基础矩阵的东西,想知道详情的可以自行阅读《学习opencv》。

--------------------- 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/liangjiubujiu/article/details/96305231 原作者删帖   不实内容删帖   广告或垃圾文章投诉 智能推荐 样板图即指将绘制图形通用的一些基本内容和参数事先设置好,并以“DWT”格式保存的文件。

下面以绘制A3图纸样板图为例,熟悉图层、文字样式、表格样式、标注样式等的操作。

1、点击【新建】按钮,在弹出的对话框中点击“打开”右边的下拉按钮,选择“无样板打开-公制”命令,新建一个空白文件2、点击【图形特性】按钮,在弹出的“图层特性管理器”对话框中,新建两个图层,标题栏层和图框层,属性按默认即可3、将“图框层”... 1、数据类型number:数值型取值:整型、浮点型、NaN(isnotanumber)NaN和任何值比较都不相等(包括它本身)任何与NaN操作的结果都是NaN(除比较运算符,会输出false)Boolean:布尔型(两个值:true真,false假)适用场景:判断条件、状态值undefined:取值undefined(声明未赋值)让输出为undefined:声明未赋值输出;声明取值为undefined;未声明变量输出typeof变量;2、数据类型转换a)强制类型转换书写格式:数 ElementUI中带复选框的el-table表格,去掉表头的全选框在ElementUI中,带复选框的表格组件是长这样的:那么,如果不想要表头的全选框,该怎么修改呢?首先了解el-table的一个属性header-cell-class-name:表头单元格的className的回调方法,也可以使用字符串为所有表头单元格设置一个固定的className。

<el-table:data="tableDa 1.打开CAD图纸然后将除图纸外的参数标明等等删除掉,删除完后就是干净的CAD图纸。

2.对CAD图纸进行设置(1)对图纸进行颜色选择(Keep-OutLayer,我将其设置成粉色)表框点击完后,四条边呈现出虚线然后,将鼠标放在虚线上双击虚线,弹出一个框框点击颜色,我们将其设置成洋红色(洋红色接近我们PCBKeep-OutLayer的颜色,看个人喜好)图层设置为0就可以了(2)剩下的几个圈圈,是我要放在TopOverlay层的 lombok引用的jar包代码中要引用lombok中的@Slf4j,相关的依赖:<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency>报错内容代码:@[email protected] 零、前言  初学者开始学习51单片机时往往先是一愣,说好51单片机啊,咋个型号是AT89C52,这个S52又是咋回事?上学的时候大都懵懵懂懂就这么用着,但始终没整明白,所以今天我们就彻底搞明白这些“51”都是些啥51。

文章最后我还准备了一份各型号的对比手册,大家可以对照参考。

一、8031指令集  51单片机是一个泛称,我们将所有兼容Intel8031指令系统的都叫51单片机... 随便推点 项目简介权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。

本系统的设计目标是对应用系统的所有资源进行权限控制,比如应用系统的功能菜单、各个界面等进行权限的操控。

技术介绍·Servlet3.0Servle... 第九章优化Web服务器流量--使用Varnish缓存静态网页 五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验.doc成绩指导教师日期张歆奕2015-6-29实验三基于自定义PWM的乐曲演奏实验二、实验要求1、理解PWM设计原理2、设计PWM自定义组件3、利用SOPCBuilder构建乐曲演奏电路的微处理器系统4、构建硬件设计电路5、编写乐曲C语言程序6、用niosII软件下载程序,调试3、实验原理1、PWM的基本... 过去7年,上汽通用一直在大数据技术方面不断做新的尝试,这个尝试的根本目标之一是解决制造业的传统数据仓库无法支撑海量数据加载、分析的问题。

上汽通用的大数据开发经理徐雷,结合多年来负责上汽通用大数据平台的建设以及相关开发工作经验,在7月12日的KylinDataSummit上,为大家深入讲解了这几年上汽通用大数据平台的设计、演进、发展历程。

今天,小编就带大家一起... 1、创新点:本文解决了目标检测中的两个关键问题。

问题一:速度经典的目标检测算法使用滑动窗法依次判断所有可能的区域。

本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上提取特征,进行判断。

问题二:训练集经典的目标检测算法在区域中提取人工设定的特征(Haar,HOG)。

本文则需要训练深度网络进行特征提取。

可供使用的有两个数据库:一个较大的识别库(ImageNetILSVC... xampp的安装网址:https://www.apachefriends.org/zh_cn/download.html(1)进入网址选择自己的系统点击下载(2)点击next(3)继续点击next(4)选择安装目录,放在某个磁盘的根目录下。

点击next。

(5)语言:选择英语就好了。

(6)next>(7)点击next继续安装就成功了(8)找到存放的目录下双击启动就好了(9)点击start... 推荐文章 linux去处文件中的r,linux去掉windows下文件中的\r_草莓味儿柠檬的博客-程序员信息网 利用C#导出QQWry.Dat中IP地址到其他文件_weixin_33809981的博客-程序员信息网 linux下autocad完美替代品bricscad的安装运行_astrinwell的博客-程序员信息网 jQueryEasyUI_毋十三的博客-程序员信息网_jqueryeasyui javagc后端开发要学吗_java后端学习路线_luckyton的博客-程序员信息网 win10端口是否被占用的查看方法_syn_40609919的博客-程序员信息网 sql服务器显示error,SQLServer连接服务器错误的解决方案_weixin_39545895的博客-程序员信息网 [git]commit相关的操作_weixin_30882895的博客-程序员信息网 热门文章 可以组合道具的Java游戏_我的世界:Java版独享!被隐藏的世界类型,包含各种罕见道具!..._鬼冢喜之郎的博客-程序员信息网 .NETCore开发日志——Dapper与MySQL_aixing8475的博客-程序员信息网 libuv中文编程指南(零)前言_weixin_33757609的博客-程序员信息网 mysqlgranttables_mysql8.0版本skip-grant-tables出现的新问题_weixin_39631667的博客-程序员信息网 【erlang002】erlang中的错误及异常处理_harrymore2011的博客-程序员信息网_erlang错误处理 python索引器_防止机器人索引的Python装饰器_culuo8053的博客-程序员信息网 linux取消回车用什么参数,Linux如何去掉多余的回车符_weixin_39636718的博客-程序员信息网 rockchipalsa调试声卡_mayday_80的博客-程序员信息网 相关标签



請為這篇文章評分?