匹配同一对象的两个不同图像

时间:2016-01-27 18:19:22

标签: python image opencv

我正在查看一个应用程序,其中我有一个使用X射线获取的单个对象(智能手机)中的两个图像。这两张图片是在不同时刻获得的。因此两个图像的强度内容是不同的,并且我希望能够融合两个图像以便提取关于电话的一些信息。

enter image description here

在两个图像之间,设置略有改变,使得手机没有放在两个图像中的相同像素值。为了能够正确地比较两个图像,我需要翻译和旋转手机的图像,使它们尽可能重叠。

为此我使用python并打开cv(cv2)。我正在考虑使用阈值处理,然后找到两个阈值图像的坐标,并使用坐标将红色图像(或相反的)上的黄色图像映射。附图显示了我到目前为止所获得的内容。

enter image description here

伪代码如下:

ret1, thresh1 = cv2.threshold(img1.astype(np.uint8),200,255,cv2.THRESH_BINARY_INV)
ret2, thresh2 = cv2.threshold(template.astype(np.uint8),200,255,cv2.THRESH_BINARY_INV)

plt.figure(1)
plt.subplot(121)
plt.imshow(thresh1)
plt.subplot(122)
plt.imshow(thresh2)
plt.show()

其中img1是使用第一个滤镜获取的一个图像,而模板是使用第二个滤镜获取的图像。可以看出,手机分别位于黄色和绿色图像中的不同位置。

我的问题是如何执行下一步。如何找到这些阈值图像的坐标,然后叠加两部手机的图像?这是正确的策略还是有更好的解决方案?

我一直在关注模板匹配this link,但目前我没有成功。

1 个答案:

答案 0 :(得分:1)

平, 图像注册做了一些技巧,谢谢!我按照以下教程: image-registration并设法做我想要的事情。

谢谢! 格雷格