Úkolem je navrhnout algoritmus vybírající typickou paletu barev ze vstupního rastrového obrázku. Inspirací je projekt Twitter: CINEMA PALETTES, popsaný též na webu My Modern Met. Vstupem je libovolný rastrový obrázek, např. políčko z Vašeho oblíbeného filmu. Váš algoritmus obrázek barevně analyzuje a navrhne pro něj 3 až 10 charakteristických barev.
Jako základ poslouží projekt 051colormap z repository grcis. Je připravena jednoduchá aplikace, ve které uživatel zadává vstupní obrázek a ihned se automaticky spouští metoda Colormap.Generate() přepočítávající barevnou paletu. Tuto metodu musíte přeprogramovat, příslušný úsek kódu je ve zdrojáku Colormap.cs označen závorkami:
// !!!{{ // !!!}}
Svoje úpravy kódu nemusíte omezovat na oblast vyznačenou těmito závorkami. Můžete samozřejmě přidat nějakou pomocnou třídu, datovou strukturu, apod. Všechny modifikace však musíte soustředit do tohoto jednoho odevzdávaného souboru.
Vstupní obrázek je předán Vaší metodě v parametru
Bitmap input, můžete z něj číst metodou BitMap.GetPixel(x,y)
(detaily viz referenci Bitmap).
Pilotní řešení tento přístup ukazuje, tak se inspirujte. Počet barev zadávaný
uživatelem najdete v parametru numCol (nemusíte ho používat,
můžete udělat i paletu pevné délky).
Výstupní barevná paleta se píše do pole colors,
pole byste si měli alokovat ve správné velikosti, např.
colors = new Color[ 4 ]; pro čtyři barvy..
Jako řešení úlohy posílejte mailem pouze modifikovaný zdrojový soubor Colormap.cs! Nepřijímám celé VS projekty. V případě použití nějakého zajímavého obrázku (se kterým dává Váš program pěkné výsledky), přiložte i ten obrázek. Ale prosím v rozumně malém rozlišení!
Jako vstupní obrázek zadávejte jenom malé soubory, pro analýzu barev stačí cca 600x400px. Urychlíte si tak výpočet v případě, že budete vymýšlet nějaké složitější algoritmy..
Kdybyste náhodou potřebovali funkce pro převody mezi barevnými prostory apod., zkuste se podívat do common/MathSupport.cs.
Odevzdat do: 6. 11. 2016
Základ: 9 bodů
Bonus: za dobrou práci i s obtížnými vstupními obrázky (např. nalezení barvy rtěnky na ukázce z filmu Maleficent..)
Visual Studio projekt: 051colormap
Modifikujte a odevzdejte pouze soubor: Colormap.cs
Do komentáře na první řádce napište své jméno!
Pro testování můžete použít pár obrázků přímo z repository, z adresáře data. Dále vyzkoušejte obrázky z My Modern Met: Cinema Palettes nebo Twitter: CINEMA PALETTES.
Stránka obsahující výsledky.
Copyright (C) 2010-2016 J.Pelikán, last change: 2019-05-09 17:52:59 +0200 (Thu, 09 May 2019)