úloha 003: Barevná transformace obrázku

Ú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


[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-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