Reconocimiento de imagenes para Raspberry Pi


La famosa librería TensorFlow fue originalmente desarrollada por investigadores e ingenieros que trabajan  dentro de la organización de investigación de la máquina de Inteligencia de Google estando el sistema  diseñado para facilitar la investigación en el aprendizaje de máquina, y para que sea rápido y fácil de transición del prototipo de investigación al sistema de producción.

Aunque se piense que es una librería consolida (la ultima versión es la 10,Release 0)  , TensorFlow no está completa, pues está construida  pensando en ser  mejorada, y extendida. El equipo de desarrollo ha hecho una versión inicial del código fuente, y en la actualidad están haciendo esfuerzos internos de desarrollo a utilizar un repositorio público de los cambios del día a día realizados por el equipo en Google. Esperan construir una comunidad de código abierto activa que impulse el futuro de esta biblioteca, proveyendo de retroalimentación y contribuyendo activamente al código fuente.

 

Nuestro cerebro hacen que la visión parecen fácil pues no se necesita ningún esfuerzo para el ser humano de distinguir un león y un jaguar, leer una señal, o reconocer el rostro de un ser humano. Pero estos son en realidad problemas difíciles de resolver con un ordenador: sólo parece fácil porque nuestros cerebros son muy buenos en la comprensión de las imágenes.

En los últimos años el campo de aprendizaje de la máquina ha hecho enormes progresos en hacer frente a estos problemas difíciles. En particular, hemos encontrado que una especie de modelo  llamado convolutional neural network  puede lograr un rendimiento razonable en las tareas de reconocimiento visual duros igualando o superar el rendimiento humano en algunos dominios.

Los investigadores han demostrado un progreso constante en la visión por ordenador mediante la validación de su trabajo contra IMAGEnet ( un punto de referencia académica para la visión por ordenador). Modelos sucesivos siguen mostrando mejoras, y cada vez que ese consigue un  logro,el  resultado nuevo mejora el estado de la técnica: QuocNet , AlexNet , Inception (GoogLeNet) , BN-Inception-v2 . Los investigadores tanto internos como externos a Google han publicado artículos que describen todos estos modelos, pero los resultados son todavía difíciles de reproducir .En este momento se esta  dando el siguiente paso mediante la liberación de código para ejecutar el reconocimiento de imágenes en nuestro último modelo, Inception-v3 .

Inception-v3 está capacitado para el IMAGEnet grande Reconocimiento Visual Challenge utilizando los datos de 2012. Se trata de una tarea estándar en la visión por ordenador, donde los modelos tratan de clasificar las imágenes completas en 1000 clases , al igual que la “cebra”, “dálmata”, y “lavavajillas “. Por ejemplo, aquí están los resultados de AlexNet la clasificación de algunas imágenes:

 

Para comparar los modelos, examinamos la frecuencia con que el modelo no puede predecir la respuesta correcta como uno de sus 5 mejores conjeturas mediante el denominado “top-5 índice de error” . AlexNet ha logrado mediante el establecimiento de un top 5 , llegar  a una tasa de error del 15,3% en un dataset de validaciones de  2012 . BN-Inception-v2 alcanzan el 6,66% y  Inception-v3 alcanza el 3,46%.Karpathy intentó medir su propio rendimiento y  alcanzó el top-5 tasa de error de 5,1%.

Ahora vamos a ver  un ejemplo  en Python  para cómo utilizar Inception-v3 para  cómo clasificar las imágenes en 1000 clases en Python o C ++ . También es interesante saber cómo extraer características de nivel superior de este modelo que pueden ser reutilizado para otras tareas de visión.

 

Descargue el modelo  classify_image.py  de tensorflow.org cuando el programa se ejecute por primera vez. Usted necesitará unos 200 Mbs de espacio libre disponible en el disco duro.

Las siguientes instrucciones puede ejecutarla  suponiendo  que ha instalado TensorFlow de un paquete PIP y que su terminal reside en el directorio raíz TensorFlow.

cd tensorflow/models/image/imagenet python classify_image.py

El comando anterior clasificar una imagen suministrada de un oso panda.

Si el modelo se ejecuta correctamente, la secuencia de comandos producirá el siguiente resultado:

giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.88493) indri, indris, Indri indri, Indri brevicaudatus (score = 0.00878) lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00317) custard apple (score = 0.00149) earthstar (score = 0.00127)

Si desea suministrar otras imágenes JPEG, puede hacerlo editando el  argumento  –image_file.

Si descarga los datos del modelo en un directorio diferente, tendrá que señalar –model_dir al directorio utilizado.

 

Como ejemplo de uso  se  puede  utilizar  una combinación de OpenCV junto con la librería TensorFlow de Google para utilizar redes de neuronas en Google Cloud para entrenar un modelo de clasificación en la nube.

El japones  Kazunori Sato   ha intentado clasificar verdura ( pepinos )   con el uso de esta  librería implementada  en una Raspberry Pi junto a una webcam para analizar visualmente cada  pieza de verdura  y poder clasificarlos  por tamaños  de una manera eficiente.

Mediante una pequeña máquina casera que han diseñado, a la que  han añadido varios  servos(para expulsar las  muestra clasificadas)  junto a  una cinta transportadora  para transportar las muestras ,  todos controlados  por la raspberry pi  consiguen una eficiencia teórica de más de 95% de acierto,   si bien como se puede ver en el ejemplo, el funcionamiento es algo lento.

En el siguiente video puede ver pues una aplicación practica de uso de esta librería:

 

 

 

 

Para obtener información sobre las redes neuronales en general,l libro online gratis de Michael Nielsen es un excelente recurso. Para las redes neuronales convolucionales, en particular, Chris Olah tiene algunas buenas entradas de blog , y el libro de Michael Nielsen tiene un gran capítulo sobre estas.

Para obtener más información sobre la aplicación de redes neuronales convolucionales, puede mirar el tutorial de TensorFlow sobre  redes convolucionales  o empezar un poco más suavemente con  ML 

 

Anuncios

Coche RC Autonomo basado en Rasberry Pi y Arduino


Este proyecto desarrollado por   Zeng Wang  constituye  una versión reducida de un  sistema de auto-conducción ( eso si usando un coche de RC) con una Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)
, un Arduino ,y  un ordenador exterior con software de código abierto.

El sistema utiliza tanto una Raspberry Pi con la cámara incorporada  oficial  como un sensor ultrasónico como entradas, enviando la informacion a un ordenador  que recibe el video  y se encarga del procesamiento en tiempo real del video capturado por la raspberry Pi mediante  reconocimiento de objetos (señal de stop y semáforos) y medición de distancia  ordenando las señales correspondientes  de la dirección mediante una placa Arduino para el control del coche de RC.

Dos programas ejecutándose en la Raspberry Pi permiten gestionar la información que recibe y la transmiten junto al vídeo de baja resolución (320 x 240) que capta la cámara a otro ordenador vía WiFi .A su vez el mando que controla el coche teledirigido efectivamente sigue dirigiéndolo, pero lo hace a través de las órdenes que le pasa ese ordenador vía USB mediante una placa Arduino.

El código fuente esta disponible en git hub 

El resultado, como puede verse en el vídeo, es espectacular .

 

 

 

El objetivo del autor Wang en efecto era modificar un coche RC  para que fuese capaz de  manejar tres tareas: auto-conducción en la pista, la señal de detención  ,la detección semáforo, y evitar colisiones frontales.

El sistema construido  consta de tres subsistemas:

  • Unidad de entrada (cámara, el sensor de ultrasonidos)
  • Unidad de procesamiento (ordenador) y
  • Unidad de control del coche RC.

Unidad de entrada

Una placa  Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45) al que se conecta un módulo de cámara pi y un sensor ultrasónico-HC SR04 se utiliza para recoger datos de entrada. Dos programas de cliente se ejecutan en Raspberry Pi para el streaming de vídeo en color y datos de los sensores ultrasónicos a la computadora a través de conexión Wi-Fi local.Con el fin de conseguir una baja latencia de streaming de vídeo, el vídeo se escala hasta QVGA (320 × 240) resolución.

Unidad de procesamiento

La unidad de procesamiento (ordenador) se encarga de múltiples tareas: recibir datos de Raspberry Pi, el entrenamiento de la red neural red y la predicción (dirección), la detección de objetos (señal de stop y semáforos), medición de distancia (visión monocular), y el envío de instrucciones via Arduino a través de conexión USB .

Servidor TCP
Un programa de servidor TCP multihilo se ejecuta en el ordenador para recibir cuadros de imagen por streaming y datos ultrasónicos de la Raspberry Pi. Los cuadros de imagen se convierten a escala de grises y se descodifican en matrices numpy.

Red Neuronal
Una ventaja de usar la red neuronal es que una vez que la red ha aprendido, sólo necesita cargar parámetros formados después, y por tanto, la predicción puede ser muy rápida. Sólo la mitad inferior de la imagen de entrada se utiliza para fines de aprendizaje y de predicción. Hay 38.400 (320 × 120) nodos en la capa de entrada y 32 nodos en la capa oculta. El número de nodos en la capa oculta se elige bastante arbitrario.

Hay cuatro nodos en la capa de salida, donde cada nodo corresponde a las instrucciones de control de dirección: izquierda, derecha, adelante y atrás respectivamente (aunque inversa no se utiliza  Wang la ha incluido en la capa de salida).

mlp_half_32-2

A continuación se muestra el proceso de recolección de datos de entrenamiento.Primero cada cuadro se recorta y se convierte en una matriz numpy. Entonces la imagen de tren está emparejado con la etiqueta de tren (entrada humana). Por último, todos los datos y etiquetas de imagen emparejados se guardan en un archivo NPZ. La red neuronal está entrenada en el uso de OpenCV  usando el  método de propagación de vuelta. Una vez que la formación se lleva a cabo, los pesos se guardan en un archivo xml. Para generar predicciones, la misma red neuronal se construye y se carga con el archivo xml capacitado.

collect_train_data

Detección de Objetos
Para este proyecto Wang adaptó el enfoque basado en la forma utilizando clasificadores en cascada Haar basados ​​en características para la detección de objetos. Desde cada objeto se requiere su propio clasificador y sigue el mismo proceso de formación y detección, asi que en este proyecto sólo se centra en señal de stop y la detección del semáforo.

OpenCV proporciona un entrenador, así como detector. Las muestras positivas (contener objeto de destino) fueron adquiridos utilizando un smartphone , y se recortan para que solo el objeto deseado sea visible. Las muestras negativas (sin objeto de destino), por otro lado, se recogieron al azar. En particular, para el semáforo  muestras positivas contienen igual número de semáforos en rojo que semáforos en verde. El mismo conjunto de datos de muestras negativas se utilizan tanto para la señal de stop como para  la formación del semáforo. A continuación se muestran algunas muestras positivas y negativas utilizadas en este proyecto.

pos_neg_samples

sample_tabel

Para reconocer diferentes estados del semáforo (rojo, verde), se necesita un poco de procesamiento de imágenes más allá de la detección.

El diagrama de flujo a continuación resume el proceso de reconocimiento semáforo.

brightest_spot

En primer lugar, entrenado el clasificador en  cascada se utiliza éste para detectar un semáforo. El cuadro delimitador es considerada como una región de interés (ROI). En segundo lugar, la falta de definición de Gauss se aplica dentro de la ROI para reducir ruidos. En tercer lugar, encontrar el punto más brillante en el retorno de la inversión. Por último, los estados rojos o verdes se determinan basándose simplemente en la posición del punto más brillante en el retorno de la inversión.

Distancia de medida
Raspberry Pi sólo puede soportar un módulo de cámara de un pi. El uso de dos cámaras web USB traerá peso extra para el coche RC y también parece poco práctico.Por lo tanto, se elige el método visión monocular.

Este proyecto adaptó un modelo de geometría de detectar la distancia a un objeto utilizando el método de la visión monocular propuesto por Chu, Ji, Guo, Li y Wang (2004).

distante

P es un punto en el objeto de destino; d es la distancia desde el centro óptico hasta el punto P. En base a la geometría de la relación anterior, la fórmula (1) muestra cómo calcular la distancia d. En la fórmula (1), f es la longitud focal de la cámara; ∂ es el ángulo de inclinación de la cámara; h es la altura del centro óptico; (x0, y0) se refiere al punto de plano de la imagen y el eje óptico intersección; (x, y) se refiere a la proyección del punto P en el plano de la imagen. Supongamos O1 (u0, v0) es la cámara de coordenadas del punto de eje óptico y el plano de la imagen de intersección, también supongamos que la dimensión física de un píxel correspondiente al eje X y el eje Y en el plano de la imagen son dx y dy. Entonces:
distance_measure
v es la cámara de coordenadas en el eje y, y se puede devolver en el proceso de detección de objetos. Todos los demás parámetros son parámetros intrínsecos de la cámara que se pueden recuperar de la matriz de la cámara.

OpenCV proporciona funciones para calibración de la cámara. Matriz de la cámara para la cámara de 5MP pi se devuelve después de la calibración. Idealmente, a_x y a_y tienen el mismo valor. Varianza de estos dos valores se traducirá en píxeles no cuadrados en la imagen. La siguiente matriz indica que la lente de longitud focal fija en cámara pi ofrece un razonablemente buen resultado en el manejo de la distorsión de aspecto. Aquí es un artículo interesante discutir la distancia focal de la cámara pi con la acción de la lente y su equivalente de cámara de 35mm.
pi_cam_matrixLa matriz devuelve valores en píxeles y h se mide en centímetros. Mediante la aplicación de la fórmula (3), la distancia física d se calcula en centímetros.

Unidad RC Car Control

El coche RC utilizada en este proyecto tiene un controlador tipo de interruptor de encendido / apagado. Cuando se pulsa un botón, la resistencia entre el contacto pasador y el suelo chip de referencia es cero. Por lo tanto, una placa Arduino se utiliza para simular las acciones sobre el pulsador. Cuatro pines de Arduino se eligen para conectar cuatro clavijas de chips en el controlador, que corresponde a adelante, atrás, izquierda y derecha, respectivamente, acciones. Pines de Arduino envian señales baja indicando a tierra los pines de chips del controlador; Por otro lado el envío de señal de alta indica la resistencia entre los pines de chips y suelo permanecen sin cambios. El Arduino se conecta al ordenador a través de USB. Las salidas de computadora comandos para Arduino utilizando interfaz serie, y luego el Arduino lee los comandos y escribe señales de bajo o alto, simulando acciones de botón de prensa para conducir el coche RC.

Resultados

La predicción de las muestras de prueba devuelve una precisión de 85% en comparación con la precisión de 96% de que las muestras de entrenamiento devoluciones. En la situación de conducción real, predicciones se generan cerca de 10 veces por segundo (velocidad de transmisión de aproximadamente 10 fotogramas / s).

Características Haar por naturaleza son la rotación sensible. En este proyecto, sin embargo, la rotación no es una preocupación ya que tanto la señal de stop y el semáforo son objetos fijos, que es también un caso general en el entorno del mundo real.

drive_test01drive_test02

Para distancia aspecto medición, el sensor de ultrasonidos sólo se utiliza para determinar la distancia a un obstáculo delante del coche RC y proporciona resultados exactos cuando se toma la detección de ángulo adecuado y estado de la superficie en las consideraciones. Por otro lado, la cámara Pi ofrece “suficientemente buenos” resultados de la medición. De hecho, siempre y cuando sabemos que el número correspondiente a la distancia real, sabemos cuándo dejar el coche RC. Los resultados experimentales de detección a distancia usando la cámara pi se muestran a continuación:
camera_measure2

En este proyecto, la exactitud de la medición de la distancia utilizando el enfoque de visión monocular podría estar influenciada por los siguientes factores: (1) errores en la medición de los valores reales, (2) objeto de delimitación variaciones de caja en el proceso de detección, (3) errores en el proceso de calibración de la cámara, (4) relación no lineal entre la distancia y la cámara de coordenadas: la mayor distancia del, más rápido cambio de la cámara de coordenadas, por lo tanto cuanto mayor sea el error.

En general, el coche de RC podría navegar con éxito en la pista con la capacidad de evitar la colisión frontal, y responder a la señal de stop y semáforos en consecuencia.

Segun Wang ,el proceso de entrenamiento fue relativamente sencillo debido a la sencillez del modelo de carretera utilizada, y a eso se le sumaba la detección de objetos gestionada por la plataforma OpenCV (Open Source Computer Vision) que entre otras cosas también permitía calibrar la cámara.

 

Es sin duda  un proyecto apasionante y sorprendente el que ha realizado  Zheng Wang  demostrando  una vez hasta donde  puede llegar  la capacidad de procesamiento  actual  presentes en dispositivos tan reducidos y modestos como lo constituye la gama  de la Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)

Mas  información en la web del autor

Fabriquese su propio ambilight


Tras conseguir implementar un sistema Ambilight básico hace unos años, el creador de este proyecto ha actualizado el sistema para conseguir de la mano de Arduino una respuesta más fiel del sistema de iluminación casero. Analizando y detectando cambios de colores en la fuente, principalmente de software hace las veces de centro multimedia en un ordenador, podemos conseguir un sistema que es bastante fiel al original de Philips. Y todo por unos 60 dólares.

La iluminación ambiental que reacciona a la imagen en su televisor es más fácil y más barato de lo que se piensa haciendo una gran actualización a su experiencia de cine en casa.

Originalmente desarrollado para televisores Philips en 2002, dicha característica es todavía sólo está disponible en un número limitado de modelos – y, como resultado, una gran cantidad de personas que han tratado de hacer su propio Ambilight que no implicara la compra de un nuevo televisor.
Hasta ahora, la soluciones de ambilight caseras han sido relativamente caras o con baja resolución(a pocos píxeles en cada borde) – Incluso el autor una sola versión de píxeles hace unos años. Ahora una nueva generación de LEDs asequibles, programables ha llegado – y usted también puede construir una alta resolución Ambilight clon por tan poco como $ 60. ¿Interesado?

Por el momento este diseño , sólo funciona con  procesamiento de señales en el lado del ordenador – así que es genial para reproducir video con  VLC, Popcorn Time, Kodi (antes conocido como XBMC), o los juegos de PC. Por desgracia, el procesamiento de entrada HDMI genérico es más difícil – por lo menos, necesitaríamos un divisor de HDMI, y algún tipo de conversor a formato analógico más legible., asi  que  por ahora, esto sólo funciona con un ordenador.

Paso 1 / Usted necesitará

La lista de piezas es corta  sin electrónica compleja aquí:

La parte principal de este clon Ambilight es una cadena de LEDs WS2812B direccionables individualmente. Cada LED tiene su propio conjunto de chips y de una sola línea se utiliza para la comunicación.  Se puede comprar en  Aliexpress por $ 52 incluyendo el envío –  para un carrete de 5 metros (150 LED), que es más que suficiente para el más grande de televisores – y mucho más barato por LED de la cadena $ 50, que Adafruit vende. Una fuente de alimentación de 5V / 10A independiente se pueden comprar por alrededor de $ 10, pero se puede utilizar una vieja fuente de alimentación ATX  convertída previamente en un suministro banco. Si usted tiene una enorme televisión y está pensando en unirse a múltiples tiras porque 5 metros no es suficiente, asegúrese de resolver sus requerimientos de energía exactos a 60 mA por LED.


Paso 2 / Cableado

Vamos a probar las luces primero para asegurar la fuente de alimentación es suficiente y la comunicación básica está funcionando. Conecte el pin 6 del Arduino a la DIN en la tira de LED – su tira debe tener una ventaja de ruptura en un extremo, a fin de utilizar un cable de puente entre hombres y mujeres. También conecte el pin GND del Arduino a GND en la tira. No trate de suministrar energía a la tira por el pin de 5V en el Arduino. Va a freír el Arduino, muy rápidamente. En su lugar, utilice una fuente de alimentación externa de 5V. Una fuente de alimentación de escritorio estará feliz de alimentar la franja de 5 metros completa para la prueba (si se asume que ha seguido nuestra guía de conversión de alimentación de banco). Calcular a 60mA por LED; <span “> así que en mi caso, 114 LEDs en 60mA es poco menos 7A. Si usted está pensando, “7 amperios suena como un montón!”, Es porque este funciona a 5 voltios – 7 amperios a 240 voltios sería mucho más!

Tenga en cuenta que estas tiras tienen una dirección específica en la que la señal debe fluir, indicado por las flechas. Si va a conectar múltiples tiras, es posible que tenga que volver a inyectar la mitad de potencia para evitar la caída de tensión – me pareció que esto era innecesario con sólo 5 metros embargo.


Paso 3 / Cargar el código de Arduino y prueba

Hay tanto una parte Arduino y Processing al proyecto. En primer lugar asegúrese de que ha añadido FastLED a su directorio de bibliotecas Arduino, a continuación, descargar el código. Modificar la línea 7 para el número de LEDs que tienes; y si encuentras el perfil de color se rompe, modificar la línea 47. En la franja que he comprado, se trata de utilizar WS2812B chipset y el orden el color de “GRB”. Consulte la documentación FastLED sobre cómo calibrar a su franja – pero por defecto debería estar bien si usted compró los mismos LEDs.

Por último, se necesitan los componentes de procesamiento del código del proyecto Adafruit. Para la prueba, abrir Colorswirl.pde. De nuevo, modificar el número de LEDs en la línea 29; y el dispositivo serie en la línea 44. Si Arduino es el único dispositivo COM enchufado, Serial.list () [0] está muy bien. Si no, intente Serial.list () [1]. Ejecutar la aplicación y con un poco de suerte, sus tiras mostrarán una hermosa remolino de colores.

Tenga en cuenta que no está limitado al tratamiento – cualquier cosa que es compatible con el Adalight (como Prismatik) también se puede configurar para trabajar con esto – pero sólo a estar cubriendo el procedimiento de configuración para Adalight en este tutorial.


Paso 4 / Mide y corta a la medida

Tire de su televisor en la pared o darle la vuelta, y la altura. Estoy asumiendo que usted estará pegando las tiras directamente al televisor, pero si ese no es el caso, usted tendrá que construir un marco. Trate de asegurarse de que obtiene un píxel directamente en cada esquina, pero por lo demás este paso debe ser fácil. Vaya por delante y cortar la tira en longitudes más cortas – cortar solamente entre las almohadillas de cobre donde la línea discontinua indica; y aplicar 3M cinta adhesiva de doble cara para cada longitud. No utilice cinta barata, genérica como lo hice yo – es sólo que no se pegue. Si tiene que dejar un espacio en la parte inferior debido a un soporte de la TV, que lo hagan, pero asegúrese de que su franja empieza a ambos lados de eso y no en la esquina – se puede configurar esos desaparecidos píxeles más tarde en el lado del software de las cosas.


Paso 5 / Recorte el plástico

Si su franja está contenida dentro de una caja de plástico resistente al agua exterior, recorte esta distancia. Aplique cuidadosamente un poco de soldadura para cada pad de cobre antes de afijo esto a la televisión – que va a hacer que une las piezas mucho más fácil en el futuro.


Paso 6 / Adjuntar a su televisor y unirse

Vaya por delante y pegar las tiras en la parte posterior de su televisor, recordando que cada banda tiene una dirección que la señal debe seguir. No importa qué rincón o qué lado de la TV se destacan se parte de. Para unir las esquinas, sólo tiene que conectar cada uno de los 3 almohadillas a su contraparte en la siguiente tira. Una vez más, la aplicación de un poco de soldadura a los cables antes de intentar unirse a las almohadillas es mucho más fácil. Deje la tira final como es – no lo conecte de nuevo al comienzo!


Paso 7 / Prueba de nuevo

Vamos a asegurarnos de que no lo hicimos estropear el soldador allí – Capacidad de carga hasta la aplicación remolino del color de nuevo y comprobar. Una vez que estés satisfecho, devuelva el televisor en la posición correcta y poner en orden los cables. Vamos a pasar a la configuración del software.


Paso 8 / Configurar Adalight

El es la parte más tediosa del proyecto – cada LED individuo debe definirse en el software. Capacidad de carga hasta Adalight.pde en Procesamiento y primero cambiar la variable que define el número de píxeles a lo largo de los lados y la parte superior (ignorar las que faltan por ahora) – esto es en la línea 87. En mi caso, he usado 35 píxeles en la parte superior y fondo, y 22 en los lados, por lo que este se define como {0,35,22}.

Justo debajo de este es donde se encuentra el “per-LED de la información” – una larga lista que define cada LED alrededor de la TV de simple. Cada LED se define como un conjunto de 3 números:

  • Número de monitor (supongo que 0, pero el suyo podría ser de otra manera)
  • Coordenada X – 0 es la izquierda (frente a la pantalla del televisor)
  • Coordenada – 0 siendo la parte superior (frente a la pantalla del televisor)

Afortunadamente,  James Rankin – ha desarrollado una utilidad en línea útil que hace el trabajo duro para usted. Sólo tiene que introducir el tamaño de la matriz y la posición de inicio, a continuación, copiar / pegar la definición de la matriz generada en la aplicación de procesamiento Adalight. También ha publicado una solución rápida para hacer frente a películas de pantalla ancha, donde el código de procesamiento normalmente evaluar las barras negras en la parte superior e inferior de la pantalla en el sentido de mostrar ningún efecto de iluminación. Gracias James!

Si obtiene errores al compilar, significa que has perdido una coma en algún lugar o tienen demasiadas llaves – doble comprueba tu código.


Siéntese a ver una película

Ejecute el código y reproduzcar una película con su software favorito – la consola de depuración de Procesamiento me dice mi equipo logra un buen 15 fotogramas por segundo (que es la frecuencia de actualización de los LED, no la reproducción de vídeo) – cualquier ordenador moderno debe ser capaz de manejar eso. Hay unas pocas variables más que puede ajustar como el brillo mínimo y la demora se desvanecen entre actualizaciones – como siempre, es recomendable que lea el código, entender y modificar.

Felicitaciones, ahora tienen un sistema Ambilight DIY impresionante por $ 60 (y algunos LED sobrantes, probablemente).

Fuente aqui