Note
Click here to download the full example code
Spatial components of the motion energy filters¶
This example shows the spatial components of the spatio-temporal filters used
in motion energy features. It does not show the temporal components, since this
gallery does not support animation. To visualize the filters with their
temporal components, you can use moten.viz.plot_3dgabor()
.
Here we demonstrate how the spatial filters vary in term of spatial
frequencies, locations, and directions.
First, let’s define a motion energy pyramid, using MotionEnergyPyramid
.
It defines a set of spatio-temporal Gabor filters.
import moten
pyramid = moten.pyramids.MotionEnergyPyramid(stimulus_vhsize=(300, 400),
stimulus_fps=25)
Then, we define a plotting function, to show the spatial part of these spatio-temporal Gabor filters.
import matplotlib.pyplot as plt # noqa
def plot_spatial_gabors(pyramid, indices):
"""Plot the two quadrature spatial components of a list of Gabor filters.
Note this only show the spatial components of the spatio-temporal filters.
Parameters
----------
pyramid : moten.pyramid.MotionEnergyPyramid instance
indices : list of int
"""
vdim = pyramid.definition['vdim']
size = 0.6
fig, axs = plt.subplots(
2, len(indices), figsize=((len(indices) * 4.25 + 0.25) * size,
7.5 * size), squeeze=False,
sharex=True, sharey=True)
axs.T[0][0].set_ylabel('spatial Gabor (cos)')
axs.T[0][1].set_ylabel('spatial Gabor (sin)')
for ii, axs_ in zip(indices, axs.T):
spatial_sin, spatial_cos = pyramid.get_filter_spatial_quadrature(ii)
axs_[0].imshow(spatial_cos, aspect='equal')
axs_[1].imshow(spatial_sin, aspect='equal')
axs_[0].set_title('filter %d' % ii)
gabor = pyramid.filters[ii]
for ax in axs_:
ax.scatter(gabor['centerh'] * vdim, gabor['centerv'] * vdim,
color='k', marker='+')
ax.set_xticks([])
ax.set_yticks([])
plt.tight_layout()
Different directions¶
plot_spatial_gabors(pyramid, [88, 157, 202, 247])

Total running time of the script: ( 0 minutes 1.209 seconds)