This post continues our series of posts on a programmatic investigation of the 2D FFT. In this post, we will address the question of computing 2D FFT of wave images and binarizing them to obtain the main pattern. The slide presentation for this post is available here.
Wave Images of Different Frequencies
Figure 1. 2D_wave_01.png |
Our 2D FFT analysis of images, such as the one shown in Figure 1, is done with the following Matlab code.
figure;
imshow(wave_01);
title('Wave 01');
%% Do 2D FFT
wave_01_fft = fft2(double(wave_01)); %% convert image into double and apply 2D FFT to it
wave_01_fft = fftshift(wave_01_fft); %% shift the frequency spectrum's origin into the middle
wave_01_fft = abs(wave_01_fft); %% compute the magnitudes of the obtained transformed
wave_01_fft = log(wave_01_fft+1); %% transform the 2D FFT into the logspace
wave_01_fft = mat2gray(wave_01_fft); %% grayscale
figure;
imshow(wave_01_fft,[]); %% Display the result shown in Figure 2 below.
title('Wave 01 2D FFT Magn');
%% Find the maximum value and its location in the spectrum
[value_max, location_max] = max(wave_01_fft(:));
[row_max, col_max] = ind2sub(size(wave_01_fft), location_max);
%% Find the maximum value and its location in the spectrum
[value_min, location_min] = min(wave_01_fft(:));
[row_min, col_min] = ind2sub(size(wave_01_fft), location_min);
[value_max, location_max] = max(wave_01_fft(:));
[row_max, col_max] = ind2sub(size(wave_01_fft), location_max);
%% Find the maximum value and its location in the spectrum
[value_min, location_min] = min(wave_01_fft(:));
[row_min, col_min] = ind2sub(size(wave_01_fft), location_min);
%% Threshold and binarize
wave_01_fft_max = (wave_01_fft >= 0.90);
wave_01_fft_min = (wave_01_fft_max <= 0.1);
wave_01_fft(wave_01_fft_max) = 255;
wave_01_fft(wave_01_fft_min) = 0;
%% Shown in Figure 3 below.
figure;
imshow(wave_01_fft, []);
Figure 2 displays the unthresholded result of the 2D FFT.
Figure 2. Unthresholded 2D FFT of wave image in Figure 1 |
Figure 3. Thresholded and binarized 2D FFT of wave image in Figure 1 |