úloha 002: Engine pro warping

Úkolem je navrhnout a implementovat co nejlepší slepý warping engine, jehož vstupem je deformační funkce a vstupní rastrový obrázek. Výstupem je přepočítaný obrázek (zdeformovaný podle daného zobrazení).

Základem poslouží projekt 002warping z repository grcis. Je připravena jednoduchá aplikace, ve které uživatel zadává vstupní obrázek z disku, vybírá si deformační funkci a parametr deformace. po stisku tlačítka "Redraw" se spouští metoda Warping.WarpImage() přepočítávající obrázek. Tuto metodu musíte přeprogramovat, příslušný úsek kódu je ve zdrojáku Warping.cs označen závorkami:

  // !!!{{
  // !!!}}

Technicky: vstupní obrázek, výstupní obrázek (oba Bitmap) i deformační funkci dostanete v parametrech metody. Můžete používat přístup po pixelech Bitmap.GetPixel(), Bitmap.SetPixel() a dle vašeho uvážení použijte přímý nebo inverzní postup. Deformační funkce bude mít obě funkce implementovány.

Rozšíření: V combo-boxu je zatím jediná deformační funkce WarpMagniGlass. Můžete si naprogramovat alternativní deformace, jejich kód přidejte též do zdrojového souboru Warping.cs, jejich registraci přidejte do definice funkce FormWarping.InitializeFunctions(). Doporučuji při programování vlastní deformace vycházet z předka DefaultWarp, stejně jako to dělá WarpMagniGlass.

Protože u některých vyjádření deformačních funkcí je obtížné pocítat přímé i inverzní zobrazení analyticky, postačí mi v tom případě jenom jeden směr (ten, který váš warping vyžaduje). Při implementaci obou směrů zobrazení mne na to v mailu upozorněte, dostanete za to body navíc..

TERMÍN: do 6. 11. 2011

BODY: 20 bodů, možná prémie za deformační funkci, rychlost, kvalitu..

PROJEKT: 002warping

ZDROJOVÝ SOUBOR: Warping.cs


[Cvičení NPGR007]  [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-07 10:40:21 +0200 (Tue, 07 Oct 2014) $
Send comments/requests to pepca.at.cgg.mff.cuni.cz