Úkolem je implementovat nějakou zajímavou barevnou transformaci rastrového obrázku. Vstupem je obraz načtený z disku, výstupem obrázek stejné velikosti s přepočítanými barvami, úrovněmi jasu, apod.
Základem poslouží projekt 003colortransform z repository grcis. Je připravena jednoduchá aplikace, ve které uživatel zadává vstupní obrázek a po stisku tlačítka "Recompute" se spouští metoda Transform.TransformImage() přepočítávající obrázek do výstupu. Tuto metodu musíte přeprogramovat, příslušný úsek kódu je ve zdrojáku Transform.cs označen závorkami:
// !!!{{ // !!!}}
Náměty: můžete uvažovat o barevné transformaci za pomoci barevného prostoru HSV (HSB), měnit jasovou složku, vyrovnávat histogram (bude na přednášce později), apod. Do doprovodného mailu nebo do komentáře napište, jakou transformaci jste udělali a co vás k tomu inspirovalo.
Technicky: vstupní i výstupní obrázky jsou předávány jako parametry (typ Bitmap) spolu s jednoduchým číselným parametrem pro případné další řízení vašeho algoritmu. Z obrázku se čte po jednotlivých pixelech metodou Bitmap.GetPixel(), nová barva (Color) se zapisuje do výsledného obrázku metodou Bitmap.SetPixel().
Efektivnější práce s jednotlivými pixely: pokročilejší programátoři mohou místo málo efektivního přístupu po pixelech použít metody Bitmap.LockBits() a Bitmap.UnlockBits() a jednotlivé pixely si sami adresovat pomocí ukazatelů (v "unsafe" bloku kódu!).
Pozor: výsledný obrázek musíte v metodě Transform.TransformImage() sami vytvořit - viz vzorový kód. Rozměry okopírujte ze vstupního obrázku.
TERMÍN: do 6. 11. 2011
BODY: 8 až 13 bodů
PROJEKT: 003colortransform
ZDROJOVÝ SOUBOR: Transform.cs
Copyright (C) 2010-2011 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