MATLAB: filtro de paso bajo ideal en el procesamiento de imágenes

En el campo del procesamiento de imágenes, el filtro de paso bajo ideal (ILPF) se utiliza para suavizar imágenes en el dominio de la frecuencia. Elimina el ruido de alta frecuencia de una imagen digital y conserva los componentes de baja frecuencia.

Puede ser especificado por la función-

$H(u, v)=\left\{\begin{array}{ll}1 & D(u, v) \leq D_{0} \\ 0 & D(u, v)>D_{0}\ end{array}\right.$
Dónde,

D_{0}es una constante positiva. ILPF pasa todas las frecuencias dentro de un círculo de radio D_{0}desde el origen sin atenuación y corta todas las frecuencias fuera del círculo.

Este D_{0}es el punto de transición entre H(u, v) = 1 y H(u, v) = 0, por lo que se denomina frecuencia de corte .

D(u, v)es la distancia euclidiana desde cualquier punto (u, v) al origen del plano de frecuencia, es decir,
 $D(u, v)=\sqrt{\left(u^{2}+v^{2}\right)}$

Acercarse:

Paso 1: Entrada: leer una imagen
Paso 2: Guardar el tamaño de la imagen de entrada en píxeles
Paso 3: Obtener la transformada de Fourier de la imagen de entrada
Paso 4: Asignar la frecuencia de corte D_{0}
Paso 5: Diseño del filtro: Paso ideal del filtro de
paso bajo 6: Convolución entre la imagen de entrada transformada de Fourier y la máscara de filtrado
Paso 7: Tomar la transformada inversa de Fourier de la imagen contorneada
Paso 8: Mostrar la imagen resultante como salida

Implementación en 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, [ ]);

Imagen de entrada –

Producción:

Publicación traducida automáticamente

Artículo escrito por goodday451999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *