Ú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í).
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:
// !!!{{ // !!!}}
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.
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..
Odevzdat do: 9. 11. 2014
Základ: 20 bodů
Bonus: za deformační funkci, rychlost, kvalitu..
Visual Studio 2010 projekt: 002warping
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)