Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Detección de bordes

En una imagen, un borde es una curva que sigue una trayectoria de cambio rápido en intensidad de imagen. A menudo, los bordes se asocian con los límites de los objetos de una escena. La detección de bordes se usa para identificar los bordes de una imagen.

Para hallar los bordes, puede utilizar la función edge. Esta función busca lugares de la imagen en los que la intensidad cambia rápidamente usando uno de estos dos criterios:

  • Lugares en los que la primera derivada de la intensidad tiene una magnitud mayor que el umbral

  • Lugares en los que la segunda derivada de la intensidad tiene un cruce por cero

edge proporciona varios estimadores de derivadas, cada uno de los cuales implementa una de estas definiciones. En algunos de estos estimadores, puede especificar si la operación debe detectar los bordes horizontales, verticales o ambos. edge devuelve una imagen binaria con unos donde hay bordes y ceros en el resto de las partes.

El mejor método para detectar bordes que edge proporciona es el método de Canny. El método de detección de bordes de Canny difiere de otros en que utiliza dos umbrales diferentes (para detectar bordes intensos y débiles), e incluye los bordes débiles en el resultado solo si están conectados a bordes intensos. Por lo tanto, es menos probable que este método se vea afectado por el ruido y es más probable que detecte bordes débiles reales.

Detectar bordes en imágenes

Este ejemplo muestra cómo detectar bordes en una imagen empleando tanto el detector de bordes de Canny como el de Sobel.

Lea una imagen en el espacio de trabajo y muéstrela en pantalla.

I = imread('coins.png');
imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

Aplique el detector de bordes de Sobel a la imagen de entrada sin filtrar. Después, aplique el detector de bordes de Canny a la imagen de entrada sin filtrar.

BW1 = edge(I,'sobel');
BW2 = edge(I,'canny');

Muestre las imágenes filtradas una al lado de la otra para compararlas.

tiledlayout(1,2)

nexttile
imshow(BW1)
title('Sobel Filter')

nexttile
imshow(BW2)
title('Canny Filter')

Figure contains 2 axes objects. Axes object 1 with title Sobel Filter contains an object of type image. Axes object 2 with title Canny Filter contains an object of type image.