Sólo para fines educativos, estoy trabajando en hacer una carta-y-símbolo de reconocimiento de programa en Python, y me he topado con algunos problemas con la región de la separación. Hice un trabajo conectado-componente de la función de etiquetado de uso de la información aquí:

CCL – Wikipedia

Pero necesito uno con la precisión de un 8-conectividad, el cual menciona, pero no proporciona información. Tiene un diagrama en el lado derecho que demuestra que, para comprobarlo, el Noroeste y el Noreste de los píxeles deben ser incluidas, pero no tengo idea de cómo y no puedo encontrar ninguna información sobre ella. No estoy pidiendo el código, pero ¿puede alguien familiarizado con este método se describe cómo incorporar esos?

2 Comentarios

  1. 13

    8-conectividad no es más precisa, y que en la práctica es adecuada sólo para ciertas aplicaciones. Es más común el uso de 4-conectividad, especialmente para los «naturales» de imágenes en lugar de las imágenes creadas en el laboratorio para su análisis. 8-conectados de la región se incluyen los patrones de tablero de ajedrez y en zigzag ruido. 4-conectados en primer plano, se obtiene un 8-conectados de fondo.

    Usted puede cavar en el origen de la función de OpenCV cvFindContours(). Hay OpenCV bindings para Python.
    http://opencv.willowgarage.com/documentation/python/structural_analysis_and_shape_descriptors.html

    http://opencv.willowgarage.com/wiki/PythonInterface

    Yo recomendaría primero en la aplicación de 4-conectado algoritmo. Usted puede encontrar pseudocódigo en libros como los siguientes:

    • De Visión de la máquina: Teoría, Algoritmos, las cuestiones Prácticas por E. R. Davies
      En la 3ª edición, consulte la sección 6.3, «Objeto Etiquetado y Contando»
    • Tratamiento de la Imagen Digital por González y Woods
      Consulte la sección 9.5.3 «la Extracción de los Componentes Conectados»
      La presentación es menos claro, pero este es un estándar de la todo-en-un libro de texto para el procesamiento de imágenes. La sección sobre el umbral de binarización es bueno. Una edición internacional de costos de alrededor de $35.
    • Antiguos libros de texto pueden tener simples, sencillas descripciones. Ejemplares

      De Visión por computador por Ballard y Marrón son bastante baratos. En ese libro, el Algoritmo 5.1 se llama Blob para Colorear.
    • Mi favorito breve descripción se puede encontrar en la sección «Región de Etiquetado Algoritmo» de Manual de tratamiento de Imagen y Video editado por Al Bovik. Convenientemente, páginas 44 – 45 están disponibles en línea en Google Books:
      http://books.google.com/books?id=UM_GCfJe88sC&q=region+labeling+algorithm#v=snippet&q=region%20labeling%20algorithm&f=false

    Para OCR es común buscar oscuro regiones conectadas (blobs) sobre un fondo claro. Nuestro binarized imagen va a ser un negro en primer plano (0) sobre un fondo blanco (1) en un 1 bits de la imagen.

    Para un 4-conectado algoritmo que se va a utilizar los elementos de la estructura como la que se muestra a continuación (que también podrás ver en el Bovik libro). Una vez que haya jugado con 4-conectividad, que la extensión de la 8-conectividad debe ser obvia.

    La implementación de 8-Conectividad Conectado-Componente Etiquetado en Python

    Podemos escanear cada fila de píxeles en la imagen de izquierda a derecha, y todas las filas de la parte superior a la parte inferior. Para cualquier píxel (x,y), su vecino de la izquierda (x – 1, y) y vecino superior (x, y – 1) ya han sido analizados, por lo que podemos comprobar si un número de región que ya ha sido asignado a uno o ambos de los vecinos. Por ejemplo, si el pixel (x, y-1) es la etiqueta de la región 8, y si (x,y) es también un primer plano de píxeles, a continuación, asignamos la región 8 de la a (x,y). Si el pixel (x,y) es un píxel de primer plano, pero la izquierda y la parte superior de los vecinos son los píxeles de fondo, se asigna un nuevo número de región a (x,y).

    Recomiendo la Bovik de referencia, pero aquí está una descripción rápida del algoritmo.

    1. Inicializar un número de región de contorno (por ejemplo, «region = 0»)
    2. Inicializar una «región de equivalencia de la estructura de datos para su posterior procesamiento.
    3. Crear una imagen en blanco y negro utilizando un umbral de binarización.
    4. Escanear cada píxel en la imagen de arriba a abajo, de izquierda a derecha.
    5. Asignar la región 0 para cualquier fondo blanco (1) píxeles.
    6. Para cualquier negro primer plano de píxel (x,y) probar las siguientes condiciones:
      • Si la parte superior y a la izquierda de píxeles de primer plano, utilice el número de región para (x-1, y) como el número de región para (x,y), y la pista de la equivalencia de la izquierda y la parte superior de la región de los números.
      • Si sólo a la izquierda vecino (x – 1,y) es un primer plano de píxel, utilice su número de región para (x,y)
      • Si solo vecino superior (x, y – 1) es un primer plano de píxel, utilice su número de región para (x,y)
      • Si la izquierda y la parte superior de los vecinos son los píxeles de fondo, incrementar el número de región y asignar este nuevo número de región a (x,y).
    7. Después de completar este proceso para toda la imagen, analizar la equivalencia de la matriz y reducir cada colección de equivalente regiones a una sola región.

    La reducción de equivalencias es la parte difícil. En la imagen de abajo, las regiones han sido correctamente etiquetados de acuerdo con el algoritmo. La imagen muestra un color diferente para cada número de región. Los tres tocar las regiones debe ser reducido a uno conectado región.

    La implementación de 8-Conectividad Conectado-Componente Etiquetado en Python

    El código debe analizar la equivalencia de la estructura de datos para reasignar 2 (roja) y 3 (azul oscuro) hasta el más bajo de la numeración de la región, que es de 1 (amarillo). Una vez que el número de región de reasignación es completa, región de etiquetado es completa.

    Hay un paso de algoritmos que evitan la necesidad de una equivalencia de verificación en total, aunque este tipo de algoritmos son un poco más difíciles de implementar. Yo recomendaría la primera aplicación de la tradicional 4-conectado algoritmo, la solución de sus problemas y, a continuación, la introducción de una opción para el uso de 8-conectividad lugar. (Esta opción es común en el procesamiento de la imagen de las bibliotecas.) Una vez que tengas 4-conectado y 8-conectados de la región de etiquetado de trabajo que tendrá un buen algoritmo que va a encontrar muchos usos. En la búsqueda de trabajos académicos sobre el tema, de verificación para «región de etiquetado», «representaciones» «contornos» y «conectividad».

    Para escala de grises algoritmos que necesitan ser binarized, su umbral de algoritmo es probable que convertirse en un punto débil en su cadena de algoritmos. Para ayudar con la umbralización, obtener una copia de los González y Woods libro. Para OCR, retirar el libro de Reconocimiento de Caracteres de los Sistemas de por Cheriet, el Karma, Liu, y Suen.

    • Para la velocidad, te recomiendo el solo paso del algoritmo implementado en «Un Componente de Etiquetado Algoritmo Usando el Contorno de Trazado de la Técnica» por Chen y Chang google.com/…

Dejar respuesta

Please enter your comment!
Please enter your name here