Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.
Avatar
NutelaCZ
Člen
Avatar
NutelaCZ:

Dobrý den,
jsem začátečník a potřeboval bych trochu poradit s úkolem na vytvoření programu, který si jako vstup vyžádá 3 hodnoty R,G,B a po jejich vyhodnocení vypíše o jakou vlnovou délku viditelného spektra se jedná. Já jsem začal s tím, že si vytvořím 3 pole s předem danými hodnotami(0-255 ne v %) R,G,B (první prvek v každém poli dává danou vlnovou délku => první prvky ve všech 3 polích dávají 380nm, 2. prvky 381nm atd.). Problém spočívá v tom, že nevím jak přiřadit vlnovou délku k těm 3 hodnotám.

Ideální podoba programu je, že se načte obrázek do programu, kurzorem myši se klikne na nějaký pixel, v tom místě se zobrazí RGB hodnoty a ty se následně převedou na vlnovou délku.

Moje otázka zní, zda-li je možné něco takového vytvořit, nebo spíš jak moc složité to bude a jestli byste mi mohli poradit co k tomu budu potřebovat, hlavně co se nahrání obrázku týče. Využití je ve spektografu hvězdárny.

Děkuji za případné odpovědi.

 
Odpovědět 5.11.2013 22:33
Avatar
Odpovídá na NutelaCZ
Luboš Běhounek (Satik):

Musíš znát vzorec na převod, pak už je to jednoduché.

Koukni třeba sem http://www.efg2.com/…/Spectra.htm , je to sice v pascalu, ale myslím, že to z toho pochopíš.

Nahoru Odpovědět  +1 6.11.2013 0:02
:)
Avatar
Panda38
Redaktor
Avatar
Panda38:

Ve skutečnosti to vlastně ani nějak moc převést nejde, protože RGB barva není jedna barva ze spektra, je to směs 3 barev o 3 různých vlnových délkách, které jen na čípcích oka vyvolají podobný vjem, jako by vyvolala jedna barva o určité vlnové délce. Citlivost čípků i jejich spektrální naladění se může u lidí lišit, přiřazení RGB úrovní je proto věcí statistiky, mezi lidmi mohou být rozdíly ve vnímání "tato jednospektrální barva = tato RGB směs". Dost problematická je fialová barva. Oko ji vnímá jen díky tomu, že červená má u vyšších frekvencí druhý (malý) vrchol a při vnímání chybí podráždění zeleného čípku.

Převod (přibližný, statistický) by bylo tedy možné provést převedením RGB vyjádření barvy na HSL, tedy úhel na barevném kruhu + saturace (sycení) + jas, úhel se už dá potom snadno přepočítat na vlnovou délku (znají se vlnové délky hraničních bodů) ... hue=atan2(1.732(G-B),2R-G-B) je úhel od červené po ultrafialovou (červená=0°, zelená=120°, modrá=240°).

Editováno 6.11.2013 9:28
 
Nahoru Odpovědět  +3 6.11.2013 9:24
Avatar
NutelaCZ
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
NutelaCZ:

Tento program je zajímavý, bohužel já umím tvořit +- akotat v konzolove aplikaci, takže co se týče nahrání obrázku nemám tušení jak nato. Jinak vzorec na převod tady nevyužiji, bude to pouze přiřazovat již vypočítané hodnoty od 380nm - 780nm. Moc nevím jak nato, a zdali je moje verze s poli vůbec dobrá.

 
Nahoru Odpovědět 6.11.2013 11:57
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na NutelaCZ
Theodor Johnson:

Poradím ti s tím nahráním:
v aplikaci si přidej Reference
System.Window­s.Forms;
System.Drawing;

a poté si můžeš načíst bitmapu i barvu pixelu, asi takto http://www.itnetwork.cz/dev-lighter/239

Nahoru Odpovědět  +1 6.11.2013 12:29
Přecházím na "Cross-Platform Development"
Avatar
NutelaCZ
Člen
Avatar
Odpovídá na Theodor Johnson
NutelaCZ:

Děkuju moc, kouknu na to a snad to dám nějak dokupy :) , takže musím odstoupit od mého postupu v konzoli a musím přejít na WindowsFormsApp. jestli to správně chápu?

 
Nahoru Odpovědět 6.11.2013 13:17
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na NutelaCZ
Theodor Johnson:

Nemusíš, akorát některé věci v konzoli nejdou, takže je stačí importovat do konzole.

Nahoru Odpovědět 6.11.2013 13:20
Přecházím na "Cross-Platform Development"
Avatar
NutelaCZ
Člen
Avatar
NutelaCZ:

Ještě bych se rád zeptal, jak mohu nahrát obrázek ve formátu jpeg. z plochy do mého programu a v programu s ním dále pracovat? Děkuji.

 
Nahoru Odpovědět 7.11.2013 16:00
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.