2012-07-17 89 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