将2D点映射到新的视角

时间:2011-05-19 22:00:15

标签: image-processing computer-vision map-projections

这是我的第一篇文章!

我正在尝试创建一个可以确定网格(图像)中的某些点是亮还是暗的应用程序。原始网格定义明确(我知道所有点应该相对于角落的位置)。一旦我知道该点应该在哪里,我就可以很容易地判断它是亮还是暗。

问题是,我想从手持相机拍摄的网格图像中做到这一点。很明显,由于手的移动,视角会发生变化,我需要做一些数学计算,确定新点相对于角点的位置(我知道如何检测角点)。

我在其他帖子中读过,在转换过程中保留的唯一属性是交叉比率和发生率。具体来说,这篇文章让我朝着正确的方向前进,但作者没有完成数学计算。请注意,在此示例中,作者将从倾斜的视角转向鸟瞰视图,而我正在尝试相反的做法。但数学应该是相同的。


来自发布Projective transformation

(显然我不能发布图片,因为我是新手,但图片在上面的帖子中)

1)在由段AD和CP定义的线的交叉处找到点C'。

2)在由AD和BP段定义的线的交点处找到点B'。

3)确定B'DAC'的交叉比率,即r =(BA'* DC')/(DA * B'C')。

4)构造投影线F'HEG'。这些点的交叉比等于r,即r =(F'E * HG')/(HE * F'G')。

5)F'F和G'G将在投影点Q相交,因此等于交叉比率并知道正方形边长,你可以用一些算术体操来确定Q的位置。


我的问题是步骤4,构建F'HEG'行。只知道2点和所需的交叉比率,是否有可能构建一条4点线?我觉得这是1个方程,有2个未知数。

如果有人能帮助我,我将非常感激!

抱歉这么久了,

罗布

PS我刚刚发布在该论坛上,但这是我的第一篇帖子,所以我还没有得到许可。

2 个答案:

答案 0 :(得分:1)

如果您知道任何4个2D点的位置(其中3个点位于同一条线上),例如您的角落,您可以在2D图像和网络摄像头框架之间找到Homography转换H. H是一个3x3矩阵,可以将帧中的任何点转换为2D图像。 点p用均匀坐标写成:[x,y,1],使得p'= Hp 给定图像和帧中的4个对应点,您可以求解H的9个元素。

答案 1 :(得分:0)

由于F',H,E和G位于2D空间的一条直线上,因此您的问题从一开始就受到很大限制。你有的未知数是:

  1. 一些支持点(你知道线路经过的一点), 使用第一点。
  2. 线的方向(从支架移动到哪里。为此使用从第一点到第二点的方向)
  3. 沿着该线的点的位置。你已经有两个(两个点),所以你只需要两个数字。
  4. 所需的交叉比例实际上是两个方程式(x和y坐标各一个),所以你有两个方程和两个未知数。