Atmo-plugin

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Was brauche ich an zusätzlicher Hardware?)
K
 
(310 dazwischenliegende Versionen von 78 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Allgemeine Funktionsbeschreibung==
+
==Hardware==
 +
Die Beschreibung der Hardware ist ausgelagert im Artikel [[Atmo-Light]] .
 +
 
 +
==Beschreibung ==
 
'''Maintainer:''' Eike Edener, Daniel König<br/>
 
'''Maintainer:''' Eike Edener, Daniel König<br/>
 
'''Autor(en):''' Eike Edener, Daniel König, Simon Canins, Peter Ippy
 
'''Autor(en):''' Eike Edener, Daniel König, Simon Canins, Peter Ippy
  
Das Atmolight-Plugin dient zum Ansteuern einer farbigen Hintergrundbeleuchtung für Fernsehgeräte. Die angezeigte Farbe hängt dabei vom Bildschirminhalt ab. Als Vorlage diente das {{wikipedia|Ambilight}} von {{wikipedia|Philips}}. Die Ansteuerung der Beleuchtung erfolgt über einen Mikrocontroller. Dieser wird über eine serielle Schnittstelle (oder über einen USB<->Seriell-Wandler) mit dem VDR verbunden. Als Lichtquellen kommen RGB Anordnungen aus {{wikipedia|CCFL}} Kaltlichtkathodenröhren  oder {{wikipedia|Leuchtdiode}}n (LEDs) zum Einsatz. Das Plugin ist in der Lage für jede der vier Kanten des Fernsehgerätes (also links/rechts/oben/unten) eine individuell berechnete Farbe auszugeben. Die Beleuchtung wird dann quasi als "Verlängerung" des Bildes über die Grenzen des Fernsehers hinaus genutzt. Zusätlich wird eine "Summenfarbe" ausgegeben, die verwendung findet, wenn nur eine RGB-Leuchte zentral hinter dem Fernsehgerät plaziert werden soll.
+
Das Atmolight-Plugin dient zum Ansteuern einer farbigen Hintergrundbeleuchtung für Fernsehgeräte. Die angezeigte Farbe hängt dabei vom Bildschirminhalt ab. Als Vorlage diente das {{wikipedia|Ambilight}} von {{wikipedia|Philips}}. Die Ansteuerung der Beleuchtung erfolgt über einen Mikrocontroller. Dieser wird über eine serielle Schnittstelle (oder über einen USB<->Seriell-Wandler) mit dem VDR verbunden. Als Lichtquellen kommen RGB-Anordnungen aus {{wikipedia|Leuchtdiode}}n (LEDs) zum Einsatz. Das Plugin ist in der Lage für jede der vier Kanten des Fernsehgerätes (also links/rechts/oben/unten) eine individuell berechnete Farbe auszugeben. Die Beleuchtung wird dann quasi als "Verlängerung" des Bildes über die Grenzen des Fernsehers hinaus genutzt. Zusätzlich wird eine "Summenfarbe" ausgegeben, die Verwendung findet, wenn nur eine RGB-Leuchte zentral hinter dem Fernsehgerät platziert werden soll. Es werden also laufend fünf verschiedene RGB-Farbkanäle ausgegeben.
  
Es werden also laufend fünf verschiedene RGB Farbkanäle ausgegeben.
+
Die Atmolight-Hardware kann auch unter Windows betrieben werden. Mehr dazu hier: [http://www.vdr-portal.de/board/thread.php?postid=588945#post588945 Atmolight unter Windows XP]oder [[AtmoWin|AtmoLight Windows]]
  
 
===Status===
 
===Status===
Demnächst wird eine neue Release des Plugins, sowie eine Nachbauanleitung für die Ansteuerplatine hier erscheinen.
+
Die aktuelle Version (VDR-1.5.7) ist [http://www.edener.de/vdr-atmo-0.1.3.tgz vdr-atmo-0.1.3.tgz].
 +
Diskussion im [http://www.vdr-portal.de/board/thread.php?threadid=72428 VDR-Portal].
 +
 
 +
Eine Nachbauanleitung für die notwendige Hardware (Ansteuerplatine, LED-Module) findet sich weiter unten, ebenso eine Bezugsquelle für fertige LED-Module.
  
 
===Bilder===
 
===Bilder===
  
 
{|
 
{|
|[[Bild:atmo1.jpg|thumb]]
+
|[[Bild:atmo-plugin-00.jpg|thumb|none|'''']]
|[[Bild:atmo2.jpg|thumb]]
+
|[[Bild:atmo-plugin-01.jpg|thumb|none|'''']]
|[[Bild:atmo3.jpg|thumb]]
+
|[[Bild:atmo-plugin-02.jpg|thumb|none|'''']]
 
|-
 
|-
|[[Bild:atmo4.jpg|thumb]]
+
|[[Bild:atmo-plugin-03.jpg|thumb|none|'''']]
|[[Bild:atmo5.jpg|thumb]]
+
|[[Bild:atmo-plugin-04.jpg|thumb|none|'''']]
|[[Bild:atmo6.jpg|thumb]]
+
|[[Bild:atmo-plugin-05.jpg|thumb|none|'''']]
 
|}
 
|}
  
==Hardware==
+
===Videos===
===Hardwareanforderungen===
+
P2k1 und kc_captain haben im VDR-Portal eine Vorstellung Ihres Systems mit weiteren Bildern und Videos gepostet.  
* VDR mit full featured DVB-Karte mit freiem /dev/video0 Device (momentan die einzige Möglichkeit atmolight zu nutzen, more to come...)
+
* mind. 1 Ansteuerplatine mit Mikrocontroller
+
* LEDs als Leuchtmittel (CCFLs können auch verwendet werden, ihr Einsatz ist aber nicht zu empfehlen und wird im Moment nicht unterstützt)
+
* evtl. Netzteil
+
  
===LED-Variante===
+
http://www.vdr-portal.de/board/thread.php?threadid=57731
  
====Was brauche ich an zusätzlicher Hardware?====
+
http://www.vdr-portal.de/board/thread.php?threadid=58491
Um atmolight zu benutzen sind in erster Linie externe "Lampen" erforderlich, mit denen die Wand ringsherum um den Fernseher beleuchtet wird.
+
In der einfachsten Variante werden zwei solche benötigt, eine links und eine rechts vom Fernseher. Zusätlich ist ein spezieller "Dimmer" (=Ansteuerplatine/Controller) erforderlich, der vom vdr Informationen darüber erhält, welche Farben dargestellt werden sollen. Das Ganze wird über ein Netzteil mit Strom versorgt.
+
  
Benötigt wird also:
+
==Bedienung==
* 1-5 LED-Module (je nach Anzahl gewünschter Kanäle und verfügbarer Controller)
+
* Gehäuse für LED-Module
+
* 1x Ansteuerplatine
+
* 1x Netzteil
+
  
Weiter unten wird auf die einzelnen Komponenten genauer eingegangen und Bezugsquellen werden genannt.
+
===[[SVDRP]] Befehle===
Sollte sich jemand bereit erklären Ansteuerplatinen für andere VDR-Benutzer herzustellen möchte er es bitte kundtun.
+
  
====LED-Module====
+
Das Plugin kann auch über SVDRP gesteuert werden:
Um an die passenden LED-Module zu kommen gibt es zwei Möglichkeiten:
+
{| class="wikitable"
# Selberbauen
+
|-
# Kaufen
+
!Befehl
 +
!Beschreibung
 +
|-
 +
| ON      || schaltet das Atmolight an
 +
|-
 +
| OFF      || schaltet das Atmolight aus
 +
|-
 +
| STATUS  || gibt den Status des Atmolights aus (ein- oder ausgeschaltet)
 +
|-
 +
| LIVE_HSV || schaltet in den Live-Mode
 +
|-
 +
| <color>  || schaltet auf die angegebe Farbe um, möglich sind:
 +
|-
 +
| || BLACK, WHITE, RED, GREEN, BLUE, YELLOW, CYAN, MAGENTA
 +
|-
 +
| <channel> <r_value> <g_value> <b_value>    || Farbwert (als RGB-Wert, jeweils 0-255) auf dem Kanal (ALL, CENTER, LEFT, RIGHT, TOP, BOTTOM) darstellen
 +
|-
 +
| BRIGHT  || Helligkeitswert setzen (50-300)
 +
|}
  
=====Selbstgebaute LED-Module=====
 
Für den Selbstbau existiert ein Platinenlayout. Der LED-Streifen (ca. 200x25mm) wird mit jeweils 12 roten, blauen und grünen [[Bild:superflux.jpg|Superflux-LEDs|thumb|none]] bestückt, durch Hintereinanderschalten lassen sich fast beliebig lange LED-Streifen herstellen: [[Bild:streifen.jpg|"2-fach LED-Streifen"|thumb|none]] Die Superflux-LEDs können preisgünstig über ebay bezogen werden, 150 Stück kosten ca. 35€ plus Versand, leider ist die Qualität sehr stark vom Anbieter anhängig. (TODO: link) Zusätzlich werden natürlich die Platinen benötigt, Kosten ca. 5€ pro Stück bei Herstellung durch einen Platinenhersteller. Passende Vorwiderstände werden auch benötigt, für den Selbstbaustreifen wurden 100 Ohm für Rot, 180 Ohm für Blau und 270 Ohm für Grün verwendet (Tip: bei manchen ebay-Anbietern werden Vorwiderstände gleich mit angeboten). Ein Aufbau auf Lochraster ist zwar möglich, aber bei größerer LED-Stückzahl nicht zu empfehlen.
 
  
Vor die LED-Streifen wird eine Streuscheibe montiert, sodaß eine möglichst homogene Farbmischung entsteht.
+
==Konfiguration==
  
 +
===Einstellungen===
  
=====Gekaufte LED-Module=====
+
Im OSD können folgene Einstellungen vorgenommen werden:
Momentan wurde atmolight mit spezielle RGB-LED-Streifen getestet, die über die über die Firma  [http://www.alphalicht.de Alpha Tec] zu einem Sonderpreis bezogen werden können.
+
{| class="wikitable"
Der Vorteil dieser Module ist, daß optional passende Diffusorröhren erworben werden können. In diese Rohren mit 40mm Durchmesser werden die Module einfach eingeschoben; die Röhren können mit simplen Rohrschellen befestigt werden. So ist eine einfache und saubere Montage möglich und zusätzlich wird für eine optimale Streuung und Farbmischung gesorgt.
+
|-
 +
!Parameter
 +
!Beschreibung
 +
|-
 +
| '''Start-Modus / Startmode'''    || Beim Start von VDR ist das Atmolight:
 +
'''immer an / always on''': eingeschaltet
  
====Ansteuerplatinen====
+
'''immer aus / always off''': ausgeschaltet
=====Funktionsbeschreibung=====
+
Als Mikrocontroller kommt ein ATMega8 der Firma [http://www.atmel.com ATMEL] zum Einsatz. Eine Ansteuerplatine mit Mikrocontroller und Leistungsteil kann jeweils 2 RGB-Kanäle ansteuern. Für eine Einkanal-Variante kann die Platine ebenfalls verwendet werden, eine vollständige Bestückung ist dann nicht erforderlich (halber Leistungsteil). Durch Kaskadierung von 2 Platinen kann eine 4-Kanal-Variante hergestellt werden; der serielle Datenstrom wird dann einfach von der ersten Platine an die zweite Platine durchgereicht.
+
Beispiele für solche Aufbauten:
+
<div align="center">
+
<table>
+
<tr>
+
<td>[[Bild:Schaubild_mono.jpg|Mono-Variante|thumb]]</td>
+
<td>[[Bild:Schaubild_stereo.jpg|Stereo-Variante|thumb]]</td>
+
<td>[[Bild:Schaubild_quattro.jpg|Quattro-Variante|thumb]]</td>
+
</tr>
+
</table>
+
</div>
+
Die Helligkeitsregulierung der Leuchtmittel erfolgt dabei durch [http://de.wikipedia.org/wiki/PWM PWM] (Pulsweitenmodulation). Für einen definierten Strom durch die LEDs wird mit Vorwiderständen und einer geregelten Versorgungsspannung gesorgt. Denkbar aber noch nicht getestet wäre auch zb. Luxeon LEDs mit einer zusätzlichen Konstantstromquelle und PWM zu betreiben.
+
  
=====Nachbau der Ansteuerplatine=====
+
'''timerabhängig / timer dependent''': nur eingeschaltet, wenn der VDR NICHT durch einen Timer gestartet wurde
 +
|-
 +
| '''Widescreen-Modus / Widescreen mode''' || Diese Option ist für Nutzer von 16:9 Fernsehern gedacht. Bei solchen Geräten ist ein Modus einstellbar, bei dem 4:3 Bilder oben und unten beschnitten werden um sie formatfüllend darzustellen. In diesem Fall wird die Berechnung normalerweise ('''= ja / yes''') auf Basis "unsichtbarer" Bildteile durchgeführt. Um diese Streifen von der Berechnung auszunehmen muss '''= nein / no''' gesetzt werden.
 +
|-
 +
| '''Gewichtung / Power of weighting''' || je höher die Zahl ist, desto stärker wird die Berechnung der Farben auf den Bildinhalt in der Nähe des jeweiligen Bildrands konzentriert
 +
|-
 +
| '''Helligkeit / Brightness''' || dient zur Anpassung der LED-Helligkeit an die Bildhelligkeit
 +
|-
 +
| '''Gamma-Korrektur / Gamma correction''' || '''aus / off''': keine Gammakorrektur im Plugin ''Anmerkung'': die Ansteuerplatine führt schon intern eine Korrektur durch, so dass eine Korrektur im Plugin eigentlich nicht nötig ist. Evtl. sind feine Anpassungen an den jeweiligen Fernseher nötig; dann sind Gamma-Werte um "10" herum zu verwenden.
  
Eine Ansteuerplatine mit passender Firmware wurde bereits entwickelt, momentan werden die ersten Prototypen aufgebaut. Sobald ihre Funktion verifiziert ist wird hier eine Nachbauanleitung erscheinen.
+
'''gleichmäßig / uniform''': auf alle Farbkanäle wird die gleiche Korrektur angewandt
<!--
+
Das Aufspielen der Firmware auf den Mikrocontroller erfolgt über einen PC. Dazu wird ein Programmieradapter benötigt, der im [http://mikrocontroller.cco-ev.de/de/isp.php einfachsten Falle] nur aus einer handvoll Bauteilen besteht.
+
-->
+
  
===CCFL-Variante===
+
'''pro Kanal / by channel''': jeder der Farbkanäle kann separat korrigiert werden
 +
|-
 +
| '''Gamma (Red/Green/Blue)''' || Gamma-Wert der Korrektur. Der angezeigte Wert muss durch 10 dividiert werden: 20 steht also für ein Gamma von 2,0
 +
|-
 +
| '''Filter / Filter''' || Für jedes Vollbild wird eine Farbe berechnet. Um "Flackern" zu vermeiden, wird eine Art Mittelwert zwischen den gefundenen Farben gebildet.
 +
'''Prozent / percentage:''' jeder neu berechnete Farbwert trägt einen bestimmten Prozentsatz zur angezeigten Farbei bei. Dieser Filter wirkt oft sehr "nervös", aber auch wunderbar "spontan".
  
====CCFL-Röhren====
+
'''gemeinsam / combined:''' es wird ein laufender Mittelwert aus den berechneten Farben gebildet. Über welche Zeitspanne der Mittelwert gebildet werden soll, wird mit '''Filterlänge / Filter length''' festgelegt; je größer die Zahl, desto langsamer wird übergeblendet. Zusätzlich wird überwacht, ob es einen "Sprung" in den berechneten Farbwerten gibt (z.B. bei einem Szenenwechsel). Ein "Sprung" wird erkannt, wenn die neue Farbe vom Mittelwert den Abstand '''Filterschwelle / Filter threshold''' hat. Je größer diese Zahl ist, desto seltener werden Sprünge erkannt. Wenn ein Sprung erkannt wird, dann wird die angezeigte Farbe sofort auf den neuen Wert korrigiert. Wenn kein Sprung erkannt wurde, kommt wieder der "percentage" Filter zum Einsatz und sorgt für einen leicht sanften Übergang. Je größer der Wert von '''Filterglätte / Filter smoothness''', desto sanfter ist der Übergang.
Bei den CCFLs gibt es aufgrund der temperaturabhängigen Lichtausbeute und des vorgeschalteten Inverters keinen direkten Zusammenhang zwischen Pulsbreite und Helligkeit, so daß eine Helligkeitsregelung erforderlich ist. Diese wird mit Hilfe von Fotodioden realisiert, die direkt an den CCFLs befestigt werden und so die die aktuelle Helligkeit an den Controller zurückliefern. Als CCFLs bieten sich die Modelle  aus der Case-Modding-Szene an. Zur Montage der Fotodioden ist ein Zerlegen der Röhren erforderlich.
+
|-
 +
| '''Modus / Mode''' || Es gibt verschieden Betriebsmodi für das Atmolight, einige sind für die Einrichtung und den Test der Leuchten hilfreich. Normalerweise wird es in einem "live" Modus betrieben:
  
Zum jetzigen Zeitpunkt ist leider kein Prototyp vorhanden, der mit der aktuellen Version von atmolight funktioniert.
+
'''Livebild / live picture (HSV):'''
 +
Es wird eine Farbraumtransformation durchgeführt, Histogramme werden erzeugt, gefenstert und ausgewertet.
 +
'''Farbtonfenster / Hue windowing''' und '''Sättigungsfenster / Sat windowing''' geben an, wie breit die Fensterung der jeweiligen Histogramme erfogt. Höhere Werte "glätten" die Histogramme stärker.
 +
'''Schwarzgrenze / Darkness limit''' wird dazu verwendet, dunkle Pixel von der Berechnung auszuschließen. So werden zB. schwarze Balken im Bild einfach übersprungen und Bildrauschen bei schwarzen Bildteilen wird ignoriert. Je größer der Wert, desto mehr wird ignoriert.
 +
'''Helligkeits-Modus / Brightness mode''' steuert die Helligkeit der Leuchten in Abhängigkeit des Bildes.
 +
Bei '''Durchschnitt / average''' entspricht die Helligkeit der mittleren Bildhelligkeit.
 +
'''Höchstwert / peak''' stellt die Helligkeit nach den hellsten Bildanteilen ein.
  
==Software==
+
'''Standardfarbe / default color:'''
 +
Es kann eine statische Farbe ausgewählt werden: schwarz, weiß, rot, grün, blau, gelb, cyan oder magenta.
 +
 
 +
'''statische Farbe / static colors:''' Es kann eine statische Farbe durch Mischen der Komponenten rot, grün und blau erzeugt werden.
 +
 
 +
'''Weißkalibrierung / white calibration:''' Weißabgleich: Die Werte 255 für rot, grün und blau sollten die Farbe "weiß" ergeben. Sollte das Weiß einen Farbstich aufweisen, läßt sich dies durch Absenken des Wertes der entsprechenden Farbe kompensieren (z.B. bei Rotstich den Rotwert so lange verkleinern, bis ein reines Weiß entsteht). Danach das Zurückstellen auf den Live-Mode nicht vergessen. ;-)
 +
|}
  
===Installation===
 
===Softwareanforderungen===
 
 
===Parameter===
 
===Parameter===
Folgende Kommandozeilenparameter gibt es
+
Folgende Kommandozeilenparameter gibt es:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Zeile 100: Zeile 125:
 
!Beschreibung
 
!Beschreibung
 
|-
 
|-
| -n <IP>/<PORT> || --net=<IP>:<PORT> || Sende Daten übers Netzwerk (Z.b. ''192.168.0.1:1234'')
+
| -i <INPUT_DEVICE> || --input=<INPUT_DEVICE>   || gibt an, welches Input-Device verwendet werden sollen (z.B. ''FFDVB'' für die im VDR als Primary Device verwendete Full-Featured-DVB-Karte mit Devicebezeichnung /dev/videoX oder ''SOFTDEVICE'' für das Softdevice-Plugin)
|-
+
| -s <DEV>    || --serial=<DEV>      || Sende Daten an eine serielle Schnittstelle (Z.b. ''/dev/ttyS1'')
+
|-
+
| -o <MODE>    || --output=<MODE>    || Legt fest, welche Ansteuerplatine angeschlossen ist, mögliche Optionen sind:
+
|-
+
| || || LED für eine der beiden Varianten der LED-Ansteuerplatine
+
 
|-
 
|-
| || || CCFL für die Ausgabe an die ursprüngliche CCFL-Platine (wird im Moment nicht unterstützt)
+
| -o <OUTPUT_DEVICE=PARAMETER> || --serial=<OUTPUT_DEVICE=PARAMETER> || gibt an, an welche Schnittstelle die Ausgabedaten geschickt werden sollen (z.B. ''SERIAL=/dev/ttyS1'' oder ''NETWORK=192.168.0.1:1234'')
 
|}
 
|}
  
===Bedienung===
+
==Sonstiges==
 
===Interne Funktionsweise===
 
===Interne Funktionsweise===
 
====Farberkennung====
 
====Farberkennung====
  
  
*Umrechnung von [http://de.wikipedia.org/wiki/RGB-Farbraum RGB-Farbraum] in [http://de.wikipedia.org/wiki/HSV-Farbraum HSV-Farbraum]
+
*Umrechnung von {{wikipedia|RGB-Farbraum}} in {{wikipedia|HSV-Farbraum}}
  
*'''[http://de.wikipedia.org/wiki/Farbton Hue]'''
+
*'''{{wikipedia|Farbton_Hue}}'''
  
# Erzeuge [http://de.wikipedia.org/wiki/Histogramm Histogramm] des Hue Kanals unter Berücksichtigung von Gewichtungsfaktoren und Gewichtungsfunktionen:
+
# Erzeuge {{wikipedia|Histogramm}} des Hue Kanals unter Berücksichtigung von Gewichtungsfaktoren und Gewichtungsfunktionen:
 
#* Position des Pixels im Bild.  
 
#* Position des Pixels im Bild.  
 
#* ''Value'' des Pixels.
 
#* ''Value'' des Pixels.
# Wende [http://de.wikipedia.org/wiki/Fensterung Fensterung] mit Dreiecks-Fenster auf Hue-Histogramm an.
+
# Wende {{wikipedia|Fensterung}} mit Dreiecks-Fenster auf Hue-Histogramm an.
 
# Finde Maximum im gefensterten Hue-Histogramm.
 
# Finde Maximum im gefensterten Hue-Histogramm.
# Damit ist der [http://de.wikipedia.org/wiki/Farbton Farbton] bestimmt.
+
# Damit ist der {{wikipedia|Farbton}} bestimmt.
  
*'''[http://de.wikipedia.org/wiki/S%C3%A4ttigung_%28Farbe%29 Saturation]'''
+
*'''{{wikipedia2|Sättigung (Farbe)|Saturation}}'''
  
# Erzeuge [http://de.wikipedia.org/wiki/Histogramm Histogramm] verwendeten Saturation in der Umgebung der gefundenen Hue nter Berücksichtigung von Gewichtungsfaktoren und Gewichtungsfunktionen:
+
# Erzeuge {{wikipedia|Histogramm}} verwendeten Saturation in der Umgebung der gefundenen Hue nter Berücksichtigung von Gewichtungsfaktoren und Gewichtungsfunktionen:
 
#* Position des Pixels im Bild.  
 
#* Position des Pixels im Bild.  
 
#* ''Value'' des Pixels.
 
#* ''Value'' des Pixels.
# Wende [http://de.wikipedia.org/wiki/Fensterung Fensterung] mit Dreiecks-Fenster auf Saturation-Histogramm an.
+
# Wende {{wikipedia|Fensterung}} mit Dreiecks-Fenster auf Saturation-Histogramm an.
 
# Finde Maximum im gefensterten Saturation-Histogramm.
 
# Finde Maximum im gefensterten Saturation-Histogramm.
 
# Damit ist die "Sättigung" bestimmt.
 
# Damit ist die "Sättigung" bestimmt.
  
*'''[http://de.wikipedia.org/wiki/Grauwert Value]'''
+
*'''Value ({{wikipedia|Grauwert}})'''
  
 
:* 2 Modi
 
:* 2 Modi
Zeile 143: Zeile 162:
 
#* Bestimme Maximum von Value im Bild, sprich die höchste vorkommende "Helligkeit"
 
#* Bestimme Maximum von Value im Bild, sprich die höchste vorkommende "Helligkeit"
 
# Value Average
 
# Value Average
#* Bestimme [http://de.wikipedia.org/wiki/Mittelwert Mittelwert] von Value im Bild, sprich die durchschnittliche "Helligkeit"
+
#* Bestimme {{wikipedia|Mittelwert}} von Value im Bild, sprich die durchschnittliche "Helligkeit"
  
 
*'''Helligkeitsanpassung'''
 
*'''Helligkeitsanpassung'''
  
*Zurückrechnen von [http://de.wikipedia.org/wiki/HSV-Farbraum HSV-Farbraum] in [http://de.wikipedia.org/wiki/RGB-Farbraum RGB-Farbraum]
+
*Zurückrechnen von {{wikipedia|HSV-Farbraum}} in {{wikipedia|RGB-Farbraum}}
  
*'''[http://de.wikipedia.org/wiki/Gammakorrektur Gammakorrektur]'''   
+
*Filterung
 +
 
 +
*'''{{wikipedia|Gammakorrektur}}'''   
 +
 
 +
*'''{{wikipedia|Weißabgleich}}'''
  
*'''[http://de.wikipedia.org/wiki/Wei%C3%9Fabgleich Weißabgleich]'''
 
  
====Filter====
 
  
 
====Serielles Protokoll====
 
====Serielles Protokoll====
 +
 +
Baudrate: 38400 bps
 +
Parity: None
 +
Datenbits: 8
 +
Stopbits: 1
 +
 +
Nachrichtenformat:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
!Kanalnummer
+
!Byte
!Kanalbeschreibung
+
!Beschreibung
  
 
|-
 
|-
| <div align="center">0</div> || Mitte
+
| <div align="center">0</div> || 0xFF: Startbyte
 
|-
 
|-
| <div align="center">1</div> || Links
+
| <div align="center">1</div> || 0x00: Startkanal (low byte)
 
|-
 
|-
| <div align="center">2</div> || Rechts
+
| <div align="center">2</div> || 0x00: Startkanal (high byte)
 
|-
 
|-
| <div align="center">3</div> || Oben
+
| <div align="center">3</div> || 0x0F: Anzahl Kanäle (15 = 5 * 3 (R, G, B))
 
|-
 
|-
| <div align="center">4</div> || Unten
+
| <div align="center">4 - 6</div> || Summenkanal R, G, B (Center)
 +
|-
 +
| <div align="center">7 - 9</div> || linker Kanal R, G, B (Left)
 +
|-
 +
| <div align="center">10 - 12</div> || rechter Kanal R, G, B (Right)
 +
|-
 +
| <div align="center">13 - 15</div> || oberer Kanal R, G, B (Top)
 +
|-
 +
| <div align="center">16 - 18</div> || unterer Kanal R, G, B (Bottom)
 
|}
 
|}
  
===Sonstiges===
+
Beispiel:
===Probleme===
+
 
<!-- ===Tipps=== -->
+
Folgende Nachricht (in hexadezimaler Darstellung) gibt auf allen Kanälen hellstes Rot aus:
<!-- ===Wunschliste=== -->
+
 
<!-- ===Snapshot=== -->
+
0xFF 0x00 0x00 0x0F 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00
 +
 
 +
Test über eine Konsole:
 +
setserial /dev/ttySX baud_base 115200 divisor 3 spd_cust
 +
stty -F /dev/ttySX 38400
 +
echo -e '\0377\0000\0000\0017\0377\0000\0000\0377\0000\0000\0377\0000\0000\0377\0000\0000\0377\0000\0000' > /dev/ttySX
 +
(X entsprechend an die benutzte serielle Schnittstelle anpassen, z.B. 0 = COM1)
 +
 
 +
<!-- ===Probleme===
 +
Probleme sollten der Lesbarkeit halber gruppiert werden.
 +
* Problem 1
 +
* Problem 2
 +
* Problem 3
 +
-->
 +
<!-- ===Tipps===
 +
Tipps sollten der Lesbarkeit halber gruppiert werden.
 +
* Tipp 1
 +
* Tipp 2
 +
* Tipp 3
 +
-->
 +
<!-- ===Wunschliste===
 +
Wünsche sollten der Lesbarkeit halber gruppiert werden.
 +
* Wunsch 1
 +
* Wunsch 2
 +
* Wunsch 3
 +
-->
 +
<!-- ===Snapshot===
 +
cvs ... login
 +
cvs ... co ...
 +
-->
 +
 
 +
==Versions-Historie==
 +
{| width=100% class="wikitable"
 +
|-
 +
! Version
 +
! Datum
 +
! Beschreibung
 +
! Link
 +
|-
 +
| 0.1.3
 +
| 07.01.2008
 +
|
 +
* plugin updated for VDR 1.5.7+ (removed support for VDR 1.4.x)
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=72812]
 +
|-
 +
| 0.1.2
 +
| 30.12.2007
 +
|
 +
* italian translation added (thanks to Gringo <vdr-italian at tiscali.it>)
 +
* SVDRP-command BRIGHTNESS added
 +
* new firmware for ATMega8 added
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=72428]
 +
|-
 +
| 0.1.1
 +
| 17.12.2006
 +
|
 +
* using primary VDR-device instead of /dev/video in inputffdvb
 +
* SVDRP-command STATUS added
 +
* Controller and LED-Stripe layout for Target 3001! added
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=58285]
 +
|-
 +
| 0.1.0
 +
| 03.12.2006
 +
|
 +
* softdevice-input added
 +
* moved calculation-functions for input-devices into calculations.c/h
 +
* moved menus into menu.c/h
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=57760]
 +
|-
 +
| 0.0.6
 +
| 19.11.2006
 +
|
 +
* setup menu revised
 +
* calculation in inputffdvb revised
 +
* white calibration mode changed
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=57260]
 +
|-
 +
| 0.0.5
 +
| 21.10.2006
 +
|
 +
* renamed inputvideo0 to inputffdvb
 +
* changed almost all calculations from double to int (thanks to Simon Canins)
 +
* internationalization for english and german is now complete
 +
* Atmolight now really closes the input- and output-devices if it is switched off (e.g. TV in vdradmin can be used in switched off mode)
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=56082]
 +
|-
 +
| 0.0.4
 +
| 05.10.2006
 +
|
 +
* added widescreen mode (thanks to Simon Canins)
 +
* command line arguments changed
 +
* changed all exchange interfaces to 'ColorPacketInt'-type
 +
* introduced Open() and Close() in the abstract 'Input'-class
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=55508]
 +
|-
 +
| 0.0.3
 +
| 24.09.2006
 +
|
 +
* CCFL removed
 +
* raw_PWM-mode removed
 +
* added more SVDRP commands
 +
* introduced input, output and filter class (adopt these for more)
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=55088]
 +
|-
 +
| 0.0.2
 +
| 17.09.2006
 +
| (thanks to Daniel König, Simon Canins & Peter Ippy)
 +
* rewrite of output filter
 +
* implementation of 5 channels (middle, left, right, top, bottom)
 +
* added SVDRP commands
 +
* added atmolight start mode (on, off, timer dependent)
 +
* added default-color selection
 +
* removed data transfer over ethernet due to debugging purposes
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=54814]
 +
|-
 +
| 0.0.1
 +
| 11.06.2006
 +
| (thanks to Daniel König)
 +
* Initial revision.
 +
| [http://www.vdr-portal.de/board/thread.php?threadid=51076]
 +
|}
  
 +
==Installation==
 +
Wie für Plugins üblich (siehe [[Plugin Installation]]).
 +
Danach müssen nur noch die Aufrufparameter in der runvdr angepaßt werden (Auswahl der Eingabe- und Ausgabeschnittstelle), siehe [[Atmo-plugin#Parameter|Parameter]].
 
==Links==
 
==Links==
 
# [http://www.edener.de Homepage des Plugins]
 
# [http://www.edener.de Homepage des Plugins]
# [http://www.vdr-portal.de/board/thread.php?threadid=48574 atmolight  für LED Development-Thread]
+
# [http://www.vdr-portal.de/board/thread.php?threadid=48574 Atmolight mit LEDs - Development-Thread]
  
[[Kategorie:Plugins]]
+
[[Kategorie:Veraltete Plugins]]  
 +
[[Kategorie:Atmo-Light]] 
 
{{i18n|atmolight-plugin}}
 
{{i18n|atmolight-plugin}}

Aktuelle Version vom 18. August 2013, 14:03 Uhr

Inhaltsverzeichnis

[Bearbeiten] Hardware

Die Beschreibung der Hardware ist ausgelagert im Artikel Atmo-Light .

[Bearbeiten] Beschreibung

Maintainer: Eike Edener, Daniel König
Autor(en): Eike Edener, Daniel König, Simon Canins, Peter Ippy

Das Atmolight-Plugin dient zum Ansteuern einer farbigen Hintergrundbeleuchtung für Fernsehgeräte. Die angezeigte Farbe hängt dabei vom Bildschirminhalt ab. Als Vorlage diente das Ambilight von Philips. Die Ansteuerung der Beleuchtung erfolgt über einen Mikrocontroller. Dieser wird über eine serielle Schnittstelle (oder über einen USB<->Seriell-Wandler) mit dem VDR verbunden. Als Lichtquellen kommen RGB-Anordnungen aus Leuchtdioden (LEDs) zum Einsatz. Das Plugin ist in der Lage für jede der vier Kanten des Fernsehgerätes (also links/rechts/oben/unten) eine individuell berechnete Farbe auszugeben. Die Beleuchtung wird dann quasi als "Verlängerung" des Bildes über die Grenzen des Fernsehers hinaus genutzt. Zusätzlich wird eine "Summenfarbe" ausgegeben, die Verwendung findet, wenn nur eine RGB-Leuchte zentral hinter dem Fernsehgerät platziert werden soll. Es werden also laufend fünf verschiedene RGB-Farbkanäle ausgegeben.

Die Atmolight-Hardware kann auch unter Windows betrieben werden. Mehr dazu hier: Atmolight unter Windows XPoder AtmoLight Windows

[Bearbeiten] Status

Die aktuelle Version (VDR-1.5.7) ist vdr-atmo-0.1.3.tgz. Diskussion im VDR-Portal.

Eine Nachbauanleitung für die notwendige Hardware (Ansteuerplatine, LED-Module) findet sich weiter unten, ebenso eine Bezugsquelle für fertige LED-Module.

[Bearbeiten] Bilder

'
'
'
'
'
'

[Bearbeiten] Videos

P2k1 und kc_captain haben im VDR-Portal eine Vorstellung Ihres Systems mit weiteren Bildern und Videos gepostet.

http://www.vdr-portal.de/board/thread.php?threadid=57731

http://www.vdr-portal.de/board/thread.php?threadid=58491

[Bearbeiten] Bedienung

[Bearbeiten] SVDRP Befehle

Das Plugin kann auch über SVDRP gesteuert werden:

Befehl Beschreibung
ON schaltet das Atmolight an
OFF schaltet das Atmolight aus
STATUS gibt den Status des Atmolights aus (ein- oder ausgeschaltet)
LIVE_HSV schaltet in den Live-Mode
<color> schaltet auf die angegebe Farbe um, möglich sind:
BLACK, WHITE, RED, GREEN, BLUE, YELLOW, CYAN, MAGENTA
<channel> <r_value> <g_value> <b_value> Farbwert (als RGB-Wert, jeweils 0-255) auf dem Kanal (ALL, CENTER, LEFT, RIGHT, TOP, BOTTOM) darstellen
BRIGHT Helligkeitswert setzen (50-300)


[Bearbeiten] Konfiguration

[Bearbeiten] Einstellungen

Im OSD können folgene Einstellungen vorgenommen werden:

Parameter Beschreibung
Start-Modus / Startmode Beim Start von VDR ist das Atmolight:

immer an / always on: eingeschaltet

immer aus / always off: ausgeschaltet

timerabhängig / timer dependent: nur eingeschaltet, wenn der VDR NICHT durch einen Timer gestartet wurde

Widescreen-Modus / Widescreen mode Diese Option ist für Nutzer von 16:9 Fernsehern gedacht. Bei solchen Geräten ist ein Modus einstellbar, bei dem 4:3 Bilder oben und unten beschnitten werden um sie formatfüllend darzustellen. In diesem Fall wird die Berechnung normalerweise (= ja / yes) auf Basis "unsichtbarer" Bildteile durchgeführt. Um diese Streifen von der Berechnung auszunehmen muss = nein / no gesetzt werden.
Gewichtung / Power of weighting je höher die Zahl ist, desto stärker wird die Berechnung der Farben auf den Bildinhalt in der Nähe des jeweiligen Bildrands konzentriert
Helligkeit / Brightness dient zur Anpassung der LED-Helligkeit an die Bildhelligkeit
Gamma-Korrektur / Gamma correction aus / off: keine Gammakorrektur im Plugin Anmerkung: die Ansteuerplatine führt schon intern eine Korrektur durch, so dass eine Korrektur im Plugin eigentlich nicht nötig ist. Evtl. sind feine Anpassungen an den jeweiligen Fernseher nötig; dann sind Gamma-Werte um "10" herum zu verwenden.

gleichmäßig / uniform: auf alle Farbkanäle wird die gleiche Korrektur angewandt

pro Kanal / by channel: jeder der Farbkanäle kann separat korrigiert werden

Gamma (Red/Green/Blue) Gamma-Wert der Korrektur. Der angezeigte Wert muss durch 10 dividiert werden: 20 steht also für ein Gamma von 2,0
Filter / Filter Für jedes Vollbild wird eine Farbe berechnet. Um "Flackern" zu vermeiden, wird eine Art Mittelwert zwischen den gefundenen Farben gebildet.

Prozent / percentage: jeder neu berechnete Farbwert trägt einen bestimmten Prozentsatz zur angezeigten Farbei bei. Dieser Filter wirkt oft sehr "nervös", aber auch wunderbar "spontan".

gemeinsam / combined: es wird ein laufender Mittelwert aus den berechneten Farben gebildet. Über welche Zeitspanne der Mittelwert gebildet werden soll, wird mit Filterlänge / Filter length festgelegt; je größer die Zahl, desto langsamer wird übergeblendet. Zusätzlich wird überwacht, ob es einen "Sprung" in den berechneten Farbwerten gibt (z.B. bei einem Szenenwechsel). Ein "Sprung" wird erkannt, wenn die neue Farbe vom Mittelwert den Abstand Filterschwelle / Filter threshold hat. Je größer diese Zahl ist, desto seltener werden Sprünge erkannt. Wenn ein Sprung erkannt wird, dann wird die angezeigte Farbe sofort auf den neuen Wert korrigiert. Wenn kein Sprung erkannt wurde, kommt wieder der "percentage" Filter zum Einsatz und sorgt für einen leicht sanften Übergang. Je größer der Wert von Filterglätte / Filter smoothness, desto sanfter ist der Übergang.

Modus / Mode Es gibt verschieden Betriebsmodi für das Atmolight, einige sind für die Einrichtung und den Test der Leuchten hilfreich. Normalerweise wird es in einem "live" Modus betrieben:

Livebild / live picture (HSV): Es wird eine Farbraumtransformation durchgeführt, Histogramme werden erzeugt, gefenstert und ausgewertet. Farbtonfenster / Hue windowing und Sättigungsfenster / Sat windowing geben an, wie breit die Fensterung der jeweiligen Histogramme erfogt. Höhere Werte "glätten" die Histogramme stärker. Schwarzgrenze / Darkness limit wird dazu verwendet, dunkle Pixel von der Berechnung auszuschließen. So werden zB. schwarze Balken im Bild einfach übersprungen und Bildrauschen bei schwarzen Bildteilen wird ignoriert. Je größer der Wert, desto mehr wird ignoriert. Helligkeits-Modus / Brightness mode steuert die Helligkeit der Leuchten in Abhängigkeit des Bildes. Bei Durchschnitt / average entspricht die Helligkeit der mittleren Bildhelligkeit. Höchstwert / peak stellt die Helligkeit nach den hellsten Bildanteilen ein.

Standardfarbe / default color: Es kann eine statische Farbe ausgewählt werden: schwarz, weiß, rot, grün, blau, gelb, cyan oder magenta.

statische Farbe / static colors: Es kann eine statische Farbe durch Mischen der Komponenten rot, grün und blau erzeugt werden.

Weißkalibrierung / white calibration: Weißabgleich: Die Werte 255 für rot, grün und blau sollten die Farbe "weiß" ergeben. Sollte das Weiß einen Farbstich aufweisen, läßt sich dies durch Absenken des Wertes der entsprechenden Farbe kompensieren (z.B. bei Rotstich den Rotwert so lange verkleinern, bis ein reines Weiß entsteht). Danach das Zurückstellen auf den Live-Mode nicht vergessen. ;-)

[Bearbeiten] Parameter

Folgende Kommandozeilenparameter gibt es:

Parameter (kurz) Parameter (lang) Beschreibung
-i <INPUT_DEVICE> --input=<INPUT_DEVICE> gibt an, welches Input-Device verwendet werden sollen (z.B. FFDVB für die im VDR als Primary Device verwendete Full-Featured-DVB-Karte mit Devicebezeichnung /dev/videoX oder SOFTDEVICE für das Softdevice-Plugin)
-o <OUTPUT_DEVICE=PARAMETER> --serial=<OUTPUT_DEVICE=PARAMETER> gibt an, an welche Schnittstelle die Ausgabedaten geschickt werden sollen (z.B. SERIAL=/dev/ttyS1 oder NETWORK=192.168.0.1:1234)

[Bearbeiten] Sonstiges

[Bearbeiten] Interne Funktionsweise

[Bearbeiten] Farberkennung

  1. Erzeuge Histogramm des Hue Kanals unter Berücksichtigung von Gewichtungsfaktoren und Gewichtungsfunktionen:
    • Position des Pixels im Bild.
    • Value des Pixels.
  2. Wende Fensterung mit Dreiecks-Fenster auf Hue-Histogramm an.
  3. Finde Maximum im gefensterten Hue-Histogramm.
  4. Damit ist der Farbton bestimmt.
  1. Erzeuge Histogramm verwendeten Saturation in der Umgebung der gefundenen Hue nter Berücksichtigung von Gewichtungsfaktoren und Gewichtungsfunktionen:
    • Position des Pixels im Bild.
    • Value des Pixels.
  2. Wende Fensterung mit Dreiecks-Fenster auf Saturation-Histogramm an.
  3. Finde Maximum im gefensterten Saturation-Histogramm.
  4. Damit ist die "Sättigung" bestimmt.
  • 2 Modi
  1. Value Peak
    • Bestimme Maximum von Value im Bild, sprich die höchste vorkommende "Helligkeit"
  2. Value Average
    • Bestimme Mittelwert von Value im Bild, sprich die durchschnittliche "Helligkeit"
  • Helligkeitsanpassung
  • Filterung


[Bearbeiten] Serielles Protokoll

Baudrate: 38400 bps Parity: None Datenbits: 8 Stopbits: 1

Nachrichtenformat:

Byte Beschreibung
0
0xFF: Startbyte
1
0x00: Startkanal (low byte)
2
0x00: Startkanal (high byte)
3
0x0F: Anzahl Kanäle (15 = 5 * 3 (R, G, B))
4 - 6
Summenkanal R, G, B (Center)
7 - 9
linker Kanal R, G, B (Left)
10 - 12
rechter Kanal R, G, B (Right)
13 - 15
oberer Kanal R, G, B (Top)
16 - 18
unterer Kanal R, G, B (Bottom)

Beispiel:

Folgende Nachricht (in hexadezimaler Darstellung) gibt auf allen Kanälen hellstes Rot aus:

0xFF 0x00 0x00 0x0F 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00

Test über eine Konsole:

setserial /dev/ttySX baud_base 115200 divisor 3 spd_cust
stty -F /dev/ttySX 38400
echo -e '\0377\0000\0000\0017\0377\0000\0000\0377\0000\0000\0377\0000\0000\0377\0000\0000\0377\0000\0000' > /dev/ttySX
(X entsprechend an die benutzte serielle Schnittstelle anpassen, z.B. 0 = COM1)


[Bearbeiten] Versions-Historie

Version Datum Beschreibung Link
0.1.3 07.01.2008
  • plugin updated for VDR 1.5.7+ (removed support for VDR 1.4.x)
[1]
0.1.2 30.12.2007
  • italian translation added (thanks to Gringo <vdr-italian at tiscali.it>)
  • SVDRP-command BRIGHTNESS added
  • new firmware for ATMega8 added
[2]
0.1.1 17.12.2006
  • using primary VDR-device instead of /dev/video in inputffdvb
  • SVDRP-command STATUS added
  • Controller and LED-Stripe layout for Target 3001! added
[3]
0.1.0 03.12.2006
  • softdevice-input added
  • moved calculation-functions for input-devices into calculations.c/h
  • moved menus into menu.c/h
[4]
0.0.6 19.11.2006
  • setup menu revised
  • calculation in inputffdvb revised
  • white calibration mode changed
[5]
0.0.5 21.10.2006
  • renamed inputvideo0 to inputffdvb
  • changed almost all calculations from double to int (thanks to Simon Canins)
  • internationalization for english and german is now complete
  • Atmolight now really closes the input- and output-devices if it is switched off (e.g. TV in vdradmin can be used in switched off mode)
[6]
0.0.4 05.10.2006
  • added widescreen mode (thanks to Simon Canins)
  • command line arguments changed
  • changed all exchange interfaces to 'ColorPacketInt'-type
  • introduced Open() and Close() in the abstract 'Input'-class
[7]
0.0.3 24.09.2006
  • CCFL removed
  • raw_PWM-mode removed
  • added more SVDRP commands
  • introduced input, output and filter class (adopt these for more)
[8]
0.0.2 17.09.2006 (thanks to Daniel König, Simon Canins & Peter Ippy)
  • rewrite of output filter
  • implementation of 5 channels (middle, left, right, top, bottom)
  • added SVDRP commands
  • added atmolight start mode (on, off, timer dependent)
  • added default-color selection
  • removed data transfer over ethernet due to debugging purposes
[9]
0.0.1 11.06.2006 (thanks to Daniel König)
  • Initial revision.
[10]

[Bearbeiten] Installation

Wie für Plugins üblich (siehe Plugin Installation). Danach müssen nur noch die Aufrufparameter in der runvdr angepaßt werden (Auswahl der Eingabe- und Ausgabeschnittstelle), siehe Parameter.

[Bearbeiten] Links

  1. Homepage des Plugins
  2. Atmolight mit LEDs - Development-Thread
In anderen Sprachen