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

7 次查看(过去 30 天)
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 ;)

回答(1 个)

Sahithi Kanumarlapudi
If you know the range where the ring may lie you can use “imfindcircles” function from image processing toolbox to know the center and radius of the ring.
For more information on “imfindcircles” refer to the following link

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by