Paso 7: Crear y configurar el sistema de visión de computadora (CVS)
La biblioteca OpenCV es donde se realiza todas las operaciones de procesamiento de vídeo y la información extraída de este procesamiento es hecho haciendo decisiones robótica plataforma y otros componentes que permiten al sistema dinámico. Su versión es la 2.2.8 OpenCV que presente ejemplos y todas las funciones disponibles en versiones para Windows, MAC y Linux.
Era necesario hacer la instalación con el comando:
Actualización del sistema: sudo apt-get update
Instalar actualizaciones: sudo apt-get upgrade
Instalar la librería OpenCV: sudo apt-get instalar python-opencv
El CVS (Computer Vision System):
La figura de este paso muestra el conjunto de las funciones del sistema. Estas funciones se ejecutan secuencialmente y repetidamente para valores reales de las características dinámicas del objeto (coordenadas y tamaño) hasta seis veces (o seis variaciones) una segunda vez. Es decir, cada segundo se generan hasta seis valores que serán procesados y comparados, racionalización de la plataforma.
Utilice la figura de este paso para cada descripción del paso:
- Primero fue necesario capturar (o recibir) la imagen, específicamente el marco que contiene la imagen (fotograma). El tamaño es 160 x 120 píxeles. La estructura en general (por ejemplo, 640 píxeles de ancho y 480 píxeles de alto), causado una ralentización en el proceso de reconocimiento cuando la imagen se transmite de forma remota. El valor predeterminado de sistema de color RGB, este sistema de color está representada en el marco de la webcam obtenido a través de los colores básicos: rojo (Red), verde (Green) y azul (azul). Estos colores están representados en un vector dimensional de pixel por pixel, por ejemplo, el color rojo es 0com mentionada valores (0, 255, 0), respectivamente representados para cada canal. Es decir, cada píxel tiene su valor RGB representado por 3 bytes (rojo verde y azul).
- Después de la imagen capturada, la conversión de sistema de color RGB a color HSV (tonalidad, saturación y valor) fue emprendida, puesto que este modelo describe similar al reconocimiento de los colores del ojo humano. Puesto que el sistema RGB (rojo, verde y azul) tiene los colores basados en combinaciones de los colores primarios (rojo, verde y azul) y el sistema HSV definen colores como su color, brillo y brillo (tono, saturación y valor), facilitando la extracción de información. En el diagrama el paso 2 muestra la conversión de RGB a HSV, usando el "cvtColor" nativa OpenCV, que convierte la imagen de entrada de un sistema de color de entrada a otra función.
- Con la imagen en el modelo HSV , fue necesario encontrar los valores correctos de color mínimo y máximo de HSV del objeto que se seguirá. Para guardar estos valores, se hicieron dos vectores con VHS y VHS máximo objeto de color como valores: brillo de mínima saturación (62) (63) de Hue (42) mínima mínima máxima tonalidad (92) máxima saturación (255) máximo brillo (235). Así que el siguiente paso para generar una imagen binaria, puede verse limitada la información pertinente sólo en el contexto de estos valores. Estos valores son necesarios para limitar el patrón del color del objeto. Se utilizó una función de comparación de los valores de píxel con los valores estándar del vector insertado. El resultado fue una imagen binaria proporcionar un solo valor para cada píxel.
- Realizar la segmentación, lo que resulta en la imagen binaria, se observa que ruido todavía están presentes en el marco. Estos ruidos son elementos que dificultan la segmentación (incluyendo obtención del tamaño real) del objeto. Para solucionarlos (o intente arreglar) este problema, fue necesario aplicar una transformación morfológica a través de operadores en el marco, para que los píxeles que no cumplían con el estándar deseado fueron quitados. Para ello, se utilizó el operador morfológico erosión, que realizó una "limpia" en el marco, reducir el ruido contenido en él.
- Entonces fue utilizado para la función de "Momentos" , que calcula los momentos de contorno positivo (blanco) mediante una integración de todos los píxeles en el contorno. Esta función sólo es posible en un marco ya binarizado y sin ruido, para que no se cambia el tamaño del contorno del objeto por stray pixels en el marco, que dificultan y redundancia en información.
momentos = cv2.moments (imgErode, True)En el ejemplo propuesto, era necesario encontrar el área del contorno y sus coordenadas de ubicación en el marco de hacer los cálculos de reposicionamiento del chasis. El cálculo de la superficie del objeto realiza la suma binaria de positivo, generar la variable M00 y registrado en la variable "zona":
área = momentos ['m00']
La especificidad del contorno se refiere a un objeto, no un polígono. Este valor se encuentra un área aproximada de píxeles positivos (blanco) que componen el objeto. Si este valor es null, no se respetan la existencia de un color del objeto tratado (si el color "verde") en el marco. Usando esta función le ayudará a lograr el movimiento del robot acercarse y distanciamiento del objeto, intentar tratar el problema de la profundidad. Es decir, el hecho de que el objeto se acerca o distanciar excesivamente chasis.Y de la específica zona de fue posible, definir las coordenadas del objeto en este marco. Para las coordenadas del objeto fue utilizados parámetros obtenidos función momentos que encontró su coordinada. Pero esto fue coordinado basándose en el centroide del objeto, es encontrado solamente si el área del objeto es mayor que cero. Usando esta característica era importante que el movimiento de ajuste horizontal y vertical del robot con el fin de aumentar el grado de libertad y minimizar la restricción del movimiento del objeto para ser identificado. Usando el área del parámetro objeto y combinado con M00 x e y momentos de la función de los parámetros, era posible encontrar las coordenadas (x, y).
Así los valores en la coordenada (x, y) se refiere a la colocación de la segmentación encontrada del objeto en relación con el marco y para facilitar la interpretación de la información que se se extrae de la información de coordenadas, una función que dibuja un círculo en el centroide fue aplicado al objeto.
El resultado:
Paso 6 se demostrará en el transcurso de los próximos pasos será necesario explicar la configuración de los motores y otras partes antes de proceder con esta parte.
El script adjunto "SVC.py" le ayuda a comenzar a entender cómo funciona el sistema. Si problemas dan su frambuesa Pi, te recomiendo revisar las bibliotecas instaladas o contacto.
Cómo ejecutar un python script en frambuesa Pi?? aqui!
¿Se procederá con el robot de montaje? Manos a la obra!