2012-03-06 21 views
7

¿Cómo se implementa un Hough transform en una imagen de texto? Estoy buscando pseudo-código (eventualmente esto estará en java).¿Cómo implementar Hough Transform?

Aquí se exponen algunos elementos:

Dada una imagen, determine la ecuación de una recta y = mx + b. Normalmente, la Transformada de Hough se representa en coordenadas polares tales como Rho = y*sin(theta) + x*cos(theta). (No estoy muy seguro de que los valores X y Y corresponden a la imagen).

solo estamos interesados ​​en el Rho y theta valores y trazarlos. Las ubicaciones con muchos puntos en el acumulador (sé parte de la implementación, no de la ejecución) se consideran una línea.

El problema que no entiendo es cómo encontrar el rho y el theta con los que actualizará el acumulador.

+0

Avisadme si la respuesta era útil! ;) – Matteo

Respuesta

5

El caso más simple de la transformada Hough es la transformación lineal para que detecta líneas rectas. En el espacio de la imagen, la línea recta se puede describe como y = mx + b, y se puede representar gráficamente para cada par de puntos de imagen (x, y)

Así que este le dice lo x y y corresponden para retroceder en la imagen.

En la transformada de Hough, una idea principal es considerar las características de la línea recta no como puntos de imagen (x1, y1), (x2, y2), ..., pero lugar, en términos de sus parámetros, como el parámetro de pendiente m y el parámetro de intersección b.

Basado en ese hecho, la recta y = mx + b se puede representar como un punto (b, m) en el espacio de parámetros. Sin embargo, uno enfrenta el problema de que las líneas verticales dan lugar a valores ilimitados de los parámetros myb. Por razones de cálculo, , por lo tanto, es mejor utilizar un par diferente de parámetros, denotado y (theta), para las líneas en la transformada Hough.

El parámetro rho representa la distancia entre la línea y el origen , mientras que theta es el ángulo del vector desde el origen hasta este punto más cercano.

Esto le indica lo rho y theta corresponden a: son la representación en coordenadas polares de pendiente y la intersección de la línea que se está tratando de describir en su imagen.


En SourceForge se puede encontrar una aplicación C++ de transformada de Hough.

Una descripción de los que debe ser capaz de interpretar el código que he señalado en el enlace anterior puede ser la siguiente:

La transformada de Hough algoritmo utiliza una matriz, llamada un acumulador, a detectar la existencia de una línea y = mx + b.

Por ejemplo, el problema de la transformada lineal Hough tiene dos parámetros desconocidos: my b.

Para cada píxel y su entorno, el algoritmo de transformación Hough determina si hay suficiente evidencia de un borde en ese píxel. Si es , entonces, calculará los parámetros de esa línea, y luego buscará el contenedor del acumulador en el que se encuentran los parámetros, y aumentará el valor de ese contenedor.

Al encontrar las cajas con los valores más altos, por lo general mediante la búsqueda de máximos locales en el espacio de acumulación, las líneas más probables pueden ser extraídos