我想通过中值滤波对图像进行下采样。看起来,使用
以下是一个最小演示示例:
skimage
中的block_reduce
方法和func=numpy.median
似乎很合适。然而,我有一种感觉,block_reduce
会一次在一个轴上应用func
,而我希望中值滤波能够一次应用到整个块中——对于非平凡的输入,结果并不相同。以下是一个最小演示示例:
from skimage.measure import block_reduce
import numpy as np
image = np.array([[4, 6, 6, 2],
[6, 7, 9, 9],
[3, 0, 9, 0],
[0, 6, 6, 4]])
expected = np.array([[np.median(image[0:2,0:2]), np.median(image[0:2,2:4])],
[np.median(image[2:4,0:2]), np.median(image[2:4,2:4])]])
actual = block_reduce(image, (2,2), func=np.median)
assert np.array_equal(expected, actual)
最后一项断言失败是因为中值滤波器的应用方式不符合我的预期。
您能否建议其他使用中值滤波器进行图像下采样的方法?