如何在两张图像中找到对应的点



我正在处理图像注册。我正在使用OpenCV。我有两个图像I1(参考图像)、I2(当前图像)。我确定它们之间的仿射运动,然后扭曲I1以查看它与当前图像I2的对齐程度。在这一点上,我有三个图像I1、I1’(失真)和I2。

现在,我需要在当前图像I2上设置4个点(这是为了在GUI上显示),并且需要在初始参考图像I1上找到相应的4个点。GUI突出显示了一些功能差异,并且需要在I1和I2上来回切换,以便用户理解差异。

这四个点基本上是图像内的任意矩形。例如:

cv::Point P1, P2, P3, P4;
P1.x = I2.cols / 4;
P1.y = I2.rows / 4;
P2.x = I2.cols * 3 / 4;
P2.y = I2.rows / 4;
P3.x = I2.cols * 3 / 4;
P3.y = I2.rows * 3 / 4;
P4.x = I2.cols / 4;
P4.y = I2.rows * 3 / 4;

我需要在参考图像I1上找到P1、P2、P3、P4的对应点。关于如何使用OpenCV做到这一点,有什么想法吗?或者其他方式?

您正在编写一个仿射矩阵,它将l1扭曲为l2。

你只需要通过inverteAffineTransform来反转仿射变换M,就可以得到矩阵M’

然后将这个2x3矩阵M'应用于点:

(pseudocode)
P1_onL1 = M' * [P1.x, P1.y, 1].t()

其中.t()表示转置,所以需要将矩阵乘以列向量。

相关内容

最新更新