2012-07-17 100 views
1

我有一个应用SURF(加速强健功能)的项目,以检测另一组图片或来自我的网站的实时流视频中的给定图片相机。OpenCV - 获取视频帧内检测到的图像的法线

它的工作原理类似于在这个视频中所示:

http://www.youtube.com/watch?NR=1&v=uKI9qyi1wMg&feature=fvwrel

的事情是,这架参考图片矩形是2D的,我想获得关于3D的位置。基本上这是图像的正常。

有没有基于确定矩形获取图像法线的方法?

的矩形是这样的:

Top Left = (x1, y1) 
Top Right = (x2, y1) 
Bottom Left = (x3, y3) 
Bottom Right = (x4, y4) 

有相对于在此基础上协调帧获取正常的图像的一种方式?

+0

这应在数学部分提出问题。对于一个矩形也有两个规范。 – ArtemStorozhuk 2012-07-17 13:03:38

回答

1

可以得到3D变换你的输入点集匹配您的检测长方形:

cv::Mat in = 0, 0 
      w, 0 
      0, h 
cv::Mat ou = x1, y1 
      x2, y2 
      x3, y3 
cv::Mat mat = cv::getAffineTransform(in, ou); 

然后使用这个矩阵变换输入图像的正常:

[row, col] = mat * [0, 0, 1] 
+0

那么'(x4 y4)'呢?我不应该考虑这一点吗? – Simon 2012-07-17 14:17:03

+0

您只需要三个点来估计仿射变换。 – 2012-07-17 14:20:50

+0

@Simon三点实际上是... – ArtemStorozhuk 2012-07-17 14:20:52