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)
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')