Generating Gabor patches

Hi Mike,

Hope you’re doing well!

As part of my latest project, I need to generate Gabor patches. I began learning about them and they appear to be the plotted representation of Gabor filters. Is that right?

Further, I am seeing a lot of overlap with complex Morlet wavelets. Gabor patches are described as a sine wave convolved with a Gaussian, which is the same definition I learned from you for complex Morlet wavelets. However, Gabor patches look much different than the complex Morlet wavelet line plots I make with time as the x-axis.

Can you provide some intuition on how I should think about Gabor patches?

Since I can already make complex Morlet wavelets by convolving a sine wave with a Gaussian, how can I modify that process to plot Gabor patches?

Thanks very much for your guidance.

In 2012 when writing my ANTS book, I looked up the difference between Gabor and Morlet wavelets. They’re basically the same and differ only in the way that parameters are defined. I don’t remember what those differences are, but they were kindof trivial.

A Gabor (or Morlet) patch is a 2D sine wave multiplied by a 2D Gaussian. The principle is the same as for 1D time series signals. The math is nearly the same, except both functions take X and Y coordinates, not just x-axis values (e.g., time). The sine grating also takes two phase parameters, for shifting and for rotation.

I’m pretty sure I have code for this in my MATLAB book. But otherwise you can just look up the formulas, e.g., on wikipedia. I wouldn’t be surprised if you could find Python code online for this as well.

Ah ok, so they are multiplied, not convolved. That’s an important distinction. I have only multiplied in the time or frequency 1D domains, not 2D.

I followed the ANTS book and your 2018 paper on Morlet wavelet convolution using FWHM to make my 1D complex Morlet wavelets in the past. I will look in your MATLAB book for a discussion on the 2D multiplication approach.

Thanks!

Wavelets (in 1D and 2D) are often used as kernels in a convolution analysis, but they are created by multiplication.