使用手动单应性对齐两个图像

Bla*_*ank 6 python opencv transformation computer-vision homography

我正在创建一个使用手动校准来对齐两个图像的应用程序。我试图将它们几乎完美地对齐,所以我不依赖自动校准,因为它在这种情况下效果不佳。我通过选择像素手动完成此操作。然而结果并不是我所希望的,我也不知道自己错在哪里。我觉得计算出的点应该将图像精确地放置在另一张图像的顶部,但由于某种原因,它没有。我究竟做错了什么?

单应性结果:

[[ 7.43200521e-01 -1.79170744e-02 -1.76782990e+02]
 [ 1.00046389e-02  7.84106136e-01 -3.22549155e+01]
 [ 5.10695284e-05 -8.48641135e-05  1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

手动选取点: RGB:

[[ 277  708]
 [1108  654]
 [ 632  545]
 [ 922  439]
 [ 874  403]
 [ 398  376]
 [ 409  645]
 [ 445  593]
 [ 693  342]
 [ 739  244]
 [ 505  234]
 [ 408  275]
 [ 915  162]
 [1094  126]
 [ 483  115]
 [ 951  366]
 [ 517  355]]
Run Code Online (Sandbox Code Playgroud)

热的:

[[  8 549]
 [634 491]
 [282 397]
 [496 318]
 [461 289]
 [113 269]
 [122 479]
 [148 438]
 [325 236]
 [360 162]
 [194 156]
 [121 188]
 [484 106]
 [621  67]
 [178  62]
 [515 261]
 [203 253]]
Run Code Online (Sandbox Code Playgroud)
[[ 7.43200521e-01 -1.79170744e-02 -1.76782990e+02]
 [ 1.00046389e-02  7.84106136e-01 -3.22549155e+01]
 [ 5.10695284e-05 -8.48641135e-05  1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

来源图片: RGB 热的

我的结果: 结果

Bla*_*ank 5

所以我想通了!

我不小心翻转了 findHomography 函数中的参数。所以应该是

matrix, mask = cv2.findHomography(self.points_right, self.points_left, 0)

当然,删除单应性矩阵的偏移量。

  • 很好,我搞乱了它一段时间,得到了一些看起来很奇怪的图像。 (2认同)