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

En el campo del procesamiento de imágenes, el filtro de paso alto ideal (IHPF) se utiliza para mejorar la nitidez de la imagen en el dominio de la frecuencia. Image Sharpening es una técnica para mejorar los detalles finos y resaltar los bordes en una imagen digital. Elimina los componentes de baja frecuencia de una imagen y conserva los componentes de alta frecuencia.

Este filtro de paso alto ideal es la operación inversa del filtro de paso bajo ideal. Se puede determinar utilizando la siguiente relación  $H_{H P}(u, v)=1-H_{L P}(u, v)$
: donde, $H_{H P}(u, v)$es la función de transferencia del filtro de paso alto y $H_{L P}(u, v)$es la función de transferencia del filtro de paso bajo correspondiente.

La función de transferencia de la IHPF se puede especificar mediante la función
 $H(u, v)=\left\{\begin{array}{ll}0 & D(u, v) \leq D_{0} \\ 1 & D(u, v)>D_{0}\end{array}\right.$
: Donde,

  • D_{0}es una constante positiva. IHPF pasa todas las frecuencias fuera de un círculo de radio D_{0}desde el origen sin atenuación y corta todas las frecuencias dentro 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
alto 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 High 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 = 10; % 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 *