与 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
(以及相关参数 mode
、constant_values
),它允许在图像边框上填充,以便模板可以在那里匹配.
在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
(以及相关参数 mode
、constant_values
),它允许在图像边框上填充,以便模板可以在那里匹配.