
Hello! I'm looking for a 2D hamming window function. As far as I can see, numpy only supports 1D windows and googling didn't show a simple way of extending it in two dimensions.
Thanks for your help,
Henrik

Henrik Ronellenfitsch wrote:
Hello! I'm looking for a 2D hamming window function. As far as I can see, numpy only supports 1D windows and googling didn't show a simple way of extending it in two dimensions.
Thanks for your help,
Henrik
Hi Henrik,
I haven't looked at the "correct" way to do this, but I recently wanted to do the same thing and ended up with the following solution. This may well be mathematically incorrect, but in my application it wasn't important:
import numpy as np import scipy.signal as ss
# read heightmap here - in my case it's a square numpy float array
# build 2d window hm_len = heightmap.shape[0] bw2d = np.outer(ss.hamming(hm_len), np.ones(hm_len)) bw2d = np.sqrt(bw2d * bw2d.T) # I don't know whether the sqrt is correct
# window the heightmap heightmap *= bw2d
-- Gary R.

Hi, Gary Ruben wrote:
import numpy as np import scipy.signal as ss
# read heightmap here - in my case it's a square numpy float array
# build 2d window hm_len = heightmap.shape[0] bw2d = np.outer(ss.hamming(hm_len), np.ones(hm_len)) bw2d = np.sqrt(bw2d * bw2d.T) # I don't know whether the sqrt is correct
# window the heightmap heightmap *= bw2d
-- Gary R.
Thanks very much for your solution, this is exactly what I needed! If I'm not mistaken, though, you can achieve the same result with
h = hamming(n) ham2d = sqrt(outer(h,h))
which is a bit more compact.
Regards, Henrik

Henrik Ronellenfitsch wrote: <snip>
Thanks very much for your solution, this is exactly what I needed! If I'm not mistaken, though, you can achieve the same result with
h = hamming(n) ham2d = sqrt(outer(h,h))
which is a bit more compact.
Regards, Henrik
Yes, that's nicer.
regards, Gary
participants (2)
-
Gary Ruben
-
Henrik Ronellenfitsch