我正在尝试为Mexican Hat小波创建一个函数,它允许可变的输出大小(3x3,5x5,15x15等)。下面的代码仅对5x5输入有效(获得对称形状),但如果它尝试获得15x15输出(d = 15),则结果不会将最高值置于中间。
a = np.empty([5, 5])
def mex(array):
h = np.empty_like(array, dtype=np.float)
print "Say the filter size (d)"
d = int(raw_input("> "))
for line in range(array.shape[0]):
for col in range(array.shape[1]):
x = col - (d - 1)/2
y = (d - 1)/2 - line
value = 0
value = (1 - x**2 - y**2) * math.exp(-((x**2)+(y**2))/2)
h[line, col] = value
print h
return h
b = mex(a)
这是15x15的结果:
感谢您的帮助! :)
答案 0 :(得分:1)
您只显示帽子的左下角。因为你的mex函数首先创建一个5 x 5矩阵,然后用你试图创建的15 x 15那个角填充它。这当然不是对称的。