Main Content

hough

Transformada de Hough

Descripción

ejemplo

[H,theta,rho] = hough(BW) calcula la transformada de Hough estándar (SHT) de la imagen binaria BW. La función hough está diseñada para detectar rectas. La función utiliza la representación paramétrica de una recta: rho = x*cos(theta) + y*sin(theta). La función devuelve rho, la distancia desde el origen hasta la recta a lo largo de un vector perpendicular a la recta, y theta, el ángulo en grados entre el eje x y este vector. La función también devuelve la SHT, H, que es una matriz del espacio de parámetros cuyas filas y columnas corresponden a los valores rho y theta respectivamente. Para obtener más información, consulte Algoritmos.

ejemplo

[H,theta,rho] = hough(BW,Name,Value) calcula la SHT de la imagen binaria BW utilizando argumentos de nombre-valor para afectar el cálculo.

Ejemplos

contraer todo

Lea una imagen y conviértala en una imagen en escala de grises.

RGB = imread('gantrycrane.png');
I  = im2gray(RGB);

Extraiga los bordes.

BW = edge(I,'canny');

Calcule la transformada de Hough.

[H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',-90:0.5:89);

Muestre la imagen original y la matriz de Hough.

subplot(2,1,1);
imshow(RGB);
title('gantrycrane.png');
subplot(2,1,2);
imshow(imadjust(rescale(H)),'XData',T,'YData',R,...
      'InitialMagnification','fit');
title('Hough transform of gantrycrane.png');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(gca,hot);

Figure contains 2 axes objects. Axes object 1 with title Hough transform of gantrycrane.png contains an object of type image. Axes object 2 with title gantrycrane.png contains an object of type image.

Lea una imagen y conviértala en escala de grises.

RGB = imread('gantrycrane.png');
I  = im2gray(RGB);

Extraiga los bordes.

BW = edge(I,'canny');

Calcule la transformada de Hough en un intervalo limitado de ángulos.

[H,T,R] = hough(BW,'Theta',44:0.5:46);

Muestre la transformada de Hough.

figure
imshow(imadjust(rescale(H)),'XData',T,'YData',R,...
   'InitialMagnification','fit');
title('Limited Theta Range Hough Transform of Gantrycrane Image');
xlabel('\theta')
ylabel('\rho');
axis on, axis normal;
colormap(gca,hot)

Figure contains an axes object. The axes object with title Limited Theta Range Hough Transform of Gantrycrane Image contains an object of type image.

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

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.

Ejemplo: [H,theta,rho] = hough(BW,RhoResolution=0.5)

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

Ejemplo: [H,theta,rho] = hough(BW,"RhoResolution",0.5)

Espaciamiento de los bins de la transformada de Hough a lo largo del eje rho, especificado como un número positivo entre 0 y norm(size(BW)) (no incluido).

Tipos de datos: double

Valores Theta para SHT, especificados como un vector numérico con elementos en el intervalo [-90, 90].

Ejemplo: -90:0.5:89.5

Tipos de datos: double

Argumentos de salida

contraer todo

Matriz de la transformada de Hough, devuelta como matriz numérica de tamaño nrho por ntheta. Las filas y columnas corresponden a los valores rho y theta. Para obtener más información, consulte Algoritmos.

Ángulo entre el eje x y el vector rho, en grados, devuelto como matriz numérica. Para obtener más información, consulte Algoritmos.

Tipos de datos: double

Distancia desde el origen hasta la recta a lo largo de un vector perpendicular a la recta, devuelto como arreglo numérico. Para obtener más información, consulte Algoritmos.

Tipos de datos: double

Algoritmos

La transformada de Hough estándar (SHT) utiliza la representación paramétrica de una recta:

rho = x*cos(theta) + y*sin(theta)

El origen del sistema de coordenadas se supone que está en el centro del píxel de la esquina superior izquierda.

La variable rho es la distancia perpendicular desde el origen hasta la recta.

La variable theta es el ángulo de la proyección perpendicular desde el origen hasta la recta medido en grados en el sentido de las agujas del reloj desde el eje positivo x. El intervalo de theta es –90° ≤ θ < 90°. El ángulo de la propia recta es θ + 90°, también medido en el sentido de las agujas del reloj con respecto al eje positivo x.

Graphical representation of how theta and rho are defined for a line, in green, relative to the perpendicular projection, in black.

La SHT es una matriz del espacio de parámetros cuyas filas y columnas corresponden a los valores rho y theta respectivamente. Los elementos de la SHT representan las celdas del acumulador. Inicialmente, el valor de cada celda es cero. Después, para cada punto que no es el fondo de la imagen, rho se calcula para cada theta. rho se redondea a la fila más cercana permitida en la SHT. Esa celda del acumulador se incrementa. Al final de este procedimiento, un valor de Q de SHT(r,c) significa que los puntos Q del plano xy se encuentran en la recta que especifican theta(c) y rho(r). Los valores máximos de la SHT representan rectas potenciales de la imagen de entrada.

La matriz de la transformada de Hough, H, es nrho por ntheta, en la que:

nrho = 2*(ceil(D/RhoResolution)) + 1, y
D = sqrt((numRowsInBW - 1)^2 + (numColsInBW - 1)^2). Los valores
rho van de -diagonal a diagonal, donde
diagonal = RhoResolution*ceil(D/RhoResolution).

ntheta = length(theta)

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a