0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机视觉的相机标定问题解析

QQ475400555 来源:机器视觉沙龙 2023-06-26 09:51 次阅读

网友snow2012720

我刚开始学习计算机视觉的双目三维重建内容,感觉好多内容不懂,看到你的博文,了解到你对双目标定三维重建这些有深入的研究,您是过来人了,能否帮忙给我在学习标定匹配三维重建过程中给予指点?包括看什么资料,用什么算法程序等等,非常感谢!

答复:

其实双目三维重建这一块我也没有深入的原理研究,只是有一些相关经验吧。有一些资料对于这方面是很重要的,包括:

1、相机标定的理论与工具

相机标定是计算机视觉最基础也是至关重要的一个问题,标定的精度够不够决定了以后的校正、去畸变、配准、计算三维坐标、恢复三维模型能否进一步做下去。这方面推荐你看张正友关于相机标定的paper(谷歌一下吧),这是这方面最重要的一个理论基础,目前我们使用的matlab标定工具箱 和 opencv标定api都是以这篇论文的方法为基础的。

2、熟悉matlab calibration tollbox、 matlab computer vision toolbox 和 opencv

这是做这一块最重要的几个工具。opencv 的sample中有一个源程序 你可以到opencv的安装路径下去找stereo_match .cpp stereo_calib.cpp这两个程序是opencv给的双目匹配、相机标定的例子,跑一遍就知道整个过程了。matlab computer vision toolbox是2010版本才有的貌似,反正2008没有

3、网上的相关资料

北航的一个博士的opencv学习笔记,对于初学者非常有帮助

http://blog.csdn.net/chenyusiyuan/article/details/5072597

opencv中文论坛

opencv的书籍:《学习opencv》很经典的一本书

opencv 帮助文档 http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html

有条件的话找一篇硕士或者博士论文看看,会让你对整个领域有一个全貌的了解

我所知道的也只有这些了,祝学习顺利!

QQ 网友龙卷风问:

我现在在做标定时 得到的相机焦距在x y方向所占的象素不一样 (一个994 一个999)但我的象元是方形的 5.2*5.2 这是为什么啊?

另外 我已知特征点的象素坐标 想得到他的摄像机系下的坐标 其中z值 我直接用的焦距 这样对吗?

答复:

焦距在x y方向所占的象素不相等,表明一个像素的x、y两个方向的尺寸不完全相等,可能的原因:(1)由于工艺条件限制,做不到象元的长宽完全的相等 (2)标定的过程本身有误差 不知道你采集图片是否足够多,一般20张以上为佳

你给我看的结果 焦距在x y方向所占的象素似乎差别不算大 还是可以的

已知特征点的象素坐标 想得到他的摄像机系下的坐标 如果你说的特征点 指的是标定板的方格顶点, 这应该根据相机的外参数可以得到,也就是拍这张照片时标定板坐标系和相机坐标系之间的变换关系(旋转矩阵、平移向量描述)。直接用的焦距是怎么做的,我不太明白,能否说一下你的思路,如果直接用焦距作为Z值,肯定是没有意义的了 呵呵

网友tingingjiayou:

我想问一下,如果使用标定工具箱进行标定,扭曲系数表示的是什么意思?怎么样看出主点的偏移量,谢谢您了!帮我解决下

答复:

在http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html 中,对扭去系数Skew coefficient的定义是:

The skew coefficient defining the angle between the x and y pixel axes is stored in the scalar alpha_c.

翻译一下,扭曲系数就是一个像素的x,y两个方向的夹角的表示,以标量alpha_c表示。

该页面还有一段话:

Observe that fc(1) and fc(2) are the focal distance (a unique value in mm) expressed in units of horizontal and vertical pixels. Both components of the vector fc are usually very similar. The ratio fc(2)/fc(1), often called "aspect ratio", is different from 1 if the pixel in the CCD array are not square. Therefore, the camera model naturally handles non-square pixels. In addition, the coefficient alpha_c encodes the angle between the x and y sensor axes. Consequently, pixels are even allowed to be non-rectangular. Some authors refer to that type of model as "affine distortion" model.

翻译一下,大意是说, fc(2)/fc(1)可以不等于1,表明一个像素的x、y两个方向的尺寸可以不相等,并且,一个像素的x、y两个方向可以不垂直,以至于一个像素不一定要是长方形!扭曲系数就是度量这种远离矩形的程度的。

关于主点的偏移量,关键是要理解 主点位置cc 和 主点偏移量 的概念。

主点偏移量就是主点位置距离照片的中心的物理距离(以mm为单位,不是像素为单位)

http://blog.sina.com.cn/s/blog_77805ef60100s9a6.html 这里有答案,转述如下

该如何计算像主点偏移量?

像主点偏移量的计算:我们相机检校获得的是像主点位置坐标。

相机检校参数:

主点x0:2785.2544主点y0:1895.4608(单位:像素)

像幅5616*3744像素,像素大小:6.41um

该如何计算像主点偏移量?

x偏移量=(x0-5616/2)*6.41um

y偏移量=(y0-3744/2)*6.41um

然后在分别除以1000,换算为mm。

网友cy610374797 2012-06-02 19:43 表示:“我只想要一个代码,输入像素点的坐标,输出该点对应的摄像机坐标,求助”

答复如下:

你想要的这个效果,就是双目视觉领域的研究想要达到的最终效果:通过两个相机的照片或者视频信息,得到照片中特征点的三维坐标信息,即通过双目(两个摄像头)达到“视觉”(获得物体的三维坐标信息)。很遗憾的告诉你,我对这方面的积累还远远不足以给你一个直接就能用的代码。我只能就我的理解,写一写我对实现这个效果的步骤的认识,未必全正确,请仔细推敲。

要达到这个目的,要分两步,第一步,是摄像机标定,通过标定,得到左右相机的内参外参,以及右边相机相对于左边相机的位置和角度关系(涉及旋转和平移)。这也就是我的这四篇文章一直在讲的事。

双目标定的原理及MATLAB标定工具箱的使用

MATLAB标定工具箱的使用(一)、(二)、(三)

第二步,就是利用这些标定好的信息,通过照片上的像素位置来计算世界三维坐标了,这就是计算机视觉中三维重建所研究的问题。

我这里提供了一个三维重建的计算函数,使用matlab写的,通过两幅图像中的匹配点重建该匹配点在世界坐标系的坐标

注意,这里提到的两幅图中的射影矩阵实际上就是MATLAB标定工具箱的使用(一)所述的投影矩阵,即内参矩阵和外参矩阵的乘积,而且这里的重建需要知道特征点在两副照片中像素位置的对应关系。这种对应关系可以借用对极线来刻画,建议去了解一些对极线的内容,这方面我也不是很懂。

function X= Reconstruction(Pt1,Pt2,P1,P2)

%通过两幅图像中的匹配点重建该匹配点在世界坐标系的坐标

%输入说明

% Pt1 第一幅图像中匹配点的像素坐标(2列)

% Pt2 第二幅图像中匹配点的像素坐标(2列)

% P1 第一幅图像的射影矩阵(3*4)

% P2 第二幅图像的射影矩阵

Np=size(Pt1,1);

X=zeros(Np,4);

for i=1:Np

A=zeros(4,4);

A(1,:)=P1(1,:)-Pt1(i,1)*P1(3,:);

A(2,:)=P1(2,:)-Pt1(i,2)*P1(3,:);

A(3,:)=P2(1,:)-Pt2(i,1)*P2(3,:);

A(4,:)=P2(2,:)-Pt2(i,2)*P2(3,:);

T= MinEigVector ( A'*A );%求最小特征值对应的特征向量

X(i,:)=(T/T(4))';

end

csdn 网友chenyianhfut 问我:

大侠,你好,想问下,标定工具箱标定出来的fc是什么啊,我通过不同的镜头拍摄的图像进行标定,fc都不一样,能通过这些值求出有效焦距(mm)吗,谢谢

为了和其他网友分享,我将答复发表如下:

fc的意思是用照片的像素尺寸折算出来的相机焦距,可以参考:

http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html

这里的解释是Focal length: The focal length in pixels is stored in the 2x1 vector fc.

既然是焦距,不同的镜头焦距不一样就很正常了。你的有效焦距的问题是这样的,记有效焦距为f(mm),则fc=[f/dx , f/dy] 这里的dx dy分别表示照片上一个像素点在水平和垂直方向对应于成像平面的物理距离(mm为单位),注意fc包含两个方向的值。求有效焦距(mm)需要知道dx dy。建议你参考http://wenku.baidu.com/view/51cbe7da6f1aff00bed51edf.html

网友limeng198616 问:

您好,见您写了好几篇关于摄像机标定的博文,您对摄像机标定因该比较精通。我这段时间正在用matlab标定工具箱,但我发现标定出来的主点坐标误差非常大,我在实际中根本就没法子用。这是怎么个一回事啊?例如同一个摄像机第一次标定出来的结果是300*282,第二次标定就成了367*277,期间相机完全没动过,就是两次标定用的图像不一样。

答复如下:

你说的这个问题我没有细究过,不过有两点有必要确认一下:一、对相机的一次标定要多用几张图才会比较准确,如果你的两次标定是每次用一张图,那不准是很正常的;二、如果你的相机是自动变焦的,也可能会造成主点的计算差别大;三、如果不是前两种原因,建议你做采集几组照片标定试试看。matlab的相机标定工具箱calibration toolbox的标定是先预估然后做迭代优化,预估时,主点的值一定是照片的尺寸的一半,如照片是1024*768 那么主点初值是512*384 经过优化以后会有小范围调整,不会偏差太远。

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像机
    +关注

    关注

    3

    文章

    1421

    浏览量

    58999
  • 计算机视觉
    +关注

    关注

    8

    文章

    1600

    浏览量

    45622

原文标题:关于相机标定的问题答复网友

文章出处:【微信号:机器视觉沙龙,微信公众号:机器视觉沙龙】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器视觉计算机视觉的关系简述

    初涉机器视觉领域,总是容易将其与计算机视觉这一概念混淆。实际上两者确实存在一定的相同之处,但也不能因此而将这两者视为同一概念,因为这两者还存在着显著的差别。而与此同时,两者也还有着密不可分的关系
    发表于 05-13 14:57

    NI视觉相机标定

    ``【课程推荐】龙哥手把手教你学LabVIEW机器视觉设计教程请问哪位大神有Labview机器视觉相机标定的程序文件,麻烦分享一下?在下不甚感激!qq:599108466.``
    发表于 05-25 12:36

    计算机视觉基础知识

    计算机视觉基础题目
    发表于 06-05 16:33

    学习计算机视觉的建议有哪些

    初学计算机视觉的切身建议
    发表于 06-18 10:12

    什么是计算机视觉看了就知道

    什么是计算机视觉
    发表于 01-11 07:47

    汇总 |计算机视觉系统学习资料下载 精选资料分享

    计算机视觉干货资料,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、姿态估计、多视图几何、多传感器融合等方向【
    发表于 07-27 07:51

    计算机视觉论文速览

    AI视野·今日CS.CV 计算机视觉论文速览transformer、新模型、视觉语言模型、多模态、clip、视角合成
    发表于 08-31 08:46

    深度学习与传统计算机视觉简介

    文章目录1 简介1.1 深度学习与传统计算机视觉1.2 性能考量1.3 社区支持2 结论3 参考在计算机视觉领域中,不同的场景不同的应用程序需要不同的解决方案。在本文中,我们将快速回顾
    发表于 12-23 06:17

    计算机视觉贾云德pdf版

    计算机视觉
    发表于 05-09 11:00 0次下载

    opencv相机标定原理与步骤

    我们首先介绍下计算机视觉领域中常见的三个坐标系:图像坐标系,相机坐标系,世界坐标系。以及他们之间的关系。然后介绍如何使用张正友相机标定
    发表于 12-04 16:56 1.8w次阅读
    opencv<b class='flag-5'>相机</b><b class='flag-5'>标定</b>原理与步骤

    计算机视觉与机器视觉区别

     “计算机视觉”,是指用计算机实现人的视觉功能,对客观世界的三维场景的感知、识别和理解。计算机视觉
    的头像 发表于 12-08 09:27 1.2w次阅读

    相机标定的逻辑和学习资料详细概述

    相机标定可以说是计算机视觉/机器视觉的基础,但是初学者不易上手,本文将给读者整理一遍相机
    的头像 发表于 06-01 09:54 4011次阅读
    <b class='flag-5'>相机</b><b class='flag-5'>标定</b>的逻辑和学习资料详细概述

    计算机视觉常用算法_计算机视觉有哪些分类

    本文主要介绍了计算机视觉常用算法及计算机视觉的分类。
    的头像 发表于 07-30 17:34 1.3w次阅读

    机器视觉计算机视觉的区别

    机器视觉计算机视觉的区别 机器视觉计算机视觉是两个相关但不同的概念。虽然许多人使用这两个术语
    的头像 发表于 08-09 16:51 1143次阅读

    相机标定究竟在标定什么?

    这个逼近的过程就是「相机标定」,我们用简单的数学模型来表达复杂的成像过程,并且求出成像的反过程。标定之后的相机,可以进行三维场景的重建,即深度的感知,这是
    的头像 发表于 10-18 17:00 566次阅读
    <b class='flag-5'>相机</b><b class='flag-5'>标定</b>究竟在<b class='flag-5'>标定</b>什么?