opencv相机标定(opencv相机标定原理)
本篇文章给大家谈谈opencv相机标定,以及opencv相机标定原理对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、opencv双目标定,知道左右相机的旋转和平移矩阵,如何求出两个相机的相对位置
- 2、OpenCV 基础功能简介
- 3、相机标定的技术
- 4、opencv 标定得到相机内参数和外参数后,怎么由图像坐标求世界坐标呢?谢谢!
- 5、对摄像头获取的图像处理需要摄像头的开发包吗?Qt+OpenCV 要进行相机矫正、标定,对图像去噪、轮廓提取等
- 6、单目相机标定___一、原理
opencv双目标定,知道左右相机的旋转和平移矩阵,如何求出两个相机的相对位置
非常简单。
将第一个矩阵的旋转矩阵转换为单位矩阵,平移向量转换为0向量,即可。
[img]OpenCV 基础功能简介
OpenCV(开源计算机视觉库 http://opencv.org ) 是一个开源的BSD许可库,包含数百种计算机视觉算法。由于功能强大,几乎所有用到的复杂的图片分析处理都会用到,所以有必要了解下它具体都有什么功能,方便我们使用。
官方文档: OpenCV 教程 — OpenCV 2.3.2 documentation
Core functionality :基础数据模块,包含一些发杂数据结构和基本函数方法,主要包含如下的内容:
OpenCV基本数据结构(Basic Structures);
基本的C语言数据结构和操作(Basic C Structures and Operations);
动态数据结构(Dynamic Structures);
数组操作相关函数(Operations on Arrays);
绘图功能(Drawing Functions);
XML和YAML语法的支持(XML/YAML Persistence);
XML和YAML语法的支持的C语言接口(XML/YAML Persistence (C API));
聚类(Clustering)橡氏升;
辅助功能与系统函数和宏(Utility and System Functions and Macros);
与OpenGL的互操作(OpenGL interoperability);
Image processing :图梁老像处核余理模块,包括线性和非线性图像滤波,几何图像变换(调整大小,仿射和透视扭曲,基于通用表的重新映射),颜色空间转换,直方图等。imgproc,是Image Processing的简写。图像处理模块,主要包含以下内容:
线性和非线性的图像滤波(Image Filtering);
图像的几何变换(Geometric Image Transformations);
图像的其他变换(Miscellaneous Image Transformations);
直方图(Histograms);
结构分析和形状描述(Structural Analysis and Shape Descriptors);
运动分析和目标跟踪(Motion Analysis and Object Tracking);
特征检测(Feature Detection);
目标检测(Object Detection);
是High-level GUI and Media I/O的简写。高层用户界面模块和媒体输入/输出模块,主要包含以下内容:
用户界面(User Interface);
图片和视频的读写(Reading and Writing Images and Video);
QT新功能(Qt New Functions);
2D Features Framework的简写。二维特征框架模块,主要包含以下内容:
人脸识别
VR和AR
特征的检测和描述(Feature Detection and Description);
特征检测器的通用接口(Common Interfaces of Feature Detectors);
描述符提取器的通用接口(Common Interfaces of Descriptor Extractors);
描述符匹配器的通用接口(Common Interfaces of Descriptor Matchers);
通用描述符匹配器通用接口(Common Interfaces of Generic Descriptor Matchers);
关键点和匹配结果的绘制功能(Drawing Function of Keypoints and Matches);
目标分类(Object Categorization);
Clustering and Search in Multi-Dimensional Spaces,多维空间聚类和搜索模块,主要包含以下内容:
快速近视最近邻搜索(Fast Approximate Nearest Neighbor Search);
聚类(Clustering);
是Video Analysis的简写。视频分析模块,主要包含以下内容:
运动分析和目标跟踪(Motion Analysis and Object Tracking),视频相关的,上面提到的是图片相关的;
是Camera Calibration and 3D Reconstruction的简写。这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法,3D信息的重建等
机器学习库:统计模型、随机树、神经网络等等…
检测预定义类的对象和实例(例如,面部,眼睛,马克杯,人,汽车等)。
视频分析模块,包括运动估计,背景减法和对象跟踪算法。
图像修复和图像去噪两部分
相机标定的技术
基于离线相机标定
基于离线相机标定技术需要准确的相机内参数和外参数作为重构算法的输入和先决条件,目前最为流行的离线相机标定算法是Tsai在1987年提出的[Tsai1987],Tsai方法使用一个带有非共面专用标定标识的三维标定物来提供图像点和其对应的三维空间点的对应并计算标定参数。Zhang在1998年提出了另一个实用方法 [Bouguet2007],该方法需要对一个平面标定图案的至少两幅不同视图来进行标定。加州理工学院的相机标定工具对以上两个方法均作了有效实现,并且已经被集蠢巧成到Intel的视觉算法库OpenCV中[OpenCV2004]。通过标定算法,可以计算相机的投影矩阵,并提供场景的三维测度信息。在不给定真实场景的绝对平移、旋转和放缩参数的情况下,可以达到相似变换级别的测度重构。
基于在线相机标定
在很多场合下,如缺失标定设备或相机内参数持续改变的情况下,没有足够数据来支持离线相机标定,对这类场景的多视三维重构就要用到在线相机标定的技术。在线标定和离线标定框架的主要区别在于标定相机或估计相机参数的方法上。在大多数文献中在线标定技术被称为自标定。自标定方法可以大致分为两类:基于场景约束的自标定和基于几何约束的自标定。
①基于场景约束的自标定
合适的场景约束往往能够在很大程度上简化自标定的难度。比如说,广泛存在于建筑或人造场景中的平行线能够帮助提供三个主正交方向的消视点和消视线信息,并能够据此给出相机内参数的代数解或数值解 [Caprile1990]。消视点的求解可以通过投票并搜索最大值的方法进行。Barnard采用高斯球构造求解空间 [Barnard1983]。Quan、Lutton和Rother等给出了进一步的优化策略[Quan1989, Lutton1994, Rother2000]。文献[Quan1989]中给出了搜索解空间的直接算法,Heuvel给出的改进算法加入了强制性的正交条件 [Heuvel1998]。Caprile给出了基于三个主正交方向消视点的几何参数估计法,Hartley使用标定曲线计算焦距 [Hartley2003]。Liebowitz等进一步从消视点位置构造绝对二次曲线的约束并用考克斯分解求解标定矩阵 [Liebowitz1999]。
② 基于几何约束的自标定
基于几何约束的自标定不需要外在场景约束,仅仅依靠多视图自身彼此间的内在几何限制来完成标定任务。利用绝对二次曲面作自标定的理论和算法最先由Triggs提出 [Triggs1997]。基于Kruppa方程求解相机参数则始于 Faugeras, Maybank等的工作 [Faugeras1992, Maybank1992]。Hartley给予基本矩阵推导出了Kruppa方程的另一个推导 [Hartley1997]。文献[Sturm2000]则给出了Kruppa方程的森卜不确定性的理论探讨。层进式自标定技术被用于从射影重构升级到度量重构 [Faugeras1992]。自标定技术的一个主要困难在于它不是无限制地用于任意图像或视频序列,事实上,存在着特定运动序列或空间特征分布导致自标定求解框架的退化和奇异解。文献[Sturm1997]给出了关于退化情形的详细讨论和分类。对一些特殊可解情况存带春键在性和求解方法的讨论可以参考文献[Wilesde1996]等。
opencv 标定得到相机内参数和外参数后,怎么由图像坐标求世界坐标呢?谢谢!
只有相机标定参数,
仅通过图像是求不出世界坐标的。
原因是:图像是二维的而世界坐标要求是三维的。
标枯大物定过的相机只是起到了量角器的作用,却不能当做尺子来用。
求世界坐标的话,还需知道更多的图像中的实际大小。
正如你做相机标定时,仿租要知道确切的相机外参数,
就需要先知道没液标定板上每个方格的实际尺寸大小。
对摄像头获取的图像处理需要摄像头的开发包吗?Qt+OpenCV 要进行相机矫正、标定,对图像去噪、轮廓提取等
如果你电脑操作系统能驱动摄像头,能获取到摄像头的图像,一般就用不到绝晌摄像头开发包。
那些相机矫正、凯昌标定盯宏扒,图像去噪、轮廓提取等步骤所需的算法在OpenCV里有,只要你调用OpenCV的函数能够获取图像和视频,接下来的处理基本上就是OpenCV编程的事了
单目相机标定___一、原理
原理:
成像模型的坐标系为:世界坐标系 -- 相机坐标系 -- 图像坐标系 -- 像素坐标敬羡系
先说从相机坐标系到图像坐标系的变换:
从针孔成像模型说起:
理想情况如上所示,但实际上成像芯片的中心通常不在光轴上。
原本的焦距是f,这里把f拆成2个不同的焦距,一个是x轴的焦距,一个是y轴的焦距
这种变换可以使用齐次坐标。
给q(x, y)增加了一个维度w,即为q(x, y, w)
下图所示,网上一些资料中也有这种形式:
x0、y0为在图像平面上的主点坐标,是Cx,Cy的另一种形式,
其中s为坐标轴倾斜参数,理想情况下为0,其他参数都是一样的。
—————————————————————————————————
我们已经得到了内参矩阵,能够从相机坐标系转换到图像坐标系上,
接下来说如氏旦何 得到外参矩阵,将其从世界坐标系转换到相机坐标系上
从世界坐标系转换到相机坐标系上属于刚体变换,即不会发生形变,也就是说只有 旋转 和 平移 。
再把偏移矩阵T加上即可,
偏移矩阵T为 [Tx, Ty, Tz]的转置,是X、Y、Z方向上的平移。
将旋转矩阵R和偏移矩阵T合起来即得外参矩阵即为:
——————————————————————————————————
图像坐标系和像素坐标系之间的转换:
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。
图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成歼稿扰像平面的中点或者叫principal point。图像坐标系的单位为mm,属于物理单位,
而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以
这两者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel = dx mm
点(u,v)为像素坐标系上的点,对应的图像坐标系上的点为(x,y)
相机的内参和外参可以通过张正友标定获取。通过最终的转换关系来看,
一个三维世界中的坐标点,可以在图像中找到一个对应的像素点,
在知道摄像机高度的情况下,单目相机能够测距
/*
以下为曾经的错误观点
但是反过来,通过图像中的一个点找到它在三维中对应的点就很困难,因为我们并不知道等式左边的Zc值。这个Zc可近似看做相机坐标系中相机到物体的距离。
在我看来,二维图像中的一个点,对应在三维空间中是一条线,因此如果不知道相机剧被测物体距离,是无法从二维图像上的点推导出三维空间中某个点的坐标的。
*/
————————————————————————————————
透镜畸变 :
(写了这么多,写不动了,透镜畸变原理可以在《学习OpenCV》第11章找到相关内容,挺详细的)
关于opencv相机标定和opencv相机标定原理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。