与 skimage 匹配的模板:为什么输出尺寸与输入尺寸不同?

Template matching with skimage: why aren't output dimensions same as input dimensions?

this tutorial与Python库skimage的模板匹配中,有一些简单的示例代码:

import numpy as np

from skimage import data
from skimage.feature import match_template

image = data.coins()
coin = image[170:220, 75:130]

result = match_template(image, coin)

当我运行这个时,result似乎对应于输入图像,但尺寸略有不同:

>>> image.shape
(303, 384)
>>> result.shape
(254, 330)

为什么会这样?如何使 result 的像素对应于输入 image 的像素?

结果较小,因为图像内可能的位置数(模板可以放置在这些位置处而不与图像边界重叠)小于图像中所有像素的数量。例如,如果您尝试将模板的左上角与图像中的每个像素对齐,那么当您接近图像的 lower/right 部分时,模板会 "leak" 超出图像。 match_template 函数有一个特殊参数 pad_input(以及相关参数 modeconstant_values),它允许在图像边框上填充,以便模板可以在那里匹配.