Monitorování charakteristik obrazu z GK

Zopper

  • *****
  • 813
    • Zobrazit profil
Monitorování charakteristik obrazu z GK
« kdy: 18. 01. 2013, 23:30:24 »
Nazdar.
Určitě jste už viděli nějakou televizi s barevnými LED na zadní straně, které osvětlovaly okolí TV podle barvy a jasu scény, která se zrovna přehrává. Přemýšlím, jak by se stejného výsledku dalo dosáhnout u počítače.  Momentálně jde spíše o teoretický problém, takže HW část nechávám stranou (nějaké LED, řídící jednotka ovládáná přes USB/po ethernetu...) a zajímá mě, jak bych mohl zachytávat požadované parametry obrazu (jas a průměrná/nejvýraznější barva), pokud možno nezávisle na ovladačích grafické karty.

V případě, že by šlo jen o desktop, tak by to šlo vyřešit stejně (tj. použít/upravit si knihovnu) jako v různých programech pro záznam obrazovky či vzdálenou plochu - třeba jednu za sekundu udělat snímek a analyzovat ho, ale mám pocit, že tyhle programy mají obvykle problém, když přijde na přehrávání filmů či na hry - což jsou právě ty dvě situace, kdy bych chtěl osvětlení řídit.

Tuší někdo, jestli to je v linuxu možné a pokud ano, jak složitě? Ve windows jsem si jistý, že by to nějak jít mělo, nicméně složitost taky nedovedu odhadnout. (V současné době bude fajn mít podporu pro oba systémy :) )


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Monitorování charakteristik obrazu z GK
« Odpověď #1 kdy: 19. 01. 2013, 00:53:15 »
Tak kdyby to byl desktop, tak by asi bylo chytrejsi a jednodussi to resit analogove podle toho, co leze na piny pro jednotlive barvy.

Re:Monitorování charakteristik obrazu z GK
« Odpověď #2 kdy: 19. 01. 2013, 11:41:04 »
tyhle programy mají obvykle problém, když přijde na přehrávání filmů
VLC umí tohle samo o sobě, ale to asi víš... Dalo by se to řešit tak, že by se přepínaly různé módy: a) desktop - snímkování jednou za čas, b) film - ovládání z vlc c) hry - to asi bude ořech

Zopper

  • *****
  • 813
    • Zobrazit profil
Re:Monitorování charakteristik obrazu z GK
« Odpověď #3 kdy: 20. 01. 2013, 02:37:47 »
O VLC jsem to sice nevěděl, ale nijak mě to nepřekvapuje. :) Hlavní problém ale budou ty hry.

Koukám se na něco o DVI, ale s ohledem na čas se mi už trochu pomaleji přemýšlí a nechci plácat blbosti :D - posílají se data trvale i po analogové větvi, nebo ta tam je jen pro případ, že by monitor nezvládl digitální?

PanKapitánRUM

Re:Monitorování charakteristik obrazu z GK
« Odpověď #4 kdy: 20. 01. 2013, 03:03:26 »
Jedna implementace této technologie funguje na úrovni driveru.
Mějme černobílou obrazovku s hodnotou svítivosti 0-9 o šířce 10 pixelů a třech řádcích.
0123456789
0123456789
0123456789
Na obrazovce tedy vidíme přechod od černé po plně svítivou barvu.
Lampy jsou na okrajích, nejsou nahoře a dole.

Levá lampa:
Vyhodnocení probíhá na krajních 3 pixelech, kde jsou hodnoty od středu 2,1,0 tedy snižující se hodnota, pak lampa nesvítí.

Pravá lampa:
Vyhodnocení probíhá na krajních 3 pixelech, kde jsou hodnoty od středu 7,8,9 tedy zvyšující se se hodnota, pak lampa svítí plně.

Pokud se hodnoty snižují, lampa svítí nižší intenzitou než krajní body.
Pokud se hodnoty zvyšují, lampa svítí vyšší intenzitou než krajní body.
Pokud průběh není jasný, lampa svítí jejich průměrnou intenzitou.

Správné řešení je to tedy počítat na základě údajů z grafické karty, resp. měl by to dělat přímo ovladač.
DVD přehrávač je výjimečný v tom, že má informace o dění na obrazovce a ty body si může spočítat sám.

Problém snímání bodů z obrazovky externím programem je to, že to je obvykle poměrně líná blokující operace.

 


PanKapitánRUM

Re:Monitorování charakteristik obrazu z GK
« Odpověď #5 kdy: 20. 01. 2013, 03:14:35 »
O VLC jsem to sice nevěděl, ale nijak mě to nepřekvapuje. :) Hlavní problém ale budou ty hry.

Koukám se na něco o DVI, ale s ohledem na čas se mi už trochu pomaleji přemýšlí a nechci plácat blbosti :D - posílají se data trvale i po analogové větvi, nebo ta tam je jen pro případ, že by monitor nezvládl digitální?

Na sosání skrz DVI se vyprdni, bohužel nastupuje HDMI, já třeba DVI nemám ani na NB ani na pecku ani na Monitoru :-(
Jinak DVI má několik verzí, jsou čistě DVI-D digitální kabely atd, atd.

Jestli to chceš jen pro sebe, postav před monitor kameru a řiď lampy pomocí vstupů z webové kamery.

Re:Monitorování charakteristik obrazu z GK
« Odpověď #6 kdy: 20. 01. 2013, 08:16:59 »
O VLC jsem to sice nevěděl, ale nijak mě to nepřekvapuje. :) Hlavní problém ale budou ty hry.
Do VLC je plugin Atmolight. Pak to vypadá takhle: http://www.youtube.com/watch?v=EsE4Z82SaV8
A tady je to udělaný pomocí snímkování obrazovky: http://arduino.cc/forum/index.php/topic,51873.0.html

Mě osobně by u toho snímkování asi dost vadilo spoždění, jsem na to dost citlivej.

Zopper

  • *****
  • 813
    • Zobrazit profil
Re:Monitorování charakteristik obrazu z GK
« Odpověď #7 kdy: 20. 01. 2013, 14:10:06 »
No, řešení Kapitána s webkamerou je asi nakonec nejrozumnější. Ukrýt do stolu webkameru technicky nebude problém a zpracování bude zřejmě nejjednodušší, nejméně ovlivní FPS a navíc to bude i nejsnáze rozchoditelné napříč systémy.

Jestli se k výrobě rozhoupu, tak se podělím o praktické poznatky. :)

Zopper

  • *****
  • 813
    • Zobrazit profil
Re:Monitorování charakteristik obrazu z GK
« Odpověď #8 kdy: 20. 01. 2013, 14:10:34 »
Každopádně díky za reakce a postřehy.

PanKapitanRUM

Re:Monitorování charakteristik obrazu z GK
« Odpověď #9 kdy: 20. 01. 2013, 17:50:17 »
Jen doplním, že udělat univerzální řešení může být solidní ojeb, univerzální přístup funguje až od Widlí 8 a na W7 pešek.
Pod widlema jsem kameru rozjížděl a mohl jsem se z toho po... :-\
Deset kamer a pokusy.
WIA šla jen na XP, na W7 nebyl obraz z kamer, jen ze scanneru.
WPD/PTP blblo.
Directshow by bylo nejlepší, ale na ten malý projekt mi to přišlo jako s jadernou bombou na otravnýho bezdomáče.
Emgu CV s C# na 64-bit systémech blbla, možná že s C++ by to šlo.
Widlo8 už má MediaCapture a jde to slušně, na XP se můžeš VYS..protože ofiko skončí příští rok.

Jinak právě zkus Emgu CV http://www.emgu.com/wiki/index.php/Main_Page
Je to jak pro Widle tak pro Linucha, takže bys mohl mít univerzální kód, ale říkám rovnou, v kombinaci s C# a 64bit systémem mi to dávalo jen černou obrazovku  >:(

S Emgu CV můžeš získat obraz z kamery díky 7 řádkám kódu!
http://www.emgu.com/wiki/index.php/Camera_Capture_in_7_lines_of_code
(Mělo by to chodit stejně "dobře" pod Widlema i Linuxem.)

lons

Re:Monitorování charakteristik obrazu z GK
« Odpověď #10 kdy: 20. 01. 2013, 18:04:49 »
No tak mozes to riesit bud hardverovo alebo softverovo. Pokial to robis hardverovo mas to drahsie komplikovanejsie ale nezavisle na os/ovladaci.
Softverovo zalezi od ovladaca na linuxe to bude omnoho jednoduchsie, patchnes ovladac, staci samplovat par pixelov z scanout bufferu zpriemerovat a mas jas, bude to rychle nie je vobec problem. Tu farbu potom dostanes na ledku

PanKapitanRUM

Re:Monitorování charakteristik obrazu z GK
« Odpověď #11 kdy: 20. 01. 2013, 18:25:51 »
No to mě zajímá, jak to chceš dělat hardwarově tak, aby si to neměl jen pro sebe ;D
Jo, leda bys byl výrobce toho monitoru/televize, to potom jo, ale jinak jsi myslím úplně mimo realitu s tím, už jen protože z DVI to jen tak nevytáhneš Atmelem za pajdu a to nemluvím o HDMI.
Tys jen něco chtěl říct viď  ;D

Zopper

  • *****
  • 813
    • Zobrazit profil
Re:Monitorování charakteristik obrazu z GK
« Odpověď #12 kdy: 21. 01. 2013, 13:36:04 »
XP řešit nehodlám, 7 už asi taky ne, když používám 8. A protože to je jen pro mě (ačkoliv zdrojáky pak asi hodím na github, nebo někam), tak to nebudu nijak komplikovat... kouknu na Emgu s C++.  :)

PS: Řekl bych, že lons tím HW myslel tu webkameru, ale krk na to nedám.
 
To lons: Nevím, jak bych patchoval closed source drivery - i kdybych na linuxu byl s nouveau spokojený (jako že pro 3d to pořád není), tak na windows nic jiného než closed není. :)

RDa

  • *****
  • 2 789
    • Zobrazit profil
    • E-mail
Re:Monitorování charakteristik obrazu z GK
« Odpověď #13 kdy: 21. 01. 2013, 15:25:08 »
Nebo to reste hardwarove pomoci barevnych senzoru ktere se budou divat do monitoru z jeho okraje a budou prenaset tuto data do ledek kolem. Dle jemnosti pak vyjde vzdalenost od monitoru/mezi senzorama a take cena :) A na toto uz nejaky atmel staci. Jen pozor na kladnou zpetnou vazbu...