问题标签 [camera-calibration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3780 浏览

math - 自动相机校准

来自维基百科,相机切除术是找到产生给定照片或视频的相机真实参数的过程。相机切除也称为几何相机校准。

目前我正在使用适用于 Matlab的相机校准工具箱进行相机校准。工具箱返回校准参数,例如焦距、主点、偏斜和失真。然而,这种方法的问题在于它需要一个额外的步骤来校准相机,方法是使用一个特殊的校准对象,比如棋盘。此外,它仅适用于相机的一个焦点。

如何在不手动校准的情况下获取校准参数?例如,微软的Photosynth如何对其图像进行相机校准?

0 投票
1 回答
3142 浏览

math - 为什么有 3 个相互冲突的 OpenCV 相机校准公式?

我对用于相机校准目的的OpenCV 的各种坐标参数化有疑问。问题在于,关于图像失真公式的三种不同信息来源显然对所涉及的参数和方程给出了三种非等效描述:

(1) Bradski 和 Kaehler在他们的书 “Learning OpenCV…”中写到镜头畸变(第 376 页):

其中 r = sqrt( x^2 + y^2 )。

假设,(x,y)是未校正的捕获图像中的像素坐标,对应于具有坐标(X,Y,Z)的世界点对象,参考相机框架,对于

其中 fx、fy、cx 和 cy 是相机的内在参数。因此,从捕获的图像中获得 (x, y),我们可以通过应用上述前两个校正表达式获得所需的坐标 (xcorrected, ycorrected) 以生成捕获的世界场景的未失真图像。

然而...

(2) 当我们查看 Camera Calibration and 3D Reconstruction 部分下的 OpenCV 2.0 C Reference 条目时,就会出现复杂情况。为了便于比较,我们从所有世界点 (X, Y, Z) 坐标开始相对于相机的参考系表示,就像在 #1 中一样。因此,变换矩阵 [ R | t ] 无关紧要。

在 C 参考文献中,表示:

其中 r' = sqrt( x'^2 + y'^2 ),最后是

可以看出,这些表达式并不等同于 #1 中的表达式,因此两组校正后的坐标 (xcorrected, ycorrected) 和 (u, v) 并不相同。为什么矛盾?在我看来,第一组更有意义,因为我可以为其中的每个 x 和 y 附加物理意义,而当相机对焦时,我发现 x' = X / Z 和 y' = Y / Z 没有物理意义长度不完全是 1。此外,我们无法计算 x' 和 y',因为我们不知道 (X, Y, Z)。

(3) 不幸的是,当我们参考英特尔开源计算机视觉库参考手册的镜头失真部分(第 6-4 页)中的著作时,事情变得更加模糊,其中部分指出:

“令(u,v)为真实像素图像坐标,即具有理想投影的坐标,(ũ,ṽ)为对应的真实观察(畸变)图像坐标。同理,(x,y)为理想(畸变) -free) 和 ( x ̃, y ̃ ) 是真实的(失真的)图像物理坐标。考虑到两个扩展项,得到以下结果:

其中 r = sqrt( x^2 + y^2 )。...

“因为 u ̃ = cx + fx * u 和 v ̃ = cy + fy * v ,......结果系统可以重写如下:

后一种关系用于使来自相机的图像不失真。”

好吧,看起来涉及 x ̃ 和 y ̃ 的表达式与本文开头给出的涉及 xcorrected 和 ycorrected 的两个表达式一致。然而,根据给定的描述,x ̃ 和 y ̃ 并不指代校正坐标。我不明白坐标( x ̃, y ̃ )和( u ̃, v ̃ )的含义之间的区别,或者就此而言,对( x, y )和( u, v )之间的区别。从他们的描述看来,他们唯一的区别是 (x̃, y ̃ ) 和 (x, y ) 指的是“物理”坐标,而 (u ̃, v ̃ ) 和 (u, v) 不是。这种区别到底是什么?不都是物理坐标吗?我迷路了!

感谢您的任何意见!

0 投票
1 回答
3207 浏览

c# - 像素坐标到 3D 线(opencv)

我在屏幕上显示了一张通过 cvInitUndistortMap 和 cvRemap 未失真的图像(已完成相机校准),并且用户单击图像中的一个特征。所以我有特征的(u,v)像素坐标,我也有内在矩阵和失真矩阵。

我正在寻找的是相机/真实世界坐标中的 3D 线方程,用户单击的特征必须位于该坐标上。我已经有了相机图像平面和特征之间的垂直距离,所以我可以将它与上述方程结合起来,得到空间中特征的 (X,Y,Z) 坐标。

听起来很简单(逆内在矩阵之类的?),但我在任何地方都找不到分步说明。首选 C++ 或 C# 代码。

0 投票
2 回答
2162 浏览

opencv - 相机和投影仪校准

我有一个关于相机校准的问题。我遵循了《Learning OpenCV for cameracalibration process》一书中显示的方法。但是校准(未失真)的图像比原始图像差。我的相机是否可能不再需要校准?(意味着校准是由某些驱动程序或类似的东西完成的)?事实上,原始图像似乎根本没有失真。我知道这不仅与失真有关,而且您会建议我做什么?

感谢您的每一个回复

0 投票
1 回答
434 浏览

c++ - 几何 -> OpenGL

我无法在 OpleGL 中得到正确的转换。

我有 point3D - P(X,Y,Z) 和投影矩阵 M,它等于 K*(R|T),其中

K - 相机校准矩阵

替代文字

(R|T) - 点(物体)坐标系变换(R - 旋转矩阵,T - 平移向量)

结果,我们将点投影为 p = M*P

我知道 P,K,R,T,而且我不会用 OpenGl 术语计算 p。

在 OpenCV 术语中,它将如下所示(小抽象代码):

如何将此逻辑转换为 OpenGL?

我如何设置 GL_PROJECTION 以及在 GL_MODELVIEW 模式或其他模式下我能做什么?

0 投票
1 回答
7959 浏览

opencv - 相机校准

我正在使用 OpenCV,这是整个事情的新手。

我有一个场景,我正在墙上投影,我正在建造一种带有摄像头的机器人。我想知道如何处理图像,以便获得相机跟踪的斑点坐标的真实世界值?

0 投票
0 回答
359 浏览

camera - 使用 AVD 拍照

我正在 AVD 模拟器上测试我的应用程序;我的应用程序的其中一个步骤是拍照;当我到达那里时,我首先获得了正确的屏幕(具有拍照和取消按钮的屏幕)但几秒钟后,在我可以拍照之前,我收到此错误消息“应用程序相机(处理 com .android.camera) 意外停止。请重试。”

这是预期的行为,因为我使用的是 AVD?

FWIW,我在我的 AVD 中添加了所有硬件选项,我的代码是从这个链接修改的http://github.com/commonsguy/cw-advandroid/tree/master/Camera/Picture

任何帮助表示赞赏。

rh4games

0 投票
1 回答
2950 浏览

windows - windows窗体中的相机应用程序

基本上,我想用 C++ 编写一个 Windows 窗体程序,就像任何其他网络摄像头的控制程序一样,用于自定义摄像头。这个相机有一些API,比如抓图等等。
我以前从来没有做过相机应用程序,所以我有点困惑。对于像其他网络摄像头软件一样的“预览”功能,是否就像每隔 0.1 秒从摄像头轮询 .JPEG 图片并显示在 Windows 窗体屏幕上一样?就这么简单吗?有谁知道编写网络摄像头软件的基本想法是什么?

谢谢

0 投票
2 回答
1312 浏览

language-agnostic - 相机校准矩阵如何?

使用这个工具箱,我正在校准我的相机。

然而,工具箱以矩阵形式输出结果,作为一个菜鸟,我不太了解数学的东西。

矩阵形式如下。

替代文字

其中R是一个旋转矩阵,T是一个平移向量。

这些是我从工具箱中得到的结果。它以像素为单位输出值。

使用这些数据我可以知道我的相机旋转了多少以及它与校准对象的距离?

0 投票
1 回答
832 浏览

matlab - 用于相机自校准的绝对二次方的对偶

绝对二次方 (DAQ) 的对偶

只是想知道这个小组中是否有人使用过绝对二次方的对偶的准确估计来进行相机校准?Matlab中有代码吗?