基于OpenCV做“三维重建”(3)--相机参数矩阵
通过前面的相机标定,我们能够获得一些参数模型。但是这些相机的参数矩阵到底是什么意思?怎样才能够判断是否正确?误差都会来自哪里?这里就必须要通过具体实验来加深认识。采集带相机参数的图片具有一定难度,幸好我之前有着不错的积累—这里一共有两款数据集,一款来自《OpenCV计算机视觉编程攻略》第3版,家里面好像还有一款微单可以进行采集,这样我们可以进行交叉比对,看一看获得的参数是否符合实际情况:


<?xml version="1.0"?>
<opencv_storage>
<Intrinsic type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>
1.3589305122261344e+003 0. 5.7505355544729957e+002
0. 1.3565816672769690e+003 6.0423226535731465e+002
0. 0. 1.
</data>
</Intrinsic>
<Distortion type_id="opencv-matrix">
<rows>1</rows>
<cols>14</cols>
<dt>d</dt>
<data>
9.5113243912423840e+001 1.4262144540955842e+003
5.2119492051277685e-003 2.8847713358900241e-003
1.2859720255043484e+002 9.5182218776001392e+001
1.4741397414456521e+003 6.8332022963370434e+002 0. 0. 0. 0. 0. 0.</data></Distortion>
</opencv_storage>

<?xml version="1.0"?>
<opencv_storage>
<Intrinsic type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>
4.0927176647992695e+002 0. 2.3724719115090161e+002
0. 4.0870629848642727e+002 1.7128731207874495e+002
0. 0. 1.
</data></Intrinsic>
<Distortion type_id="opencv-matrix">
<rows>1</rows>
<cols>14</cols>
<dt>d</dt>
<data>
1.8631118716959048e+001 -5.0639175384902096e+001
-5.2453807582033300e-003 -9.2620440694993842e-003
5.2367454865598742e+000 1.9002289932447418e+001
-4.8948501055979285e+001 -6.5115263545215851e-001 0. 0. 0. 0. 0. 0.</data></Distortion>
</opencv_storage>
<?xml version="1.0"?>
<opencv_storage>
<Intrinsic type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>
3.9136489375791234e+003 0. 2.6879080836687035e+003
0. 3.9811430968074164e+003 1.9454067884808153e+003
0. 0. 1.
</data></Intrinsic>
<Distortion type_id="opencv-matrix">
<rows>1</rows>
<cols>14</cols>
<dt>d</dt>
<data>
2.5259392493942739e-002 -3.2418875955674309e-001
3.6376246418718853e-004 3.2526045276898190e-003
-8.1692713459156296e-002 2.5694845194956913e-002
4.7826938999253371e-001 -1.3315729771950511e+000 0. 0. 0. 0. 0. 0.</data></Distortion>
</opencv_storage>
<data>
4.0927176647992695e+002 0. 2.3724719115090161e+002
0. 4.0870629848642727e+002 1.7128731207874495e+002
0. 0. 1.
</data>






<data>
3.9136489375791234e+003 0. 2.6879080836687035e+003
0. 3.9811430968074164e+003 1.9454067884808153e+003
0. 0. 1.
</data>
基于OpenCV做“三维重建”(3)--相机参数矩阵的更多相关文章
- 基于OpenCV做“三维重建”(1)--找到并绘制棋盘
<OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本 ...
- 基于OpenCV做“三维重建”(2)--封装标定过程
既然已经能够找到了标定点,那么下边的工作就是使用标定结果了.[这本书在这里的内容组织让人莫名其妙]但是通过阅读代码能够很方便地串起来. /*------------------------------ ...
- 基于OpenCV做“三维重建”(4)--相机姿态还原和实现三维重建
v当我们构建成功了viz,就可以使用3维效果给我们提供的便利,进一步进行一些3维的操作. 在这个动画中,注意图片后面的那个黑线,对应的是相机的位置. /*----------------------- ...
- 基于OpenCV做“三维重建”(0)-- OpenCV3.2+VIZ6.3.0在vs2012下的编译和使用
一.问题提出 ViZ对于显示3维的效果图来说,非常有帮助:我在使用OpenCV进行双目测距的过程中,有一些参数希望能够通过可视化的方法显示出来,所以参考了这方面相关的资料.做了一些实验 ...
- 学习笔记:使用opencv做双目测距(相机标定+立体匹配+测距).
最近在做双目测距,觉得有必要记录点东西,所以我的第一篇博客就这么诞生啦~ 双目测距属于立体视觉这一块,我觉得应该有很多人踩过这个坑了,但网上的资料依旧是云里雾里的,要么是理论讲一大堆,最后发现还不知道 ...
- 基于 OpenCV 的人脸识别
基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...
- [转载]卡尔曼滤波器及其基于opencv的实现
卡尔曼滤波器及其基于opencv的实现 源地址:http://hi.baidu.com/superkiki1989/item/029f65013a128cd91ff0461b 这个是维基百科中的链接, ...
- 图像矫正-基于opencv实现
一.引言 上篇文章中四种方法对图像进行倾角矫正都非常有效.Hough变换和Radon相似,其抗干扰能力比较强,但是运算量大,程序执行慢,其改进方法为:我们可以不对整幅图像进行操作,可以在图像中选取一块 ...
- 基于Opencv自带BP网络的车标简易识别
代码地址如下:http://www.demodashi.com/demo/12966.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和测 ...
随机推荐
- 前端面试题汇总(主要为 Vue)
前端面试题汇总 1. 谈谈你对MVVM开发模式的理解 MVVM分为Model.View.ViewModel三者. 1)Model:代表数据模型,数据和业务逻辑都在Model层中定义: 2)View:代 ...
- Vs Code 中文包设置
首先打开Vs Code 然后点击扩展 下载中文包 安装中文包 在没打开任何文件的时候我们可以看到一些提示 这个时候使用快捷键 Ctrl + Shift + P (显示所有命令),然后选择" ...
- [crypto] AEAD是啥
AEAD这个缩写根据不同的语境有两个理解角度:认证加密机制,认证加密方式. 认证加密机制是指:一些用来完成认证加密工作的方法,拆分为认证和加密两部分来做,先加密后加密先认证后认证都无所谓,整个过程或者 ...
- 转载--python模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- C++11 新特性之operator "" xxx
从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如: class Person { public: Person(const std::string& name): _ ...
- Python002-操作MSSQL(Microsoft sql server)基础示例(二)
前文http://www.cnblogs.com/fengpingfan/p/7675291.html,讲述了python操作mssql的步骤.环境创建.常用方法等,本文将实例演示python操作ms ...
- C语言中负数的存储方式
详细介绍负数的文章: https://blog.csdn.net/daiyutage/article/details/8575248 1.以char类型举例,其取值范围是 -128 ~ 127,即-2 ...
- Java对象在Hibernate持久化层的状态
-临时状态:刚用new语句创建对象,还没有被持久化,并且不处于Session缓存中.处于临时状态的java对象被称为临时对象. -持久化状态:已经被持久化,并且加入到Session的缓存中.处于持久化 ...
- com.mysql.jdbc.connection和java.sql.connection的区别
com.mysql.jdbc.Connection 是mysql自己的接口 针对于对mysql的出来,java.sql.Connection 这是一个公共的接口包括对mysql的支持oracle,sq ...
- reduce函数
python中的reduce python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是 ...