Detección de bordes

Detección de bordes

La detección de bordes suele ser, en general, parte del preprocesado de una imagen previo a la detección de líneas u otras características en la imagen. La detección de bordes se basa en la detección de variaciones locales, que principalmente corresponden con los límites de un objeto en la imagen, pudiendo ser estas variaciones de color, intensidad, etc.

La forma más común de detectar bordes en la práctica es mediante máscaras de convolución, que no es más que una máscara o kernel que se convoluciona con la imagen en la que se desean detectar los bordes. Existen gran cantidad de máscaras distintas (Sobel, Prewitt, Roberts,Marr–Hildreth, etc.) diferenciándose entre ellas por el tamaño de la máscara ( 3x3, 5x5, 7x7, etc.) o la cantidad de máscaras usadas para detectar los bordes en las distintas direcciones del espacio (en la imagen se muestra una máscara horizontal y una vertical).

En esto es en lo que consiste la detección de bordes. Dependiendo del tipo de detector utilizado se obtendrán unos resultados u otros. En el caso de OpenCV, el detector de bordes que ofrece es el detector de Canny (que usa la máscara de Sobel), y se obtienen resultados como el que se puede apreciar en la figura.

La función que ofrece OpenCV para la detección de bordes es cv::Canny. La función Canny necesita como parámetros de entrada la imagen a la que aplicar la detección de bordes, la imagen en la que se guardará el resultado, el umbral inferior y superior usados para detectar (por histéresis) un borde (cambio de nivel), y el tamaño de la máscara a usar (3x3, 5x5, etc). Ahi que tener en cuenta que a esta función hay que pasarle una imagen con un único canal, siendo lo normal usar una imagen en escala de grises como la imagen de entrada a un filtro de Canny.

Obra publicada con Licencia Creative Commons Reconocimiento 2.5