Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj,
pořád nerozumím procesu generování obrázku a jeho obarovavání nebo převod do čb.
Vím, že obrázek by se měl reprezentovat maticí. Ale moc si nedokážu představit, jak to udělat.
Když generuji obrázek, tak rovnou musím vymyslet nějakou matici, ale pak si nejsem jistá jaké maximální a
minimální prvky můžou v matici být. A obarovování a naopak jde úplně mimo mě.
Offline
Dobrý deň ↑ Pomeranc:,
aký jazyk a akú knižnicu môžeš použiť?
Offline
↑ fmfiain:
Momentálně to programuji ve Fortranu, ale myslím si, že postup by měl být podobný i u ostatních jazyků.
S použitím knihovny se nepočítá.
Offline
Dobrý deň ↑ Pomeranc:,
majme R ako červenú farbu pixela, G ako zelenú farbu pixela a B ako modrú farbu pixela a I ako intenzitu CB pixela.
Potom platí: [mathjax]I = 0,299*R + 0,587*G + 0,144*B[/mathjax]
Offline
↑ fmfiain:
Díky, a obráceně, když mám černobílý obrázek?
Offline
↑ Pomeranc:
Ahoj, z černobílého obrázku nelze jednoznačně zrekonstruovat jeho barevný vzor - což je vidět z toho, že to zobrazení výše, které R,G,B hodnotám přiřazuje hodnotu I, není bijekce.
Jaký je přesně tvůj úkol?
Offline
↑ Pomeranc:
Většinou se obraz reprentuje pomocí matice pixelů (bodů) a každý pixel se skládá ze tří složek - R,G,B (červená, zelená, modrá), rozsah každé složky je bud reálné číslo mezi 0 a 1 nebo celé číslo mezi 0 a 255, to záleží nareprezentaci. Pro odstíny šedé platí, že se hodnoty složek rovnají, tj. R=G=B. A zjednodušeně řečeno, čím má složka nižší hodnotu, tím je tmavší, resp. méně zastoupená ve výsledné barvě pixelu. Tak třeba (R,G,B)=(0,0,0) je černá, (255,255,255) je bílá, (255,0,0) je sytě červená, (180,180,180) je světle šedá, apod.
Zkus si ve Windows program Malování, tam se dá otevřít nastavení barev a můžeš si tam problížet jaké RGB složky mají jednotlivé barvy.
Offline
↑ check_drummer:
Mám černobílý obrázek a mám ho nabarvit. Přesná specifikace není.
Takže teď momentálně mám matici černobílého obrázku a nevím jak pokračovat.
Offline
↑ Pomeranc:
To se dá pojmout různě, když neexistuje jednoznačná rekonstrukce. Třeba se dá několika odstínům šedé přiřadit předem konkrétní barva a pak mezi nimi přecházet inetrpolací.
Offline
Dobrý deň ↑ Pomeranc:,
hovorí ti niečo prahovanie obrazu?
Ak je intenzita CB obrázku menšia ako 255/7, tak vyfarby pixel čiernou farbou, ak je I menšia ako (255/7)*2, tak vyfarby pixel modrou farbou, ak je I menšia ako (255/7)*3, tak vyfarby pixel červenou farbou, ak je I menšia ako (255/7)*4, tak vyfarby pixel fialovú (modro-červenou) farbou, ak je I menšia ako (255/7)*5, tak vyfarby pixel azurovou (modro-zelenou) farbou, ak je i menšia ako (255/7)*6, tak vyfarby pixel žltou (zeleno-červenou) farbou a v ostatných prípadoch vyfarby pixel bielou (zeleno-cerveno-modrou) farbou.
Vtip je v tom, že sa obrázok vyfarby a nie je dôležité aké farby použiješ. Ani malé dieťa nevyfarbuje podľa reality.
Offline
↑ fmfiain:
To je asi speciální případ toho co píšu - jen by asi bylo vhodné mezi těmi barvami použít nějakou interpolaci, jinak to udělá jen barevné "fleky", což by na realistické fotografii asi nebylo hezké. Pro ručně malované obrázky s málo barvami by to mohlo mít dobrý efekt.
Offline
Dobrý deň ↑ check_drummer:,
↑ Pomeranc: písal, že má iba nafarbiť čiernobiely obrázok, bez bližšej špecifikácie. Nikde sa nepíše, že to má vyzerať realisticky.
Offline
↑ fmfiain:
V tom případě bych každý pixel obarvil červeně - (255,0,0).
Offline
Můžeš na to pohlížet taky takto:
Barvu (třeba jednoho pixelu) můžeme reprezentovat jako RGB (tj čísla určující intenzitu 3 zvolených barev - červené, zelené a modré). Ale stejně tak dobře můžeme použít i jiné reprezentace, a taková užitečná je třeba HSV (Huge - odstín barvy, Saturation - sytost, Value - jas).
No a převod z barevného do černo-bílého obrázku je v reprezentaci HSV jednoduchý, prostě složky H a S zahodíme, a necháme jen to V. To slovo "zahodíme" znamená, že je nahradíme nějakou konstatní hodnotou. Zpravidla takovou, aby z toho vyšel šedý obrázek, ale není to obecně nutné.
Ale opačný převod, z mono do color je trochu problém. Protože jsme něco zahodili, a to už nemáme jak získat zpátky. Můžeme namísto šedé obrázek udělat v nějakém jiném odstínu (tj změníme hodnoty H a S), ale to není úplně to co potřebujeme. Protože původní H a S nebyly konstantní.
Na obarvení monochromatického obrázku není žádný jednoduchý postup. Musíme prostě poznat, co na tom obrázku je, a dát tomu barvy, jaké od toho očekáváme - slunce aby bylo žluté, nebe modré, kytky zelené, silnice černé...
Nějakým způsobem tohle dokáží až metody umělé inteligence, které po natrénování na mnoha reálných snímcích se v tom novém pokouší nalézt známé vzory a dávat jim odpovídající barvu. Ale né vždycky je z toho to, co bychom si přáli.
Ale žádný jednoduchý postup na tohle neexistuje.
Offline
↑ check_drummer:, ↑ fmfiain:
to je určitě zajímavý nápad.
Místo jedné matice mám tři matice. Nicméně pak nevím, jak z těch matic udělat obrázek do souboru.
Mým úkolem je to navíc vypsat do binárního souboru, ale v binárních souborech se vůbec nevyznám, pracovala jsem zatím jen s textovými soubory.
Offline
↑ Pomeranc:
A proč 2bitový soubor? Nemáš náhodou ten obrázek převést do tvaru, kdy bod je buď černý nebo bílý?
Uložit se to pak dá různými způsoby, ty máš použít nějaký konkrétní grafický formát?
Offline
↑ check_drummer:
V podstatě netuším proč tam je ten dvoubitový soubor (zadání je prostě zadání).
Nicméně to co mám nejspíš dělat je vygenerovat čb obrázek, obarvit ho a uložit do binárního souboru.
Offline
↑ Pomeranc:
Zeptal bych se zadavatele na detailnější zadání - jestli záleží na tom jakými barvami bude obarven, apod. Třeba se binární soubor myslí, že tam budou jen barvy bílá a černá. A to uložení do souboru je taky nejasné - má to být nějaký tvůj vlastní formát? Máš umět to z toho souboru i načíst a zobrazit?
Offline
Dobrý deň ↑ Pomeranc:,
nechcem vyzvedať, ale ako si to nakoniec vyriešila? Ja sa o túto tému osobne zaujímam.
Ďakujem za odpoveď.
Offline
Stránky: 1