Nitidez de imagen mediante el filtro laplaciano y el filtrado High Boost en MATLAB

La nitidez de la imagen es un efecto que se aplica a las imágenes digitales para darles una apariencia más nítida. La nitidez mejora la definición de los bordes de una imagen. Las imágenes aburridas son aquellas que son pobres en los bordes. No hay mucha diferencia en el fondo y los bordes. Por el contrario, la imagen nítida es aquella en la que los bordes son claramente distinguibles por el espectador. Sabemos que la intensidad y el contraste cambian en el borde. Si este cambio es significativo, se dice que la imagen es nítida. El espectador puede ver claramente las partes de fondo y de primer plano. 

Nitidez de imagen mediante la técnica de suavizado

Filtro laplaciano

  • Es un operador/filtro/máscara derivada de segundo orden. 
  • Detecta la imagen junto con las direcciones horizontal y vertical colectivamente. 
  • No es necesario aplicarlo por separado para detectar los bordes junto con las direcciones horizontal y vertical. 
  • La suma de los valores de este filtro es 0. 

Ejemplo:

Matlab

% MatLab program for edge sharpening.
% Read the image in variable 'a'
a=imread("cameraman.jpg");
  
% Defined the laplacian filter.
Lap=[0 1 0; 1 -4 1; 0 1 0];
  
% Convolve the image read
% in 'a' with Laplacian mask.
a1=conv2(a,Lap,'same');
  
% After convolution the intensity 
% Values go beyond the range.
% Normalise the range of intensity.
a2=uint8(a1);
  
% Display the sharpened image.
imtool(abs(a-a2),[])
  
% Define strong laplacian filter
lap=[-1 -1 -1; -1 8 -1; -1 -1 -1];
  
% Apply filter on original image
a3=conv2(a,lap,'same');
  
% Normalise the resultant image.
a4=uint8(a3);
  
% Display the sharpened image.
imtool(abs(a+a4),[])

Producción: 

Explicación del código:

  • Explicación del programa MatLab para el afilado de bordes. a=imread(“camarógrafo.jpg”); Esta línea lee la imagen en la variable a.
  • Vuelta=[0 1 0; 1 -4 1; 0 1 0]; Esta línea define el filtro lapalaciano.
  • a1=conv2(a Vuelta, ‘igual’); Esta línea convoluciona la imagen con el filtro laplaciano.
  • Después de la convolución, los valores de algunos píxeles van más allá del rango [0 255]. Por lo tanto, se utiliza la siguiente línea.
  • a2=uint8(a1); Esta línea normaliza el rango de píxeles.
  • Imagen nítida = Imagen original: imagen detectada en el borde si el píxel central del filtro laplaciano es un valor negativo.
  • imtool(abs(a-a2),[]) Esta línea muestra la imagen nítida.
  • vuelta=[-1 -1 -1; -1 8 -1; -1 -1 -1]; Esta línea define el filtro laplaciano fuerte, con un valor de píxel central positivo.
  • a3=conv2(una vuelta, ‘igual’); Esta línea convoluciona la imagen original con este filtro.
  • a4=uint8(a3); Esta línea normaliza el rango de valores de píxeles.
  • imtool(abs(a+a4),[]) Esta línea muestra la imagen nítida.

Usando la máscara de nitidez: High Boost Filtering

Filtrado de alto impulso

Es una técnica de nitidez que enfatiza los componentes de alta frecuencia que representan los detalles de la imagen sin eliminar los componentes de baja frecuencia. 

Formula: 
HPF = Original image - Low frequency components 
LPF = Original image - High frequency components 
HBF = A * Original image - Low frequency components 
        = (A - 1) * Original image + [Original image - Low frequency components]
        = (A - 1) * Original image + HPF 

Aquí,

  • HPF = filtrado de paso alto, lo que significa que los componentes de mayor frecuencia pueden pasar mientras que los componentes de baja frecuencia se descartan de la imagen original.
  • LPF = filtrado de paso bajo, lo que significa que los componentes de baja frecuencia pueden pasar mientras que los componentes de alta frecuencia se descartan de la imagen original.

Ventaja de HPF sobre el filtro laplaciano: 

Cuando usamos el filtro laplaciano, necesitamos restar la imagen detectada por el borde de la imagen original si el valor del píxel central del filtro laplaciano usado es negativo; de lo contrario, agregamos la imagen detectada por el borde a la imagen original. Por lo tanto, se usaron dos operaciones para llevar a cabo al elegir el filtro laplaciano.

En el filtrado de alto impulso, necesitamos usar una operación de convolución solo una vez. Nos dará una imagen más nítida.

Ejemplo:

Matlab

% MatLab code for High Boost Filtering
% read the image in variable 'a'
a=imread("cameraman.jpg");
  
% Define the High Boost Filter 
% with central value=4 and A=1.
HBF=[0 -1 0; -1 5 -1; 0 -1 0];
  
% Convolve the image 'a' with HBF.
a1=conv2(a, HBF, 'same');
  
% Normalise the intensity values.
a2=uint8(a1);
  
%Display the sharpened image.
imtool(a2,[]);
  
% Define the HBF with Central value=8 and A=1.
SHBF=[-1 -1 -1; -1 9 -1; -1 -1 -1];
  
% Convolve the image 'a' with HBF.
a3=conv2(a,SHBF, 'same');
  
% Normalise the intensity values.
a4=uint8(a3);
  
% Display the sharpened image.
imtool(a4,[]);

Producción: 

Explicación del código:

  • Explicación del programa MatLab para el afilado de bordes. a=imread(“camarógrafo.jpg”); Esta línea lee la imagen del camarógrafo en la variable a.
  • HBF=[0 -1 0; -1 5 -1; 0 -1 0]; Esta línea define el filtro lapalaciano.
  • a1=conv2(a,HBF,’igual’); Esta línea convoluciona la imagen con HBF.
  • Después de la convolución, los valores de algunos píxeles van más allá del rango [0 255]. Por lo tanto, se utiliza la siguiente línea.
  • a2=uint8(a1); Esta línea normaliza el rango de píxeles.
  • imtool(a2),[]) Esta línea muestra la imagen nítida.
  • SHBF=[-1 -1 -1; -1 8 -1; -1 -1 -1]; Esta línea define el HBF fuerte, con A=1 y Central=8
  • a3=conv2(aSHBF,’ mismo’); Esta línea convoluciona la imagen original con este filtro.
  • a4=uint8(a3); Esta línea normaliza el rango de valores de píxeles.
  • imtool(a4,[]) Esta línea muestra la imagen nítida.

 

Publicación traducida automáticamente

Artículo escrito por pintusaini 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 *