Processing of a 2D FFT image (matrix) - calculate periodcity from image

Asked by Markus Altthaler

Markus Altthaler (view profile)

on 19 Jul 2019
Latest activity Answered by Sahithi Kanumarlapudi

Sahithi Kanumarlapudi (view profile)

on 6 Aug 2019
Hey,
I need some help with the following problem: I have AFM images that show periodc structures. And my goal is to determine the periodicity from the image using FFT. I start by loading an image "AFMImage" wich results in a matrix of size m x m where every entry corresponds to the z value in a 3D surf plot. This image is then fourier transformed and processed as shown here:
FFT = fft2(AFMImage);
FFT = fftshift(FFT);
FFT = abs(FFT);
FFT = log(FFT+1); %for perceptual scaling
The obtained matrix FFT can be plotted as a surf plot as well. This plot shows the expected centerpeak as well as a ring. The ring's diameter corresponds to the inverse periodicity I am interested in. Other artefacts like lines e.g. from edges are visible too but less prominent.
What is the best way to get the ring and subsequently it's diameter from the matrix FFT?
I had the two idea but i did not get any of them to work:
a) Use a fitfunktion to fit the centerpeak as well as a ring with the diameter as a fit parameter (e.g. surffit)
b) Use the image processing toolbox to detect the ring (I lack any experience in this field)
I'd be happy for any useful input regarding my approaches or a completly new approach ;)