Úkolem je navrhnout automatický výpočet pěkné sady barev např. pro webový design. Vstupem je rastrový obrázek, ze kterého by se měly barvy (barva) převzít. Výstupem je množina 3 až 8 barev, odvozených z barev v obrázku. Je zcela na Vás, zda všechny barvy najdete v obrázku nebo zda některé odvodíte např. pomocí nějaké HSV transformace.
Základem 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:
// !!!{{
// !!!}}
Technicky: 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é VS2010 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 malém rozlišení!
Pozn: 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..
Inspirace: různé online stránky pro generování web-palet,
Adobe kuler, apod.
Funkce pro převody mezi RGB a HSV najdete v souboru
common/MathSupport.cs.
TERMÍN: do 28. 10. 2012
BODY: max 10 bodů
PROJEKT: 051colormap
ZDROJOVÝ SOUBOR: Colormap.cs
DATA: můžete použít pár obrázků přímo z repository, z adresáře data
Copyright (C) 2010-2012 J.Pelikán,
last change: $Date: 2014-10-03 15:44:39 +0200 (Fri, 03 Oct 2014) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz