首页 文章

找到图像点的真实世界坐标

提问于
浏览
11

我在互联网上搜索了很多资源很多天但我无法解决问题 .

我有一个项目,我应该检测一个圆形物体在飞机上的位置 . 因为在一个平面上,我所需要的只是x和y位置(而不是z)为此我选择了图像处理 . 相机(单视图,非立体)位置和方向相对于平面上的参考坐标系固定并且是已知的

我已经使用opencv检测到圆心的图像像素坐标 . 我现在需要的只是转换坐标 . 到现实世界 .

http://www.packtpub.com/article/opencv-estimating-projective-relations-images在此站点和其他站点中,同形转换命名为:

p = C [R | T] P;其中P是真实世界坐标,p是像素坐标(在单应坐标系中) . C是表示内在参数的相机矩阵,R是旋转矩阵,T是平移矩阵 . 我已经按照在opencv上校准相机的教程(应用了cameraCalibration源文件),我有9个精美的chessbordimages,作为输出我有内在的相机矩阵,以及每个图像的平移和旋转参数 .

我有3x3内在相机矩阵(焦距和中心像素),以及3x4外在矩阵[R | T],其中R是左3x3,T是3x1 . 根据p = C [R | T] P公式,我假设通过将这些参数矩阵乘以P(世界),我们得到p(像素) . 但我需要的是将p(像素)坐标投影到地平面上的P(世界坐标) .

我正在学习电气和电子工程 . 我没有进行图像处理或高级线性代数课程 . 我记得从线性代数课程中我们可以将变换操纵为P = [R | T] -1 * C-1 * p . 然而,这是在欧几里得协调系统中 . 我不知道在hompographic中这样的事情是可能的 . 而且3x4 [R | T]向量不可逆 . 而且我不知道这是正确的方法 .

Intrinsic and extrinsic parameters are know, All i need is the real world project coordinate on the ground plane. Since point is on a plane, coordinates will be 2 dimensions(depth is not important, as an argument opposed single view geometry).Camera is fixed(position,orientation).How should i find real world coordinate of the point on an image captured by a camera(single view)?

EDIT 我一直在阅读Gary Bradski和Adrian Kaehler的"learning opencv" . 在校准 - > Homography部分的第386页,它写成:q = sMWQ其中M是相机固有矩阵,W是3x4 [R | T],S是"up to"比例因子我假设与单应性概念有关,我不清楚 . q是像素cooord,Q是真正的coord . 据说为了获得在图像平面上检测到的物体的坐标的真实世界坐标(在棋盘平面上); Z = 0然后W = 0中的第三列(假设轴旋转),修剪这些不必要的部分; W是3x3矩阵 . H = MW是3x3单应矩阵 . 现在我们可以反转单应矩阵并且左乘q得到Q = [X Y 1],其中Z coord被修剪 .

我应用了上面提到的算法 . 我得到了一些不能在图像角落之间的结果(图像平面与摄像机平面平行,距摄像机约30厘米,我得到的结果像3000)(棋盘方形尺寸以毫米为单位输入,所以我假设输出的真实世界坐标再次以毫米为单位) . 无论如何,我仍在努力 . 顺便说一下,结果非常非常大,但我将Q中的所有值除以Q的第三个分量得到(X,Y,1)

FINAL EDIT

我无法完成相机校准方法 . 无论如何,我应该从透视投影和变换开始 . 这样,我通过图像平面和物理平面之间的透视变换进行了非常好的估计(通过两个平面上的4对相应的共面点生成变换) . 然后简单地将变换应用于图像像素点 .

1 回答

  • 6

    你说“我有内在的相机矩阵,以及每个图像的平移和旋转参数 . ”但是这些是从你的相机到棋盘的平移和旋转 . 这些与你的圆圈无关 . 但是如果你真的有翻译和旋转矩阵然后得到3D点真的很容易 .

    以均匀符号将逆内在矩阵应用于屏幕点:C-1 * [u,v,1],其中u = col-w / 2和v = h / 2-row,其中col,row是图像列和行和w,h是图像的宽度和高度 . 结果,您将获得具有所谓的相机标准化坐标p = [x,y,z] T的3d点 . 您现在需要做的就是减去平移并应用转置旋转:P = RT(p-T) . 操作顺序与旋转然后翻译的原始顺序相反;请注意,换位旋转对原始旋转执行逆操作,但计算速度比R-1快得多 .

相关问题