houghlines
Extraer segmentos de rectas basados en la transformada de Hough
Descripción
extrae segmentos de rectas de la imagen lines
= houghlines(BW
,theta
,rho
,peaks
)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.
utiliza argumentos de par nombre-valor para controlar diversos aspectos de la extracción de rectas.lines
= houghlines(___,Name,Value
)
Ejemplos
Encontrar segmentos de recta y resaltar el segmento más largo
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;
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');
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
Resalte el segmento de recta más largo coloreándolo de cian.
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
Argumentos de entrada
BW
— Imagen binaria
Matriz lógica 2D | Matriz numérica 2D
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
theta
— Ángulo de rotación de recta
Matriz numérica
Á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
rho
— Distancia desde el origen hasta la recta
Matriz numérica
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
peaks
— Coordenadas de fila y columna de los bins de la transformada de Hough
Matriz numérica
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);
FillGap
— Distancia entre dos segmentos de recta asociados con el mismo bin de la transformada de Hough
20
(predeterminado) | número positivo
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
MinLength
— Longitud mínima de la recta
40
(predeterminado) | número positivo
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
lines
— Rectas detectadas
arreglo de estructura
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 |
---|---|
| Vector de dos elementos |
| Vector de dos elementos |
| Ángulo del bin de la transformada de Hough en grados |
| Posición del eje |
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
houghlines
es compatible con la generación de código C (requiere MATLAB® Coder™). Para obtener más información, consulte Code Generation for Image Processing.Los nombres de los parámetros opcionales
'FillGap'
y'MinLength'
deben ser constantes en tiempo de compilación. Sus valores asociados no necesitan ser constantes en tiempo de compilación.
Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.
Notas y limitaciones de uso:
Los nombres de los parámetros opcionales
'FillGap'
y'MinLength'
deben ser constantes en tiempo de compilación. Sus valores asociados no necesitan ser constantes en tiempo de compilación.
Historial de versiones
Introducido antes de R2006a
Consulte también
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)