scipy 为什么correlate2d返回噪声?

k0pti3hp  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(92)

我目前正在尝试使用计算机视觉为扫雷舰创建一个机器人。然而使用scipy.signal.correlate2d只会产生噪音。我的测试代码在下面,为什么输出只是噪音,而不是我期望的热图?

from scipy import signal
import numpy as np
from cv2 import cv2
from PIL import Image

image = cv2.imread('MinesweeperTest.png',0)
template = cv2.imread('Mine2.png',0)

corr = signal.correlate2d(image,template,mode="same")

Image.fromarray(corr).save("correlation.png")

字符串
所有涉及的图片都可以在这里找到:
MinesweeperTest.png:https://i.stack.imgur.com/Gxqtq.jpg
Mine2.png:https://i.stack.imgur.com/atV7T.jpg
Correlation.png:https://i.stack.imgur.com/aelY6.jpg

vxqlmq5t

vxqlmq5t1#

在调用correlate2d之前对图像进行预处理,使其平均值为0,这有助于获得更有意义的2D互相关:

image = image - image.mean()
template = template - template.mean()

字符串
一个可重复的例子如下:

from imageio.v3 import imread
from matplotlib import pyplot as plt
from scipy import signal
import numpy as np

image = imread('https://i.imgur.com/PpLLOW7.png', pilmode='L')
template = imread('https://i.imgur.com/ApIIs1Z.png', pilmode='L')

# fixed these
image = image - image.mean()
template = template - template.mean()

corr = signal.correlate2d(image, template, mode="same")
plt.imshow(corr, cmap='hot')

相关问题