MATLAB - Идеальный фильтр нижних частот в обработке изображений

Опубликовано: 12 Апреля, 2022

В области обработки изображений идеальный фильтр нижних частот (ILPF) используется для сглаживания изображения в частотной области. Он удаляет высокочастотный шум из цифрового изображения и сохраняет низкочастотные компоненты.

It can be specified by the function-


Where,

is a positive constant. ILPF passes all the frequencies within a circle of radius from the origin without attenuation and cuts off all the frequencies outside the circle.

This is the transition point between H(u, v) = 1 and H(u, v) = 0, so this is termed as cutoff frequency.

is the Euclidean Distance from any point (u, v) to the origin of the frequency plane, i.e,

Approach:

Step 1: Input – Read an image
Step 2: Saving the size of the input image in pixels
Step 3: Get the Fourier Transform of the input_image
Step 4: Assign the Cut-off Frequency
Step 5: Designing filter: Ideal Low Pass Filter
Step 6: Convolution between the Fourier Transformed input image and the filtering mask
Step 7: Take Inverse Fourier Transform of the convoluted image
Step 8: Display the resultant image as output

Implementation in MATLAB:

% MATLAB Code | Ideal Low Pass Filter
  
% Reading input image : input_image 
input_image = imread("[name of input image file].[file format]");
  
% Saving the size of the input_image in pixels-
% M : no of rows (height of the image)
% N : no of columns (width of the image)
[M, N] = size(input_image);
  
% Getting Fourier Transform of the input_image
% using MATLAB library function fft2 (2D fast fourier transform)  
FT_img = fft2(double(input_image));
  
% Assign Cut-off Frequency  
D0 = 30; % one can change this value accordingly
  
% Designing filter
u = 0:(M-1);
idx = find(u>M/2);
u(idx) = u(idx)-M;
v = 0:(N-1);
idy = find(v>N/2);
v(idy) = v(idy)-N;
  
% MATLAB library function meshgrid(v, u) returns
% 2D grid which contains the coordinates of vectors
% v and u. Matrix V with each row is a copy 
% of v, and matrix U with each column is a copy of u
[V, U] = meshgrid(v, u);
  
% Calculating Euclidean Distance
D = sqrt(U.^2+V.^2);
  
% Comparing with the cut-off frequency and 
% determining the filtering mask
H = double(D <= D0);
  
% Convolution between the Fourier Transformed
% image and the mask
G = H.*FT_img;
  
% Getting the resultant image by Inverse Fourier Transform
% of the convoluted image using MATLAB library function 
% ifft2 (2D inverse fast fourier transform)  
output_image = real(ifft2(double(G)));
  
% Displaying Input Image and Output Image
subplot(2, 1, 1), imshow(input_image),
subplot(2, 1, 2), imshow(output_image, [ ]);

Input Image –

Output:

Previous
MATLAB - Ideal Highpass Filter in Image Processing
Next
Difference between Low pass filter and High pass filter
Recommended Articles
Page :
Article Contributed By :
goodday451999
@goodday451999
Vote for difficulty
Article Tags :
  • Image-Processing
  • MATLAB
  • Advanced Computer Subject
Report Issue
Продвинутая компьютерная тематика

РЕКОМЕНДУЕМЫЕ СТАТЬИ

23 Февраля, 2023