úloha 052: Omezená barevná transformace obrázku

Úkolem je implementovat barevnou transformaci rastrového obrázku využívající prostor HSV. Vstupem je obraz načtený z disku, výstupem obrázek stejné velikosti s přepočítanými barvami. Je nutné vymyslet takovou transformaci, při které některé barvy zůstávají nezměněné (pleť?) nebo se v různé části spektra transformace chová různě.

Základem poslouží projekt 052colortransform 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áte za povinnost zachovávat některé barevné odstíny. Mimo tuto podmínku můžete měnit jasovou složku nebo sytost, přebarvovat ("Hue shift"), apod. Do doprovodného mailu nebo do komentáře napište, jakou transformaci jste udělali, s jakým omezením, 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 parametrem string param pro další řízení vašeho algoritmu (parsování číselných hodnot je v pilotním řešení naznačeno). 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().

Barevné převody: pro převádění z RGB systému do HSV a zpět můžete použít metody MathSupport.Arith.ColorToHSV() a MathSupport.Arith.HSVToColor(), v pilotní implementaci jsou naznačené v komentáři.

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 4. 11. 2012

BODY: 8 až 12 bodů

PROJEKT: 052colortransform

ZDROJOVÝ SOUBOR: Transform.cs, můžete poslat/vystavit i jeden nebo dva vhodné vstupní obrázky v nějakém rozumném rozlišení


[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