úloha 051: Barevná paleta indukovaná obrázkem

Ú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:

  // !!!{{
  // !!!}}
Pozn: 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. Jen se prosím snažte všechny modifikace soustředit do toho jednoho odevzdávaného souboru.

Screenshot

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


[Cvičení NPGR003]  [Návody k zápočtům v C#]  [Přednášky a semináře]  [Odkazy na demonstrace]

Valid XHTML 1.1 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