我正在尝试从较小的图像(左侧)中获取大图像。这是 15x15 内核,我需要获取大图像。如何将值填充到数组中以获得大图像?我是新手。解释将不胜感激。
问问题
37 次
1 回答
1
要完成这个转换,你要先填充 image,然后使用ifftshift
将原点移动到左上角:
import numpy as np
K = np.zeros((15,15))
K[7,7] = 1 # not exactly the 15x15 kernel on the left, but similar
sz = (256, 256) # the output sizes
after_x = (sz[0] - K.shape[0])//2
before_x = sz[0] - K.shape[0] - after_x
after_y = (sz[1] - K.shape[1])//2
before_y = sz[1] - K.shape[1] - after_y
K = np.pad(K, ((before_x, after_x), (before_y, after_y)), 'constant')
K = np.fft.ifftshift(K)
请注意,此处的焊盘尺寸经过精心选择,以保留原点的正确位置,这在过滤中很重要。对于奇数大小的内核,原点位于中间像素。对于在中间没有像素的均匀大小的内核,原点是从真正中心向右下方的像素。在这两种情况下,这个位置都是使用 计算的K.shape // 2
。
于 2018-12-10T17:48:09.360 回答