Detección de líneas

Detección de líneas

La detección de líneas en una imagen se puede hacer por distintos métodos. El más común, y es el que implementa OpenCV, es mediante la transformada de Hough que, realmente, es un método destinado a la detección de curvas fácilmente parametrizables (no sólo rectas).

Lo que hace la transformada de Hough es transformar cada punto de la imagen en la que se quieren detectar las líneas del “espacio de la imagen” al “espacio paramétrico” que vendrá determinado por los parámetros de la línea a detectar. Concretamente, los parámetros que se usan para identificar una línea serán la pendiente y la ordenada en el origen. Así, cada punto procesado incrementará uno de los elementos del array (acumulador) del “espacio paramétrico”, de forma que aquellos puntos del “espacio paramétrico” que tengan mayor valor indican la mayor o menor posibilidad de localización de una curva (línea en este caso) en la imagen. Así pues, la transformada de Hough cambia el problema de buscar una línea en una imagen por buscar un máximo en un array.

Por último comentar que si bien la transformada de Hough da buenos resultados y es más eficiente que otras técnicas exhaustivas para detección de líneas, sin embargo, tiene problemas con valores elevados de los parámetros (concretamente con las pendientes elevadas).

Respecto a OpenCV, la función que implementa la transformada de Hough se llama cv::HoughLines (cv::HoughLinesP en el caso de la Transformada de Hough Probabilística). La función HoughLines necesita como parámetros de entrada la imagen en la que se quieren detectar líneas (esta imagen deberá estar previamente preprocesada, convirtiéndola a escala de grises y detectando los bordes), la resolución de los parámetros rho y theta y el umbral a utilizar para la detección de las líneas. En el caso de la función HoughLinesP además hay que indicar la mínima distancia de la línea y máxima superposición de líneas.

Obra publicada con Licencia Creative Commons Reconocimiento 2.5