Detección de bordes utilizando el operador de la primera derivada en MATLAB

baja frecuencia

La discontinuidad en el brillo de la imagen se denomina borde.

 La detección de bordes es la técnica utilizada para identificar las regiones de la imagen donde el brillo de la imagen cambia bruscamente. Este cambio brusco en el valor de la intensidad se observa en los mínimos o máximos locales en el histograma de la imagen, utilizando la derivada de primer orden. 

Ahora detectamos el borde usando el operador de la primera derivada con diferentes coordenadas. Para detectar un borde usando el operador de avance, usamos los siguientes pasos:

Pasos:

  • Lee la imagen.
  • Convertir a escala de grises si está coloreado.
  • Convertir al formato doble.
  • Defina la máscara o el filtro.
  • Detecta los bordes a lo largo del eje X.
  • Detecte los bordes a lo largo del eje Y.
  • Combine los bordes detectados a lo largo de los ejes X e Y.
  • Mostrar todas las imágenes.

Sintaxis:

  var_name = imread(” nombre de la imagen. extensión “);

var_name = rgb2gray (old_image_var);

 var_name = double(imagen);

 máscara = [1 -1 0];

 Kx = conv2(imagen_var, máscara, ‘igual’);

 Ky = conv2(imagen_var, máscara’, ‘igual’); 

Imagen_final = sqrt ( Kx.^2 + Ky.^2);

 imtool(imagen, []);

 imtool(abs(imagen), []);

Imtool() es la función incorporada en Matlab. Se utiliza para mostrar la imagen. Toma 2 parámetros; la primera es la variable de imagen y la segunda es el rango de valores de intensidad. Proporcionamos una lista vacía como segundo argumento, lo que significa que se debe usar el rango completo de intensidad mientras se muestra la imagen.

Operador directo [1 -1 0]:

Ejemplo 1:

Matlab

% MATLAB code for Forward 
% operator edge detection
k=imread("logo.png");
k=rgb2gray(k);
k1=double(k);
forward_msk=[1 -1 0];
kx=conv2(k1, forward_msk, 'same');
ky=conv2(k1, forward_msk', 'same');
ked=sqrt(kx.^2 + ky.^2);
  
%display the images.
imtool(k,[]);
 
%display the edge detection along x-axis.
imtool(kx,[]);
imtool(abs(kx), []);
  
%display the edge detection along y-axis.
imtool(ky,[]);
imtool(abs(ky),[]);
  
%display the full edge detection.
imtool(ked,[]);
imtool(abs(ked),[]);

Producción: 

imagen gris

Imagen detectada en el borde

Operador Central [1 0 -1]:

Ejemplo 2:

Matlab

% MATLAB code for Central
% operator edge detection
 k=imread("logo.png");
 k=rgb2gray(k);
 k1=double(k);
 central_msk=[1/2 0 -1/2];
 kx=conv2(k1, central_msk, 'same');
 ky=conv2(k1, central_msk', 'same');
 ked=sqrt(kx.^2 + ky.^2);
   
 %display the images.
 imtool(k,[]);
   
 %display the edge detection along x-axis.
 imtool(kx,[]);
 imtool(abs(kx), []);
   
 %display the edge detection along y-axis.
 imtool(ky,[]);
 imtool(abs(ky),[]); %binarised form
   
 %display the full edge detection.
 imtool(abs(ked),[]);

Producción: 

Aquí, podemos observar que el borde es más claramente visible.

imagen gris

Imagen detectada en el borde

Operador hacia atrás [0 1 -1]:

Ejemplo 3:

Matlab

% MATLAB code for Backward
% operator edge detection
k=imread("logo.png");
k=rgb2gray(k);
k1=double(k);
backward_msk=[0 1 -1];
kx=conv2(k1, backward_msk, 'same');
ky=conv2(k1, backward_msk', 'same');
ked=sqrt(kx.^2 + ky.^2);
 
%display the images.
imtool(k,[]);
 
%display the edge detection along x-axis.
imtool(kx,[]);
imtool(abs(kx), []);
 
%display the edge detection along y-axis.
imtool(ky,[]);
imtool(abs(ky),[]);
 
%display the full edge detection.
imtool(ked,[]);
imtool(abs(ked),[]);

Producción: 

Imagen original

Imagen detectada en el borde

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 *