【发布时间】:2014-02-18 00:23:48
【问题描述】:
我正在使用 open cv 和 C++。我有 2 张面部图像,其中包含标记点。我已经找到了标记点的坐标。现在我需要根据这些坐标对齐这两张人脸图像。这两个图像可能不一定具有相同的高度,这就是为什么我不知道如何开始对齐它们,应该做什么等等。
【问题讨论】:
-
你看过极线几何的文献吗?
-
如果您有 3 个相应的标记,请查看:
cv::getAffineTransformdocs.opencv.org/modules/imgproc/doc/… 并使用warpAffineaferwards。有 4 个对应的标记,您可以使用getPerspectiveTransform -
对极几何似乎很有趣..我现在正在研究它!@Micka 不是只有一张图像的 getAffineTransform?我如何使用它来参考另一张图像转换一张图像?
-
您必须将面分割成对应的三点三角形,然后使用透视变换将它们扭曲到另一个面。
-
@Steph getPerspectiveTransform 计算将图像平面从一个相机位置映射到另一个相机位置的图像平面的单应性。物体平面可以完美地映射,其他几何体只能近似。对于您的图像,我猜标记之间的区域将被很好地映射(不完美,因为面部不是平面),但该区域之外的东西会被扭曲。
标签: c++ opencv alignment computer-vision