Showing posts with label matlab. Show all posts
Showing posts with label matlab. Show all posts

Tuesday, May 5, 2015

2D FFT: Effects of Location & Thickness of Diagonal Lines on 2D Magnitude & Phase: Part 05


Problem
  
This post continues our series of posts on a programmatic investigation of the effects of the location and thickness of horizontal, vertical, and diagonal lines on the magnitude and phase components of 2D FFT. In this post, we will continue our investigation of diagonal lines. Let us thicken the top-left-to-bottom-right diagonal line, move it up, and compute its magnitude and thickness. The MATLAB source of our programmatic investigation is in the last section of this post. The previous post on diagonal lines is here.

Diagonal Line from Top Left to Bottom Right



Figure 1 shows a thickened diagonal line from top left to bottom right.

Figure 1. dig_tl_br_line_01e.jpg
We add the path, read the image, and display it.  
 
addpath C:\Users\Vladimir\research\images\
ImgDigTlBrLine_01e = imread('dig_tl_br_line_01e', 'jpg');

figure;
imshow(ImgDigTlBrLine_01e);
title('Dig TL-BR LINE 01e');
  

Now we compute the 2D FFT of the image in Figure 1. The image is converted into a 2D double matrix. The fftshift command positions the 0,0 origin to the center of the image. We compute the absolute magnitude of each value in the 2D matrix and take the log of each value. 1 is added to each value before taking the log, because log(0) is not defined.
 
%% ff2 magnitude
fftDigTlBrLine01e = fft2(double(ImgDigTlBrLine_01e));
fftDigTlBrLine01e = fftshift(fftDigTlBrLine01e);
fftDigTlBrLine01e = abs(fftDigTlBrLine01e);
fftDigTlBrLine01e = log(fftDigTlBrLine01e+1);
fftDigTlBrLine01e = mat2gray(fftDigTlBrLine01e);


The magnitude image is shown in Figure 2. As can be seen in Figure 2, the FFT magnitude shows a diagonal line in the center orthogonal to the diagonal line in Figure 1. Note that there are other lines orthogonal to the diagonal line in Figure 1 but less pronounced than the other lines. This indicates that there are other frequencies detected in the image.

figure;
imshow(fftDigTlBrLine01e);
colormap(gray);
title('Dig TL-BR LINE 01e FFT2 Magnitude');

Figure 2. 2D FFT Magnitude of Figure 1

The phase component can be computed and displayed by the following MATLAB code. Figure 3 shows the 2D FFT phase graph of Figure 1.


%%% fft2 phase
fftDigTlBrLine01e_PHASE = fft2(double(ImgDigTlBrLine_01e));
fftDigTlBrLine01e_PHASE = fftshift(fftDigTlBrLine01e_PHASE);
fftDigTlBrLine01e_PHASE = angle(fftDigTlBrLine01e_PHASE);

figure;
imshow(fftDigTlBrLine01e_PHASE, [-pi, pi]);
colormap(gray);

title('Dig TL-BR LINE 01e FFT2 Phase');

Figure 3. 2D FFT Phase of Figure 1



2D FFT: Effects of Location & Thickness of Diagonal Lines on 2D Magnitude & Phase: Part 03


Problem
  
This post continues our series of posts on a programmatic investigation of the effects of the location and thickness of horizontal, vertical, and diagonal lines on the magnitude and phase components of 2D FFT. In this post, we will continue our investigation of diagonal lines. Let us move the top-left-to-bottom-right diagonal line down and compute its magnitude and thickness. The MATLAB source of our programmatic investigation is in the last section of this post. The previous post on diagonal lines is here.

Diagonal Line from Top Left to Bottom Right



Figure 1 shows a diagonal line from top left to bottom right moved diagonally down.

Figure 1. dig_tl_br_line_01c.jpg
We add the path, read the image, and display it.  
 
addpath C:\Users\Vladimir\research\images\
ImgDigTlBrLine_01c = imread('dig_tl_br_line_01c', 'jpg');

figure;
imshow(ImgDigTlBrLine_01c);
title('Dig TL-BR LINE 01c');
  

Now we compute the 2D FFT of the image in Figure 1. The image is converted into a 2D double matrix. The fftshift command positions the 0,0 origin to the center of the image. We compute the absolute magnitude of each value in the 2D matrix and take the log of each value. 1 is added to each value before taking the log, because log(0) is not defined.
 
%% ff2 magnitude
fftDigTlBrLine01c = fft2(double(ImgDigTlBrLine_01c));
fftDigTlBrLine01c = fftshift(fftDigTlBrLine01c);
fftDigTlBrLine01c = abs(fftDigTlBrLine01c);
fftDigTlBrLine01c = log(fftDigTlBrLine01c+1);
fftDigTlBrLine01c = mat2gray(fftDigTlBrLine01c);


The magnitude image is shown in Figure 2. As can be seen in Figure 2, the FFT magnitude shows a diagonal line in the center orthogonal to the diagonal line in Figure 1. Note that there are other lines orthogonal to the diagonal line in Figure 1 but less pronounced than the other lines. This indicates that there are other frequencies detected in the image.

figure;
imshow(fftDigTlBrLine01c);
colormap(gray);
title('Dig TL-BR LINE 01c FFT2 Magnitude');

Figure 2. 2D FFT Magnitude of Figure 1

The phase component can be computed and displayed by the following MATLAB code. Figure 3 shows the 2D FFT phase graph of Figure 1.


%%% fft2 phase
fftDigTlBrLine01c_PHASE = fft2(double(ImgDigTlBrLine_01c));
fftDigTlBrLine01c_PHASE = fftshift(fftDigTlBrLine01c_PHASE);
fftDigTlBrLine01c_PHASE = angle(fftDigTlBrLine01c_PHASE);

figure;
imshow(fftDigTlBrLine01c_PHASE, [-pi, pi]);
colormap(gray);

title('Dig TL-BR LINE 01c FFT2 Phase');

Figure 3. 2D FFT Phase of Figure 1




2D FFT: Effects of Location & Thickness of Diagonal Lines on 2D Magnitude & Phase: Part 02


Problem
  
This post continues our series of posts on a programmatic investigation of the effects of the location and thickness of horizontal, vertical, and diagonal lines on the magnitude and phase components of 2D FFT. In this post, we will continue our investigation of diagonal lines. Let us move the top-left-to-bottom-right diagonal line  up and compute its magnitude and thickness. The MATLAB source of our programmatic investigation is in the last section of this post. The previous post on diagonal lines is here.

Diagonal Line from Top Left to Bottom Right



Figure 1 shows a diagonal line from top left to bottom right moved diagonally up.
Figure 1. Image dig_tl_br_line_01b.jpg
 We add the path, read the image, and display it.  
addpath C:\Users\Vladimir\research\images\
ImgDigTlBrLine_01b = imread('dig_tl_br_line_01b', 'jpg');

figure;
imshow(ImgDigTlBrLine_01b);
title('Dig TL-BR LINE 01b');
  

Now we compute the 2D FFT of the image in Figure 1. The image is converted into a 2D double matrix. The fftshift command positions the 0,0 origin to the center of the image. We compute the absolute magnitude of each value in the 2D matrix and take the log of each value. 1 is added to each value before taking the log, because log(0) is not defined.
 
%% ff2 magnitude
fftDigTlBrLine01b = fft2(double(ImgDigTlBrLine_01b));
fftDigTlBrLine01b = fftshift(fftDigTlBrLine01b);
fftDigTlBrLine01b = abs(fftDigTlBrLine01b);
fftDigTlBrLine01b = log(fftDigTlBrLine01b+1);
fftDigTlBrLine01b = mat2gray(fftDigTlBrLine01b);


The magnitude image is shown in Figure 2. As can be seen in Figure 2, the FFT magnitude shows a diagonal line in the center orthogonal to the diagonal line in Figure 1. Note that there are other lines orthogonal to the diagonal line in Figure 1 but less pronounced than the other lines. This indicates that there are other frequencies detected in the image.

figure;
imshow(fftDigTlBrLine01b);
colormap(gray);
title('Dig TL-BR LINE 01b FFT2 Magnitude');

Figure 2. 2D FFT Phase of Figure 1
The phase component can be computed and displayed by the following MATLAB code. Figure 3 shows the 2D FFT phase graph of Figure 1.


%%% fft2 phase
fftDigTlBrLine01b_PHASE = fft2(double(ImgDigTlBrLine_01b));
fftDigTlBrLine01b_PHASE = fftshift(fftDigTlBrLine01b_PHASE);
fftDigTlBrLine01b_PHASE = angle(fftDigTlBrLine01b_PHASE);

figure;
imshow(fftDigTlBrLine01b_PHASE, [-pi, pi]);
colormap(gray);

title('Dig TL-BR LINE 01b FFT2 Phase');

Figure 3. 2D FFT phase of Figure 1



Wednesday, April 22, 2015

2D FFT: Effects of Location & Thickness of Vertical Lines on 2D FFT Magnitude & Phase: Part 03


Problem
  
This post continues our series of posts on a programmatic investigation of the effects of the location and thickness of horizontal, vertical, and diagonal lines on the magnitude and phase components of 2D FFT. In this post, we will continue our investigation of vertical lines by modifying their location in the image without modifying their thickness. The MATLAB source of our programmatic investigation is in the last section of this post. The previous post on vertical lines is here.

Vertical Line Shifted Right



Figure 1 shows a line shifted right in the image.

Figure 1. Vertical line shifted right in the image (hor_line_01c.jpg)
We add the path, read the image, and display it. 
 
addpath C:\Users\Vladimir\research\images\
ImgVerLine_01c = imread('ver_line_01c', 'jpg');

figure;
imshow(ImgVerLine_01c);
title('VER LINE 01c');

 
Now we compute the 2D FFT of the image in Figure 1. The image is converted into a 2D double matrix. The fftshift command positions the 0,0 origin to the center of the image. We compute the absolute magnitude of each value in the 2D matrix and take the log of each value. 1 is added to each value before taking the log, because log(0) is not defined.
 
%%% ff2 magnitude
fftVerLine01c = fft2(double(ImgVerLine_01c));
fftVerLine01c = fftshift(fftVerLine01c);
fftVerLine01c = abs(fftVerLine01c);
fftVerLine01c = log(fftVerLine01c+1);
fftVerLine01c = mat2gray(fftVerLine01c);


The magnitude image is shown in Figure 2. As can be seen in Figure 2, the FFT magnitude shows a line orthogonal to the vertical line in Figure 1. Note that with horizontal lines the 2D FFT magnitude lines are vertical.

figure;
imshow(fftVerLine01c);
colormap(gray);
title('VER LINE 01c FFT2 Magnitude');

Figure 2. 2D FFT magnitude of Figure 1
 We compute the phase component and display it. The image is shown in Figure 3.

%%% fft2 phase
fftVerLine01c_PHASE = fft2(double(ImgVerLine_01c));
fftVerLine01c_PHASE = fftshift(fftVerLine01c_PHASE);
fftVerLine01c_PHASE = angle(fftVerLine01c_PHASE);

figure;
imshow(fftVerLine01c_PHASE, [-pi, pi]), colormap(gray);
title('VER LINE 01c FFT2 Phase');
Figure 3. 2D FFT phase of Figure 1
The MATLAB source is at the end of this post.