Úloha 002: Engine pro warping

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

Screenshot

Základ

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:

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

Technické detaily

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 jsou zatím tři jednoduché deformační funkce WarpMagniGlass, WarpSpiral a WarpInvSpiral. 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á např. 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

Odevzdat do: 9. 11. 2014

Body

Základ: 20 bodů
Bonus: za deformační funkci, rychlost, kvalitu..

Projekt

Visual Studio 2010 projekt: 002warping

Zdrojový soubor

Modifikujte a odevzdejte pouze soubor: Warping.cs
Do komentáře na první řádce napište své jméno!


Copyright (C) 2010-2014 J.Pelikán, last change: 2019-05-09 17:52:59 +0200 (Thu, 09 May 2019)