Laplaciano de filtro gaussiano en MATLAB

El filtro laplaciano se utiliza para detectar los bordes de las imágenes. Pero tiene una desventaja sobre las imágenes ruidosas. Amplifica el ruido de la imagen. Por lo tanto, primero usamos un filtro gaussiano en la imagen ruidosa para suavizarla y luego usamos el filtro laplaciano para la detección de bordes.

Tratar con una imagen ruidosa sin un filtro gaussiano:

Función utilizada

  • imread() se utiliza para la lectura de imágenes.
  • rgb2gray( ) se usa para obtener una imagen gris.
  • conv2() se utiliza para la convolución.
  • La función imtool() se usa para mostrar la imagen.

Ejemplo:

Matlab

% Read the image in MatLab
j=imread("logo.png");
 
% Convert the image in gray scale.
j1=rgb2gray(j);
 
% Generate the noise of size equal to gray image.
n=25*randn(size(j1));
 
% Generate noisy image by adding noise to the grayscale image.
j2=n+double(j1);
 
% Display the original color image.
imtool(j,[]);
 
% Display the gray image.
imtool(j1,[]);
 
% Display the noisy image.
imtool(j2,[]);
 
% Define the Laplacian Filter.
Lap=[0 -1 0; -1 4 -1; 0 -1 0];
 
% Convolve the noisy image with Laplacian filter.
j3=conv2(j2, Lap, 'same');
 
% Display the resultant image.
imtool(abs(j3), []);

Producción:  

Figura: Imagen con ruido de entrada

Figura: imagen de borde detectado

Explicación del código: 

  • j=imread(“logotipo.png”); Esta línea lee la imagen en MatLab. La
    extensión de la imagen puede ser cualquier cosa, por ejemplo, jfif, png, jpg, jpeg, etc.
  • j1=rgb2gris(j); Esta línea convierte la imagen en escala de grises, evitamos tratar con imágenes en color.
    Esta función toma solo un parámetro y devuelve la imagen gris.
  • n=25*randn(tamaño(j1)); Esta línea genera el ruido de tamaño igual a la imagen gris.
    El ruido gaussiano es de naturaleza aditiva, por lo que se agrega directamente usando +.
  • j2=n+doble(j1); Esta línea genera imágenes ruidosas al agregar ruido a la imagen en escala de grises.
  • imtool(j,[]); Esta línea muestra la imagen en color original.
  • imtool(j1,[]); Esta línea muestra la imagen gris.
  • imtool(j2,[]); Esta línea muestra la imagen ruidosa.
  • Vuelta=[0 -1 0; -1 4 -1; 0 -1 0]; Esta línea de código define el Filtro Laplaciano.
  • j3=conv2(j2, Vuelta, ‘igual’); Esta línea Convoluciona la imagen ruidosa con filtro laplaciano.
    conv2() realiza la convolución. Toma 3 parámetros. ‘igual’ asegura que el resultado tenga el mismo tamaño que la imagen de entrada.
  • imtool(abs(j3), []); Esta línea muestra la imagen resultante.

Tratar con una imagen ruidosa usando LOG:

La transformación logarítmica de una imagen es una de las transformaciones de imagen de nivel de gris. La transformación logarítmica de una imagen significa reemplazar todos los valores de píxeles, presentes en la imagen, con sus valores logarítmicos. La transformación de registro se utiliza para mejorar la imagen, ya que expande los píxeles oscuros de la imagen en comparación con los valores de píxeles más altos.

Ejemplo:

Matlab

% Read the image in MatLab
j=imread("logo.png");
 
% Convert the image in gray scale.
j1=rgb2gray(j);
 
% Generate the noise of size equal to gray image.
n=25*randn(size(j1));
 
% Generate noisy image by adding
% noise to the grayscale image.
j2=n+double(j1);
 
% Display the original color image.
imtool(j,[]);
 
% Display the gray image.
imtool(j1,[]);
 
% Display the noisy image.
imtool(j2,[]);
 
% Create the gaussian Filter.
Gaussian=fspecial('gaussian', 5, 1);
 
% Define the Laplacian Filter.
Lap=[0 -1 0; -1 4 -1; 0 -1 0];
 
% Convolve the noisy image
% with Gaussian Filter first.
j4=conv2(j2, Gaussian, 'same');
 
% Convolve the resultant
% image with Laplacian filter.
j5=conv2(j4, Lap, 'same');
 
% Display the Gaussian of noisy_image.
imtool(j4,[]);
 
% Display the Laplacian of
% Gaussian resultant image.
imtool(j5,[]);

 
Producción: 

Figura: Imagen con ruido de entrada

Figura: imagen de borde detectado

Explicación del código:

  • j=imread(“logotipo.png”); Esta línea Lee la imagen en MatLab
    La imagen se almacena en la variable j.
  • j1=rgb2gris(j); Esta línea convierte la imagen en escala de grises, evitamos tratar con imágenes en color.
    j1 es la imagen gris y j es la imagen en color.
  • n=25*randn(tamaño(j1)); Esta línea genera el ruido de tamaño igual a la imagen gris.
    se crea un ruido gaussiano aleatorio.
  • j2=n+doble(j1); Esta línea genera imágenes ruidosas al agregar ruido a la imagen en escala de grises.
    debido a la naturaleza adictiva del ruido gaussiano, se ha agregado directamente a la imagen.
  • Gaussiano=fspecial(‘gaussiano’, 5, 1); Esta línea crea el filtro gaussiano.
    5 es la media y 1 es la varianza del filtro gaussiano.
  • Vuelta=[0 -1 0; -1 4 -1; 0 -1 0]; Esta línea de código define el Filtro Laplaciano.
  • j4=conv2(j2, Gaussiano, ‘igual’); Esta línea convierte primero la imagen ruidosa con el filtro gaussiano.
  • j5=conv2(j4, Vuelta, ‘igual’); Esta línea Convoluciona la imagen resultante con filtro laplaciano.
  • imtool(j4,[]); Esta línea muestra la Gaussiana de noisy_image.
  • imtool(j5,[]); Esta línea muestra la imagen resultante laplaciana o gaussiana.

 

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 *