Bonjour à tous,
Voilà bien longtemps que je parcours régulièrement ce forum, et je me lance enfin afin de vous faire part d'un projet qui me tient à coeur
J'ai attaqué depuis peu la conception d'un Ambilight maison et je passais voir si par hasard d'autres n'auraient pas déjà tenté l'expérience... J'ai bien vu un sujet parlant de mettre des néons à leds derrière nos écrans plats mais c'était plus en rapport avec une lumière d'ambiance qu'avec un ambilight.
Je sais que je suis loin d'être le premier à attaquer une telle réalisation, des projets tels que Atmolight et Momolight étant assez connus. Cependant j'avais en tête un projet un peu plus ambitieux avec beaucoup plus de secteurs lumineux, Momolight se limitant à haut, gauche et droite.
D'après les premiers tests que j'ai pu faire, il semble que la principale difficulté réside dans le logiciel de pilotage des leds et plus particulièrement dans l'algorithme de détection de couleur dominante de chaque secteur...
Je vais essayer de rassembler au plus vite les informations que j'ai pu accumuler jusqu'à maintenant et faire un état de mon avancement
La suite au prochain épisode
|
Modérateurs: Modération Forum DIY, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités
TV, Projo, Boitier Switch, Ecrans...
Conception d'un Ambilight DIY
- djwill31
- Messages: 19
- Inscription Forum: 28 Nov 2008 10:16
- Localisation: Toulouse
Je me réponds à moi même pour vous faire donc part de mon travail accompli à l'heure actuelle.
Pour commencer voici une rapide photo de mon installation :
J'ai décidé de découper l'image en 12 secteurs pour avoir un résultat assez bien définit : 4 en haut, 3 sur les côtés et seulement 2 en bas étant donné que haut-parleur central est collé à la télé.
Les néons les plus adaptés que j'ai pu trouver sont vendus sur http://www.dealextreme.com. Ils ont l'avantage d'être suffisamment lumineux, de pouvoir être coupés et de couter moins de 10$ pièce :
Un logiciel côté PC devra donc communiquer avec une carte électronique pour générer 36 PWM (R+V+B * 12). J'ai pour ma part utiliser un microcontrôleur USB PIC18F87J50 qui est certes assez petit mais suffisant pour gérer l'USB et les PWM.
Le logiciel faisant le traitement vidéo est codé en Delphi et juste pour le fun je lui ai donné l'apparence de mon salon . Il détecte automatiquement si un lecteur audio ou vidéo est lancé, si aucun des deux n'est lancé, on a la possibilité de piquer une couleur pour avoir une lumière d'ambiance :
Dans le cas où par exemple MPC-HC est lancé, l'ambilight fonctionne normalement :
Dans le cas où iTunes ou Winamp seraient lancés, j'ai rapidement implanté un mode audio où la couleur varie en fonction de l'intensité du son (graves en haut, mediums sur les côtés, aigues en bas) :
Ainsi qu'un VU-Mètre :
Voici maintenant des photos de l'ambilight en action :
Même si toutes ces photos semblent encourageantes, j'estime qu'il y a encore pas mal de travail au niveau de mon algorithme de détection de couleur dominante qui présente quelque défaillances notamment dans des plans assez sombres...
Voilà donc pour commencer, j'attends vos remarques et critiques en espérant pouvoir faire avancer un peu plus ce projet grâce à vous
Je précise au passe que mes schémas et codes sources sont disponibles si vous le désirez
Pour commencer voici une rapide photo de mon installation :
J'ai décidé de découper l'image en 12 secteurs pour avoir un résultat assez bien définit : 4 en haut, 3 sur les côtés et seulement 2 en bas étant donné que haut-parleur central est collé à la télé.
Les néons les plus adaptés que j'ai pu trouver sont vendus sur http://www.dealextreme.com. Ils ont l'avantage d'être suffisamment lumineux, de pouvoir être coupés et de couter moins de 10$ pièce :
Un logiciel côté PC devra donc communiquer avec une carte électronique pour générer 36 PWM (R+V+B * 12). J'ai pour ma part utiliser un microcontrôleur USB PIC18F87J50 qui est certes assez petit mais suffisant pour gérer l'USB et les PWM.
Le logiciel faisant le traitement vidéo est codé en Delphi et juste pour le fun je lui ai donné l'apparence de mon salon . Il détecte automatiquement si un lecteur audio ou vidéo est lancé, si aucun des deux n'est lancé, on a la possibilité de piquer une couleur pour avoir une lumière d'ambiance :
Dans le cas où par exemple MPC-HC est lancé, l'ambilight fonctionne normalement :
Dans le cas où iTunes ou Winamp seraient lancés, j'ai rapidement implanté un mode audio où la couleur varie en fonction de l'intensité du son (graves en haut, mediums sur les côtés, aigues en bas) :
Ainsi qu'un VU-Mètre :
Voici maintenant des photos de l'ambilight en action :
Même si toutes ces photos semblent encourageantes, j'estime qu'il y a encore pas mal de travail au niveau de mon algorithme de détection de couleur dominante qui présente quelque défaillances notamment dans des plans assez sombres...
Voilà donc pour commencer, j'attends vos remarques et critiques en espérant pouvoir faire avancer un peu plus ce projet grâce à vous
Je précise au passe que mes schémas et codes sources sont disponibles si vous le désirez
- djwill31
- Messages: 19
- Inscription Forum: 28 Nov 2008 10:16
- Localisation: Toulouse
moi je dis bravo, je me suis contenter de mettre de simple réglette mono couleur , mais c'est moins beau
- BC_passion
- Messages: 666
- Inscription Forum: 11 Mai 2004 19:21
- Localisation: 69 ex 76
SUPER !!!!!!!!
J'attendais cela depuis longtemps... des anglais ont fait cela, mais que sur 3 cotés et à chaque fois, un lumiere centrée en haut et centré de chaque coté. N'y connaissant rien dans la programmation dans le milieu de la video, je cherchais un peu au hasard!
Mais là ca a l'air splendire.. je vais relire le sujet une 2eme fois pour bien tout comprendre... moi je cherchais un petit filtre a mettre ds ffdshow par exemple
P'tet prévoir si c'est facile, un peu plus de zone pour les personnes n'ayant pas de central directement sous la tv ..(et autre PIC avec plus de PWM si ca existe) ou je pensais p'tet faire un système comme ca derrière un écran fixe... mais bon là je m'emballe...
Si tu veux un echange d'idées ou autre je suis partant . je ne connais pas le Delphi, mais ca ne doit pas etre bien différent de tous les autres langages de prog que je connais de la rpog reste de la prog, mais apres le coté "vidéo" doit etre plus specialisé
Mais je ne suis pas contre un peu d'aide si tu veux à mes heures perdus
Bonne continuation
Fantastique projet
J'attendais cela depuis longtemps... des anglais ont fait cela, mais que sur 3 cotés et à chaque fois, un lumiere centrée en haut et centré de chaque coté. N'y connaissant rien dans la programmation dans le milieu de la video, je cherchais un peu au hasard!
Mais là ca a l'air splendire.. je vais relire le sujet une 2eme fois pour bien tout comprendre... moi je cherchais un petit filtre a mettre ds ffdshow par exemple
P'tet prévoir si c'est facile, un peu plus de zone pour les personnes n'ayant pas de central directement sous la tv ..(et autre PIC avec plus de PWM si ca existe) ou je pensais p'tet faire un système comme ca derrière un écran fixe... mais bon là je m'emballe...
Si tu veux un echange d'idées ou autre je suis partant . je ne connais pas le Delphi, mais ca ne doit pas etre bien différent de tous les autres langages de prog que je connais de la rpog reste de la prog, mais apres le coté "vidéo" doit etre plus specialisé
Mais je ne suis pas contre un peu d'aide si tu veux à mes heures perdus
Bonne continuation
Fantastique projet
- Aceditnanar
- Messages: 4492
- Inscription Forum: 07 Jan 2006 15:53
- Localisation: 69, année... hhmmmm, pardon !
Le codage d'un filtre directshow fait partie de ce que je me suis fixé de développer. Celà résoudrait une bonne partie des problèmes que je rencontre à l'heure actuelle en particulier une charge CPU assez importante lors de la capture des images...
Mon logiciel PC gère le nombre de néons dynamiquement, avoir 4 secteurs en bas n'est pas du tout un problème. Coté hardware, aucun microcontroleur ne peut fournir en natif 36 PWM ou plus, les PWM sont recréées artificiellement. Il reste plusieurs I/O de libres qui pourraient servir à rajouter 2 zones facilement.
Le plus compliqué pour l'analyse de l'image vidéo c'est de la capturer. Pour le moment j'utilise la manière la plus brutale et la moins élégante : une sorte d'imprim-écran à 25 images par seconde, j'en récupère une image brute, il est facile ensuite d'analyser chaque pixel.
Je cherche une solution à base de directx pour accéder directement au flux vidéo de la carte graphique mais je n'ai encore eut rien de concret pour le moment.
Affaire à suivre...
Mon logiciel PC gère le nombre de néons dynamiquement, avoir 4 secteurs en bas n'est pas du tout un problème. Coté hardware, aucun microcontroleur ne peut fournir en natif 36 PWM ou plus, les PWM sont recréées artificiellement. Il reste plusieurs I/O de libres qui pourraient servir à rajouter 2 zones facilement.
Le plus compliqué pour l'analyse de l'image vidéo c'est de la capturer. Pour le moment j'utilise la manière la plus brutale et la moins élégante : une sorte d'imprim-écran à 25 images par seconde, j'en récupère une image brute, il est facile ensuite d'analyser chaque pixel.
Je cherche une solution à base de directx pour accéder directement au flux vidéo de la carte graphique mais je n'ai encore eut rien de concret pour le moment.
Affaire à suivre...
Dernière édition par djwill31 le 15 Mar 2009 20:58, édité 1 fois.
- djwill31
- Messages: 19
- Inscription Forum: 28 Nov 2008 10:16
- Localisation: Toulouse
C'est amusant de voir que d'autres ici pensent à ça
Mais tu sembles plus motivé que moi ! je me suis bricolé un système avec ce que j'avais de dispo et limité à 3 ou 4 canaux.
Tu as vu que le plus compliqué dans l'histoire c'est le calcul de la couleur.
J'ai écrit un plugins pour mon lecteur favori MPlayer http://www.mplayerhq.hu/ C'est relativement simple à faire car le soft est bien pensé. Je suis sous linux mais ça doit fonctionner tout aussi bien sous windows.
Pour l'algorithme, j'ai fait simple Je découpe chaque frame en 3 zones: moitié haute, moitié droite et moitié gauche (bien sûr la zone en haut se chevauche avec les 2 autres) et je fais une bête moyenne sur les rouges/verts/bleus. Je suis satisfait du résultat de cet algo. T'as d'autres idées ?
J'ai juste prévu de faire une évolution: la luminosité est comme le son sa perception n'est pas linéaire. C'est juste un tableau à calculer mais en ce moment je manque de temps pour m'occuper de ça...
Thomas
Mais tu sembles plus motivé que moi ! je me suis bricolé un système avec ce que j'avais de dispo et limité à 3 ou 4 canaux.
Tu as vu que le plus compliqué dans l'histoire c'est le calcul de la couleur.
J'ai écrit un plugins pour mon lecteur favori MPlayer http://www.mplayerhq.hu/ C'est relativement simple à faire car le soft est bien pensé. Je suis sous linux mais ça doit fonctionner tout aussi bien sous windows.
Pour l'algorithme, j'ai fait simple Je découpe chaque frame en 3 zones: moitié haute, moitié droite et moitié gauche (bien sûr la zone en haut se chevauche avec les 2 autres) et je fais une bête moyenne sur les rouges/verts/bleus. Je suis satisfait du résultat de cet algo. T'as d'autres idées ?
J'ai juste prévu de faire une évolution: la luminosité est comme le son sa perception n'est pas linéaire. C'est juste un tableau à calculer mais en ce moment je manque de temps pour m'occuper de ça...
Thomas
- wiu
- Messages: 72
- Inscription Forum: 01 Fév 2006 15:12
- Localisation: 94
Plutôt convainquant comme réalisation, bravo.
- cri83
- Messages: 758
- Inscription Forum: 24 Juin 2006 17:59
- Localisation: Les Grandes Bouches du Rhône :)
wiu a écrit:C'est amusant de voir que d'autres ici pensent à ça
Mais tu sembles plus motivé que moi ! je me suis bricolé un système avec ce que j'avais de dispo et limité à 3 ou 4 canaux.
Tu as vu que le plus compliqué dans l'histoire c'est le calcul de la couleur.
J'ai écrit un plugins pour mon lecteur favori MPlayer http://www.mplayerhq.hu/ C'est relativement simple à faire car le soft est bien pensé. Je suis sous linux mais ça doit fonctionner tout aussi bien sous windows.
Pour l'algorithme, j'ai fait simple Je découpe chaque frame en 3 zones: moitié haute, moitié droite et moitié gauche (bien sûr la zone en haut se chevauche avec les 2 autres) et je fais une bête moyenne sur les rouges/verts/bleus. Je suis satisfait du résultat de cet algo. T'as d'autres idées ?
J'ai juste prévu de faire une évolution: la luminosité est comme le son sa perception n'est pas linéaire. C'est juste un tableau à calculer mais en ce moment je manque de temps pour m'occuper de ça...
Thomas
Pour la détection de couleur dominante, j'ai commencé aussi par une moyenne mais l'inconvénient est que si les images sont trop variées en couleurs les 3 composantes tendent vers leur valeur médiane (128) ce qui donne du gris ou dans tous les cas des couleurs assez pales.
Pour le moment, quand je balaye mes pixels, je converti les données RGB en HSV (Hue Saturation Value ou Teinte Saturation Valeur en français) puis j'applique un filtre gaussien sur les teintes pour avoir la teinte la plus répendue. Je n'ai plus qu'à faire la moyenne des saturations et des valeurs pour avoir une bonne approche de la couleur dominante que je re-converti en RGB pour finir. Le passage par l'espace colorimétrique HSV a aussi pour avantage de pouvoir appliquer des corrections de luminausité très facilement.
C'est certes un brin plus intelligent qu'une moyenne mais dans certains cas que je n'ai pas encore bien identifiés il y a encore des erreurs... D'ailleurs si quelqu'un a une meilleure idée ou bien des axes de réflexion je suis preneur
Ah et aussi pour info, j'utilise un filtre linéaire sur environ 200ms pour stabiliser correctement la couleur. Sans ça, il y avait un scintillement assez genant ; en particulier lorsqu'il y a plusieurs couleurs dominantes presque également réparties.
Pour ce qui est de la réponse rétinienne, j'ai déja une fonction de transfert logarithmique inverse pour la corriger.
Au passage il faut aussi prévoir une correction manuelle des 3 composantes RVB pour compenser l'erreur que peuvent présenter les barres de LEDs ; en tout cas sur mes néons, il est flagrant que les composantes ne sont pas de luminausité égale, je n'ai donc pas de vrai blanc lorsque tout est à 100%. Cette partie sera très bientot codée meme si l'idéal serait d'utiliser un colorimètre
Dernière édition par djwill31 le 16 Mar 2009 13:51, édité 1 fois.
- djwill31
- Messages: 19
- Inscription Forum: 28 Nov 2008 10:16
- Localisation: Toulouse
Voici quelques liens vers Youtube où j'y ai posté quelques vidéos :
http://www.youtube.com/watch?v=9cO23xhS7Us
http://www.youtube.com/watch?v=PiapdQf5TeY
http://www.youtube.com/watch?v=-IkgyMGzMjs
http://www.youtube.com/watch?v=xu6P4BflbTI
http://www.youtube.com/watch?v=a1OqlpApuOk
http://www.youtube.com/watch?v=9cO23xhS7Us
http://www.youtube.com/watch?v=PiapdQf5TeY
http://www.youtube.com/watch?v=-IkgyMGzMjs
http://www.youtube.com/watch?v=xu6P4BflbTI
http://www.youtube.com/watch?v=a1OqlpApuOk
- djwill31
- Messages: 19
- Inscription Forum: 28 Nov 2008 10:16
- Localisation: Toulouse
Original et superbement réalisé, le résultat est top. Beau projet !
- Kro
- Messages: 29438
- Inscription Forum: 12 Jan 2004 19:24
- Localisation: Isère (38)
djwill31 a écrit:Le plus compliqué pour l'analyse de l'image vidéo c'est de la capturer. Pour le moment j'utilise la manière la plus brutale et la moins élégante : une sorte d'imprim-écran à 25 images par seconde, j'en récupère une image brute, il est facile ensuite d'analyser chaque pixel.
Je cherche une solution à base de directx pour accéder directement au flux vidéo de la carte graphique mais je n'ai encore eut rien de concret pour le moment.
Affaire à suivre...
Ce vieux truc de brute
- gloinfred
- Messages: 5415
- Inscription Forum: 20 Mar 2008 16:15
- Localisation: Provence
Le résultat est superbe !
Beau travail
Hervé
Beau travail
Hervé
- Marsupilami
- Messages: 5945
- Inscription Forum: 07 Mar 2001 2:00
- Localisation: France - Lyon
Salut,
Dans un premier temps je tenais a te dire bravo pour ce que tu as réalisé.
Et dans un 2e temps pourrais tu me donner plus d'infos sur ton montage et ton programme :
- Interface avec le pc
- Montage du systeme led etc
Et j'aimerais savoir si tu pense que ce systeme est réalisable derrière un écran de projection, écran cadre de 2,32m de base en 16/9.
Au cas ou j'ai quelques notions de progra si ca te tentes d'avoir un peu d'aide.
A bientot et encore chapeau bas .
Dans un premier temps je tenais a te dire bravo pour ce que tu as réalisé.
Et dans un 2e temps pourrais tu me donner plus d'infos sur ton montage et ton programme :
- Interface avec le pc
- Montage du systeme led etc
Et j'aimerais savoir si tu pense que ce systeme est réalisable derrière un écran de projection, écran cadre de 2,32m de base en 16/9.
Au cas ou j'ai quelques notions de progra si ca te tentes d'avoir un peu d'aide.
A bientot et encore chapeau bas .
- freez
- Messages: 117
- Inscription Forum: 30 Nov 2008 20:02
- Localisation: Nancy
Superbe
Je n'ai jamais vu d'ambilight de ma vie, mais à part une légère lattence (que tu peux difficilement controler j'imagine, et je ne sais pas d'ailleurs si c'est de même sur le système initial ou si si ils ont crée un délai pour le temps de modif des couleurs des leds) c'est re
Idée à la noix : plutôt que de calculer la moyenne, est-ce que tu as essayé de calculer la médiane ? ou d'autres fonctions statistiques ?
Voir ton programme delphi m'intéresserait par curiosité de programmation d'une carte controleur actuelle (je ne suis pas automaticien , et à mon époque à la fac, on contrôlait des 6502 )
Bravo ! A+ RV
Je n'ai jamais vu d'ambilight de ma vie, mais à part une légère lattence (que tu peux difficilement controler j'imagine, et je ne sais pas d'ailleurs si c'est de même sur le système initial ou si si ils ont crée un délai pour le temps de modif des couleurs des leds) c'est re
Idée à la noix : plutôt que de calculer la moyenne, est-ce que tu as essayé de calculer la médiane ? ou d'autres fonctions statistiques ?
Voir ton programme delphi m'intéresserait par curiosité de programmation d'une carte controleur actuelle (je ne suis pas automaticien , et à mon époque à la fac, on contrôlait des 6502 )
Bravo ! A+ RV
- herve502
- Messages: 1945
- Inscription Forum: 12 Fév 2003 13:02
- Localisation: Valenciennes, loin de mon chouchenn natal
|
Retourner vers Vidéo, Ecrans et VP |