同じ画像から派生した画像 (4000x2000 ピクセル) がありますが、ピクセルの 1% 未満の微妙な違いがあります。2つの画像を並べてプロットし、配列の異なる領域を強調表示したいと思います(強調表示とは、異なるピクセルを飛び出させたいが、値に一致する色を表示したいことを意味します。私は'これまで、このようなピクセルのエッジの輪郭を描くために塗りつぶされていない長方形を使用してきました。これは、小さな画像 (~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)
ただし、画像が非常に大きい場合、これはうまく機能しません。たとえば、ズームインするとパッチが消えるなど、奇妙なことが起こります。また、ズームイン/ズームアウトするとロードに時間がかかるため、この方法は最悪です。
これを行うにはもっと良い方法が必要だと思います。おそらく、パッチ全体ではなく、すべてのものの場所を決定するパッチが 1 つしかない方法です。imshow 画像の上に散布図を作成できますが、ズームイン/ズームアウトしたときにポイントがピクセルのサイズのままになるように修正する方法がわかりません。
何か案は?