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.

houghlines

Extraer segmentos de rectas basados en la transformada de Hough

Descripción

ejemplo

lines = houghlines(BW,theta,rho,peaks) extrae segmentos de rectas de la imagen BW asociados con bins específicos en la transformada de Hough. theta y rho son vectores que devuelve la función hough. peaks es una matriz que devuelve la función houghpeaks, la cual contiene las coordenadas de fila y columna de los bins de la transformada de Hough para usarlos en la búsqueda de segmentos de rectas. El valor de retorno lines contiene información sobre los segmentos de rectas extraídos.

ejemplo

lines = houghlines(___,Name,Value) utiliza argumentos de par nombre-valor para controlar diversos aspectos de la extracción de rectas.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I  = imread('circuit.tif');

Rote la imagen.

rotI = imrotate(I,33,'crop');

Cree una imagen binaria.

BW = edge(rotI,'canny');

Cree la transformada de Hough usando la imagen binaria.

[H,T,R] = hough(BW);
imshow(H,[],'XData',T,'YData',R,...
            'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;

Figure contains an axes object. The axes object with xlabel theta, ylabel rho contains an object of type image.

Busque los picos de la transformada de Hough de la imagen.

P  = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');

Figure contains an axes object. The axes object with xlabel theta, ylabel rho contains 2 objects of type image, line. One or more of the lines displays its values using only markers

Busque las rectas y represéntelas.

lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
figure, imshow(rotI), hold on
max_len = 0;
for k = 1:length(lines)
   xy = [lines(k).point1; lines(k).point2];
   plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

   % Plot beginnings and ends of lines
   plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
   plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

   % Determine the endpoints of the longest line segment
   len = norm(lines(k).point1 - lines(k).point2);
   if ( len > max_len)
      max_len = len;
      xy_long = xy;
   end
end

Figure contains an axes object. The axes object contains 37 objects of type image, line. One or more of the lines displays its values using only markers

Resalte el segmento de recta más largo coloreándolo de cian.

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

Figure contains an axes object. The axes object contains 38 objects of type image, line. One or more of the lines displays its values using only markers

Argumentos de entrada

contraer todo

Imagen binaria, especificada como matriz lógica 2D o matriz numérica 2D. En la entrada numérica, cualquier píxel distinto de cero se considera 1 (true).

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Ángulo de rotación de recta, en grados, especificado como una matriz numérica. El ángulo se mide entre el eje x y el vector rho.

Tipos de datos: double

Distancia desde el origen de la coordenada, especificado como una matriz numérica. El origen de la coordenada es la esquina superior izquierda de la imagen (0,0).

Tipos de datos: double

Coordenadas de fila y columna de los bins de la transformada de Hough, especificadas como una matriz numérica.

Tipos de datos: double

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);

Distancia entre dos segmentos de recta asociados con el mismo bin de la transformada de Hough, especificada como un número positivo. Cuando la distancia entre los segmentos de recta es inferior al valor especificado, la función houghlines combina los segmentos de recta en un único segmento de recta.

Tipos de datos: double

Longitud mínima de la recta, especificada como un número positivo. houghlines descarta las rectas que son más cortas que el valor especificado.

Tipos de datos: double

Argumentos de salida

contraer todo

Rectas detectadas, devueltas como un arreglo de estructura cuya longitud es igual al número de segmentos de recta combinados que se ha encontrado. Cada uno de los elementos del arreglo de estructura tiene estos campos:

Campo

Descripción

point1

Vector de dos elementos [X Y] que especifica las coordenadas del punto final del segmento de recta

point2

Vector de dos elementos [X Y] que especifica las coordenadas del punto final del segmento de recta

theta

Ángulo del bin de la transformada de Hough en grados

rho

Posición del eje rho del bin de la transformada de Hough

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

|