Encuentra una línea específica en una imagen

9

Quiero encontrar la línea entre el color azul y el color gris en la siguiente imagen:

ingrese la descripción de la imagen aquí

Más exactamente, los puntos finales de esa línea.

¿La transformación de Hough es una elección? En caso afirmativo, ¿cómo debo configurar la imagen antes de usar Hough?

Cualquier forma de resolver esto sería útil.


fuente
Haga una detección de bordes antes de la transformación de Hough. Transformará esa transición en una línea brillante con negro en ambos lados
endolito el

Respuestas:

10

En general, desea un detector de bordes, como el detector de bordes Canny, para este tipo de problema. La transformación Hough es útil para extraer líneas en lugar de bordes.

Sin embargo, en este caso específico, es mejor que haga algo como:

imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);

ya que es una imagen tan simple.

Nzbuu
fuente
0

Para una imagen tan simple, un núcleo de convolución como el siguiente encontrará bordes muy bien:

[-1 2 - 1]

Esto produce un píxel de borde único en cada punto de borde. Sin alboroto, sin muss. Canny está demasiado involucrado para este problema. Si desea encontrar puntos de borde para líneas en cualquier ángulo, puede usar un simple Laplaciano, Laplaciano de Gauss (LoG) o Diferencia de Gauss (DoG). Sobel y Prewitt también son simples pero inapropiados ya que producen una línea de "doble grosor".

Aquí se describe una implementación rápida y malvada de Hough: http://www.ic.uff.br/~laffernandes/projects/kht/index.html

También hay algoritmos de "Hough sin parámetros" que son muy rápidos, pero un poco difíciles de implementar y depurar.

Repensar
fuente