我有来自同一图像的图像(4000x2000 像素),但只有不到 1% 的像素存在细微差异。我想并排绘制两个图像并突出显示数组中不同的区域(通过突出显示我的意思是我希望不同的像素跳出来,但仍显示与其值匹配的颜色。我到目前为止,我一直在使用未填充的矩形来勾勒这些像素的边缘。我可以在小图像(~50x50)中很好地做到这一点:
fig=figure(figsize=(20,15))
ax1=fig.add_subplot(1,2,1)
imshow(image1,interpolation='nearest',origin='lower left')
colorbar()
ax2=fig.add_subplot(122,sharex=ax1, sharey=ax1)
imshow(image2,interpolation='nearest',origin='lower left')
colorbar()
#now show differences
Xspots=im1!=im2
Xx,Xy=nonzero(Xspots)
for x,y in zip(Xx,Xy):
rect=Rectangle((y-.5,x-.5),1,1,color='w',fill=False,ec='w')
ax1.add_patch(rect)
ax2.add_patch(rect)
但是,当图像非常大时,这效果不佳。奇怪的事情发生了,例如当我放大补丁时消失了。此外,这种方式很糟糕,因为当我放大/缩小时需要永远加载东西。
我觉得必须有更好的方法来做到这一点,也许只有一个补丁可以确定所有东西的位置,而不是一大堆补丁。我可以在 imshow 图像上做一个散点图,但我不知道如何修复它,以便在我放大/缩小时点将完全保持像素的大小。
有任何想法吗?