【问题标题】:How exactly do I use OpenCV and homographies to undo perspective warp?我究竟如何使用 OpenCV 和单应性来撤消透视扭曲?
【发布时间】:2014-09-09 16:57:38
【问题描述】:

我需要使用 Java 和 OpenCV 来完成http://en.wikipedia.org/wiki/Perspective_control 中显示的过程 我确切地知道梯形的 4 个点在哪里,我只需要它们对齐。我听说我需要使用单应性和 warpPerspective 命令,但我不知道这些使用什么参数。我不知道如何使用它们,只知道我确实需要使用它们。任何人都可以完全解释这一点吗?我从来没有做过这样的事情,所以从最低限度开始会很棒。我真的很想进入计算机视觉领域,因此非常感谢有人帮助我。

【问题讨论】:

  • 如果你喜欢这篇文章,别忘了点击答案旁边的empty check mark

标签: java opencv homography


【解决方案1】:

他们有两种方法可以做到这一点:

1) 使用透视几何创建 H 矩阵的几何变形。或

2) 使用特征匹配来创建相同的 H 矩阵。

Opencv 有一个很好的函数,叫做findHomography(这是第二种方法),它接收 2 个数组。两个数组都应该匹配来自 2 个不同图像的特征。

一旦有了 H 矩阵,创建扭曲图像也很容易,您只需调用 warpPerspective 将其存储在矩阵中,然后 imshow 即可查看。

【讨论】:

  • 您能否详细说明您的每个选项?同样,我是一个绝对的初学者。什么是H矩阵?什么是特征匹配?我实际上将哪些数组放入 findHomography 方法中?您说“两个数组都应该匹配来自 2 个不同图像的特征”。哪2张图?我只有来源和目的地。当我正在创建目的地时,我真的不能使用目的地,对吧?或者单应性是为了从一个翻译到另一个?很抱歉这么不知情。
  • Homography = H matrix 和该矩阵是变换矩阵,它指示一个图像中的一个点在另一个图像中的位置。即X1 = H * X2,其中 X1 是图像 1 中的点,X2 是图像 2 中的点
  • 啊,好吧。那么H矩阵指定了“规则”?告诉每个像素“您需要从坐标 (X1,Y1) 移动到 (X2,Y2)”的系统。对吗?
  • 是的。而warpPerspective 函数会为您做到这一点。
  • 好的。所以我需要一个具有源梯形 4 个角的 H 矩阵,以及一个具有目标矩形 4 个角的 H 矩阵。然后我将它们都传递给 warpPerspective 函数,这会将第一张图像转换为我想要的形状?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多