Zápoctové úkoly z Javy (skolní rok 2004/2005)

PRO ZIMNÍ SEMESTR: ulohy jsou oznaceny poctem bodu (1 az 3 body). Bodovani je jenom orientacni, vyhrazuji si pravo ho zmenit nebo prizpusobit konkretnimu reseni.
Ulohy do JaGrLib se mohou kombinovat s jinymi formami (referat, verejne predvedeni a diskuse nejakeho zajimaveho algoritmu - viz stranky cviceni).

PRO LETNÍ SEMESTR: aktualizace bude doplnena pozdeji!
Vsechny ulohy, ktere si vyberete (a zejmena pripadna spolecna temata pro PGR004 a PGR007), konzultujte se mnou! Technicke a organizacni podrobnosti viz "kucharka".

Vzdycky je potreba dodrzovat konvence systemu JaGrLib, zejmena:

Podrobnejsi zasady najdete v "kucharce".


Návrhy úloh:

Schemata uvnitr slozenych zavorek "{ }" ukazuji navrhovane pouziti interface. Nektere interface jeste nemusi byt naprogramovany (nebo se vyjimecne mohou stat predmetem mensich uprav). Hranate zavorky "[ ]" vyznacuji nepovinnou nebo volitelnou cast.

Temata pro 3D a pokrocilou 2D grafiku jsou ohodnocena kody A az E podle poctu lidi v tymu (A nebo B .. vlk samotar, C nebo D .. dva studenti, E nebo F .. tri a vice studentu).

 
ZÁKLADY POCÍTACOVÉ GRAFIKY (Pocítacová grafika I):
 
1. (2 body): Kresleni usecky nekterym vicekrokovym algoritmem (nebylo detailne na prednasce, je treba najit a prostudovat literaturu)
{ LineRender nebo LineXRender -> BitMask }
 
2. (1 az 2 body): Kresleni usecky s anti-aliasingem, zadani tloustky cary
{ LineRender -> AlphaMask }
 
5. (1 az 2 body): Kresleni kruznice nejakym alternativnim algoritmem (parametricka krivka, ..)
{ CircleRender -> BitMask }
 
6. (1 az 2 body): Kresleni kruznice s anti-aliasingem, zadani tloustky cary
{ CircleRender -> AlphaMask }
 
9. (1 az 2 body): Kresleni kruhoveho oblouku s anti-aliasingem, zadani tloustky cary
{ ArcRender -> AlphaMask }
 
12. (1 az 2 body): Kresleni elipsy s anti-aliasingem, zadani tloustky cary
{ EllipseRender -> AlphaMask }
 
15. (2 body): Kresleni eliptickeho oblouku s anti-aliasingem, zadani tloustky cary
{ EllipticArcRender -> AlphaMask }
 
136. (2 body): Kresleni elipsy v obecne poloze
{ EllipseRender -> BitMask }
 
137. (2 az 3 body): Kresleni elipsy v obecne poloze s anti-aliasingem, zadani tloustky cary
{ EllipseRender -> AlphaMask }
 
16. (2 body): Kresleni kubicke (Bezierovy) krivky: diferencni algoritmus (po pixelech nebo kratkych useckach), vhodna implementace aritmetiky v pevne radove carce, dynamicka presnost..
{ CubicCurveRender -> BitMask }
 
17. (3 body): Kresleni kubicke (Bezierovy) krivky s anti-aliasingem, zadani tloustky cary
{ CubicCurveRender -> AlphaMask }
 
18. (2 body): Kresleni hranice podle kubicke (Bezierovy) krivky. Viz uloha 16.
{ CubicCurveXRender -> BitMask }
 
19. (1 az 2 body): Vyplnovani n-uhelnika v rovine (radkovy rozklad), prepinani dvou metod: parita, stupen obtoceni. Osetreni disjunkce sousednich n-uhelniku, implementace "fixed-point" aritmetikou..
{ PolygonFillRender -> BitMask }
 
20. (2 body): Srafovani vnitrku mnohouhelnika (uhel a frekvence srafu). Obe metody - viz predchozi bod. Presnost (=rovnobeznost) srafovani
{ PolygonHashRender -> BitMask }
 
21. (2 az 3 body): Vyplnovani n-uhelnika v rovine s anti-aliasingem, zadani tloustky cary
{ PolygonFillRender -> AlphaMask }
 
22. (1 az 2 body): Vyplnovani souvisle oblasti v rovine ("flood-fill") - ruzne definice hranic, 4-souvislost i 8-souvislost, ruzne algoritmy (rozdelit do nekolika uloh).
Klasifikacni objekt: { BitMask, Property -> RasterGraphics },
vlastni vyplnovaci algoritmus: { FloodFillRender -> BitMask, BitMask }
 
23. (3 az 6 bodu - pro vic resitelu): Kresleni True-type pisma (kompletni font-manager vcetne cache). Cteni .TTF souboru, osetreni ruznych kodovani, zadavani velikosti a orientace pismen. Prevod z True-type reprezentace do vektoroveho formatu...
{ TextRender -> BitMask nebo AlphaMask nebo VectorGraphics }
 
24. (1 az 2 body): Orezavani usecek algoritmem "Cohen-Sutherland" (kody oblasti). Vysledky v desetinne aritmetice.
{ LineRender, RectangleWindow -> LineRender } nebo
{ VectorGraphics, RectangleWindow -> VectorGraphics }
 
25. (1 az 2 body): Orezavani usecek algoritmem "Cyrus-Back" (parametricke orezavani). Vysledky v desetinne aritmetice.
{ LineRender, PolygonWindow -> LineRender } nebo
{ VectorGraphics, PolygonWindow -> VectorGraphics }
 
26. (1 az 2 body): Orezavani usecek algoritmem "Liang-Barsky" (parametricke orezavani pro obdelnikove okno). Vysledky v desetinne aritmetice.
{ LineRender, RectangleWindow -> LineRender } nebo
{ VectorGraphics, RectangleWindow -> VectorGraphics }
 
27. (1 az 3 body - podle obtiznosti): Orezavani usecek nejakym jinym algoritmem (z literatury). Vysledky v desetinne aritmetice.
{ LineRenderPolygonWindow ] -> LineRender } nebo
{ VectorGraphicsPolygonWindow ] -> VectorGraphics }
 
28. (1 az 2 body): Orezavani polygonu v rovine - "Sutherland-Hodgman" (proudove orezavani). Vysledky v desetinne aritmetice.
{ PolygonRender, RectangleWindow -> PolygonRender } nebo
{ VectorGraphics, RectangleWindow -> VectorGraphics }
 
29. (2 body): Orezavani polygonu v rovine podle konvexniho polygonu - alternativa algoritmu "Sutherland-Hodgman" (proudove orezavani). Vysledky v desetinne aritmetice.
{ PolygonRender, PolygonWindow -> PolygonRender } nebo
{ VectorGraphics, PolygonWindow -> VectorGraphics }
 
30. (2 az 3 body): Orezavani polygonu v rovine podle nekonvexniho polygonu (algoritmy najit v literature). Vysledky v desetinne aritmetice.
{ PolygonRender, PolygonWindow -> PolygonRender } nebo
{ VectorGraphics, PolygonWindow -> VectorGraphics }
 
31. (1 az 3 body - podle obtiznosti): Pultonovani a rozptylovani - ruzne algoritmy (= mnoho uloh!).
{ Pen nebo Brush -> BitMask, RasterGraphics } nebo
{ Trigger -> RasterGraphics, RasterGraphics }
 
32. (1 az 2 body - podle obtiznosti): Konverze mezi barevnymi systemy RGB, CMY[K], HSV, HLS apod. (ne vse bylo na prednasce).
{ ValueTransferFunction } nebo
{ Trigger -> RasterGraphics, RasterGraphics }
 
33. (1 az 3 body): Zobrazovani true-color obrazku s pomoci barevne palety: pevna ("a priori") paleta - 3-3-2, 6x7x6 apod., zobrazovani v jinych barevnych systemech, ..
{ Pen nebo Brush, ColormapStore -> BitMask, RasterGraphics } nebo
{ ColormapStore, Trigger -> RasterGraphics, RasterGraphics }
 
34. (2 az 3 body): Barevny dithering (s nejakou pevnou paletou). Jakakoli vhodna metoda.
{ Pen nebo Brush, ColormapStore -> BitMask, RasterGraphics } nebo
{ ColormapStore, Trigger -> RasterGraphics, RasterGraphics }
 
35. (2 az 3 body): Konstrukce adaptovane barevne palety. Nekolik variant: Heckbertuv algoritmus ("median cut"), octree, shlukova analyza ("clustering"), .. Prvni modul:
{ Property, Trigger -> RasterGraphics, ColormapStore } nebo
{ Property, Trigger, ColormapStore -> RasterGraphics }.
Druhy (mapovaci) modul:
{ [ Property ] Trigger -> ColormapStore, RasterGraphics, RasterGraphics }
 
36. (2 az 3 body): Vypocet animace pomoci palety - vstupem je serie obrazku, vystupem jedna bitmapa animovana pomoci zmeny palety.
{ [ Property ] Trigger -> RasterGraphics*, RasterGraphics, ColormapStore }
 
37. (1 az 2 body): Objekt realizujici pruchod obdelnikovou bitmapou (scanline, serpentine, Morton, interlace-GIF, apod.).
{ Order2D }
 
38. (1 az 2 body): Kodovani a dekodovani rastroveho obrazku pomoci RLE. Obecny pruchod daty (scanline, serpentine, Morton, ..).
{ [ Property ] Trigger -> RasterGraphics, Order2D, BitStream }
nebo
{ [ Property ] Trigger -> RasterGraphics, Order2D, EntropyCodec }
 
39. (2 body): Algoritmus LZW (kompatibilni s internim koderem formatu GIF). Pokud mozno ho zobecnit (neomezena velikost slovniku, prosty vystupni format - bez "paketu", ..).
{ EntropyCodec -> BitStream }
 
40. (2 az 3 body): Jine kompresni algoritmy: [dynamicke] Huffmanovo kodovani, [dynamicke] aritmeticke kodovani, slovnikove metody ruzne od LZW, ..
{ EntropyCodec -> [ EntropyHistogram ] BitStream }
 
41. (2 az 3 body): Kodovani a dekodovani rastroveho obrazku pomoci kvadrantoveho stromu. Velikost: mocniny 2 nebo obecna (2 ruzne ulohy).
{ QuadTree -> RasterGraphics } nebo
{ QuadTree -> BitMask }
 
42. (1 az 2 body): Mnozinove operace provadene nad kvadrantovym stromem. Obecna mnozinova operace zadavana parametrem.
{ [ Trigger ] QuadTree -> QuadTree* }
nebo
{ Trigger -> QuadTree*, QuadTree }
 
43. (1 az 3 body): Ukladani a nahravani rastroveho obrazku v nejakem grafickem formatu. Jen vyprane formaty (domluvte se s cvicicim).
{ DataFileFormat -> RasterGraphics [ BitStream ] }
 
 
3D GRAFIKA (Pocítacová grafika II, III, atd.):
 
45. (1 az 2 body): Viditelnost - plovouci horizont. Horizonty reprezentovany rastrove, carova i vyplnovaci varianta, rastrovy vystup.
{ Property, Trigger -> FunctionR2ToR, RasterGraphics }
nebo
{ Property, Trigger -> Brep, RasterGraphics }
 
46. (2 az 3 body): Viditelnost - plovouci horizont. Horizonty reprezentovany vektorove (lomene cary), vektorovy vystup.
{ Property, Trigger -> FunctionR2ToR, VectorGraphics }
nebo
{ Property, Trigger -> Brep [ VectorGraphics ] }
 
47. (2 az 3 body): Viditelnost - Appeluv algoritmus. Vstup lze predpokladat v topologicke reprezentaci (winged-edge), vektorovy vystup.
{ Property, Trigger -> Brep, VectorGraphics }
 
48. (1 az 2 body): Viditelnost - Z-buffer. Pro kresleni viditelnych casti se vola externi "vyplnovaci rutina" (kvuli stinovani apod.).
{ Property, Trigger -> Brep, FaceRender }
 
49. (2 az 3 body): Viditelnost - maliruv algoritmus. Pro zacatek staci bez prosekavani sten a bez rozsekavani cyklu. Externi "vyplnovaci rutina" (kvuli stinovani apod.).
{ Property, Trigger -> Brep, FaceRender }
 
50. (2 az 3 body): Viditelnost - Watkinsuv algoritmus (radkovy rozklad). Zatim bez prosekavani sten. Externi "off-line vyplnovaci rutina" (kvuli stinovani apod.).
{ Property, Trigger -> Brep, FaceRender }
 
51. (2 az 3 body): Viditelnost - Warnockuv algoritmus ("rozdel a panuj"). Externi "off-line vyplnovaci rutina" (kvuli stinovani apod.).
{ Property, Trigger -> Brep, FaceRender }
 
52. (2 az 3 body): Jakykoli dalsi algoritmus na viditelnost - podle literatury.
{ Property, Trigger -> Brep, FaceRender } nebo
{ Property, Trigger -> Brep, VectorGraphics }
 
53. nekolik uloh B: Vypocet vrzenych stinu - ruzne algoritmy (stinovy Z-buffer, stinova telesa, BSP reprezentace stinu, apod.).
{ Property, Trigger -> Brep } nebo
{ Property, Trigger -> Brep, RasterGraphics }
 
54. A: Prevod izolovane B-rep do topologickeho tvaru (winged-edge). Duraz by mel byt kladen na rychlost prevodu (napr. hasovanim).
{ Property, Trigger -> Brep, EulerOperators, Brep }
 
55. B: Kompetni sada Eulerovskych operaci (vcetne inverznich) nad topologickou B-rep (wiged-edge). Derave steny i derava telesa!
{ Brep, EulerOperators }
 
56. C: Prevod CSG reprezentace na B-rep - implementace mnozinovych operaci nad mnohosteny. Nejlepsi je pracovat s topologickou B-rep (winged-edge). Zamerit se na rychlost vypoctu!
{ Property, Trigger -> CSGNode, BrepEulerOperators ] }
 
57. nekolik uloh B az C: Ruzne typy aproximacnich a interpolacnich krivek a ploch - Bezierovy, B-spline, NURBS. Parametricka reprezentace, nektere zakladni algoritmy - inverzni transformace, adaptivni prevod do B-rep, .. Prevod do B-rep
{ Property, Trigger -> Interpolation2D, BrepEulerOperators ] }, jednotlive krivky
{ Interpolation1D } nebo plochy
{ Interpolation2D }
 
58. nekolik uloh B az C: Lokalni model osvetleni - Strauss, Torrance-Cook apod. Pristup po vzorcich (konkretni smer pohledu) nebo globalni vysledek (aproximace kompletni BRDF v danem bode - napr. pro dalsi vzorkovani v Monte-Carlo metodach).
{ LightModel }
 
59. A: Vyplnovaci rutina - konstantni stinovani. On-line (polygon+maska) i off-line (nekolik volani pro dany polygon) varianta.
{ FaceRender -> Brep, RasterGraphics }
 
60. B: Vyplnovaci rutina - Gouraudovo stinovani. On-line (polygon+maska) i off-line (nekolik volani pro dany polygon) varianta.
{ FaceRender -> Brep, RasterGraphics }
 
61. B: Vyplnovaci rutina - Phongovo stinovani. On-line (polygon+maska) i off-line (nekolik volani pro dany polygon) varianta.
{ FaceRender -> Brep, RasterGraphics }
 
62. nekolik uloh B: Vypocet pruseciku paprsku s ruznymi elementarnimi telesy - krychle, kuzel, paraboloid, toroid, .. Vysledkem je mnozina pruseciku (useku na poloprimce) + 2D povrchove souradnice + normalove vektory apod.
{ Solid }
 
63. B az C: Vypocet pruseciku paprsku s rotacni plochou. Rotacni plocha je zadana (rovinnou nebo prostorovou) krivkou a osou rotace.
{ Solid }
 
64. C: Vypocet pruseciku paprsku s Bezierovou (B-spline) bikubickou plochou. Plocha je zadana matici ridicich bodu.
{ Solid }
 
65. D: Vypocet pruseciku paprsku s NURBS plochou. Plocha je zadana matici ridicich bodu a dvema uzlovymi vektory.
{ Solid }
 
66. C az D: Vypocet pruseciku paprsku s implicitne zadanou plochou. Ruzne moznosti zadani implicitni plochy (pevny format - "blobs" nebo libovolny aritmeticky vyraz), ..
{ Solid }
 
67. A az C: Jednoduche textury modifikujici barvu - pocitane (sachovnice, pruhy, kruhy, apod.) nebo zadane bitmapou (prip. MIP-mapou).
{ Texture }
 
68. B: Bump-map textury - pocitane nebo zadane bitmapou.
{ Texture }
 
69. B az C: Jakekoli slozitejsi textury - modifikace optickych vlastnosti materialu, kombinace s bump-mapou, apod.
{ Texture }
 
70. B az C: Texturovaci funkce - fraktaly, sumove funkce, slozitejsi funkce syntetizovane z sumu, ..
{ Texture }
 
71. nekolik uloh B: Ruzne vzorkovaci algoritmy pro anti-aliasing (2D vzorkovani). Staticke, inkrementalni nebo adaptivni varianty (nemusi obsahovat zjemnovaci orakulum).
{ ImageSynthesizer -> ImageFunction }
 
72. nekolik uloh B az C: Ruzne N-rozmerne vzorkovaci algoritmy. Staticke nebo dynamicke varianty (nemusi obsahovat zjemnovaci orakulum). Neco jako
{ ImageSynthesizer }
 
73. B: Vypocet mekkych stinu v Ray-tracingu. Neco jako
{ ImageSynthesizer }
 
74. B: Simulace opticke hloubky ostrosti v Ray-tracingu. Zrejme dva moduly
{ RayGenerator } a
{ ImageSynthesizer }
 
75. B: Vypocet rozmazani rychlym pohybem sceny v Ray-tracingu. Neco jako
{ ImageSynthesizer }
 
76. B: Vypocet neostreho odrazu/lomu v Ray-tracingu (podle obecne BRDF). Neco jako
{ ImageSynthesizer }
 
77. B: Vypocet spektralniho rozkladu svetla v Ray-tracingu (rozklad svetla podle vlnove delky). Neco jako
{ ImageSynthesizer }
 
78. B az C: Obecne schema pro distribuovany Ray-tracing - libovolna kombinace predchozich metod (vcetne anti-aliasingu). Nezavisle vzorkovani ve vice dimenzich (stratified sampling). Neco jako
{ ImageSynthesizer }
 
79. nekolik uloh B: Ruzne netradicni generatory primarnich paprsku (kamery) pro Ray-tracing - napodobeni objektivu "rybi oko" a jinych nelinearnich projekci, ..
{ RayGenerator }
 
80. nekolik uloh B az D: Jednotlive urychlovaci metody pro Ray-tracing - obalova telesa, hierarchie obalovych teles, prostorove adresare (staticke i adaptivni), smerove urychlovaci metody, ..
{ Intersectable -> RTScene }
 
81. ruzne ulohy C az F: Perzistence pro Ray-tracing - navrh koncepce a implementace. Zadani geometrie sceny, libovolnych dalsich parametru (materialove konstanty, textury, kamera), konfigurace vlastniho vypoctu (anti-aliasing, distribuovany vypocet, vzorkovaci metody). Priprava pro animaci. Ulozeni stavu vypoctu, paralelni distribuovany vypocet (cluster na siti LAN).
 
82. nekolik uloh B az C: Import sceny pro Ray-tracing z ruznych formatu (3DS, Pov-Ray, RenderMan, RayShade, Blender, VRML, apod.). Pripadne uvazovat i o exportu.
 
83. nekolik uloh B az D: Aproximacni a interpolacni objekty (interpolatory) - 1D, 2D i vice-dimenzionalni (napr. interpolacni polynomy, B-spline, wavelety, ..). Interpolace ve sferickych souradnicich.
{ Interpolation1D } nebo
{ Interpolation2D }
 
84. C: Kvaterniony a jejich interpolace - pro reprezentaci orientace telesa ve 3D.
{ Interpolation2D }
 
85. B: Odhad konfiguracniho faktoru mezi dvema ploskami (bez viditelnosti).
{ xxx -> Brep }
 
86. nekolik uloh B az C: Vypocet konfiguracniho faktoru z plosky do zbytku sceny - ruzne algoritmy (polokrychle, Sillion, Monte-Carlo, ..).
{ xxx -> Brep }
 
87. B: Pocatecni rozdeleni B-rep sceny na plosky (konecne prvky) pro radiacni metodu. Jednoducha parametrizace ulohy - rizeni mezniho rozmeru nebo objemu plosek.
{ yyy -> Brep }
 
88. D: Pocatecni rozdeleni B-rep sceny na plosky podle odhadu hranic nespojitosti stinu. Na vstupu musi byt oznaceny plosky, ktere jsou zdrojem svetla (na jejichz hranici je implicitni nespojitost svetla).
{ yyy -> Brep }
 
89. B: Klasicky vypocet radiacni metody (metoda konstantnich elementu) - staticke deleni sceny, nejaka bezna (numericka) metoda reseni soustavy rovnic (sbirani energie).
 
90. C: Adaptivni zjemnovani do klasicke radiacni metody (sbirani energie). Orakulum rozhodujici o deleni plosky, zjemneni site, prepocitani radiosit (musi fungovat uprostred numericke iterace).
 
91. B: Prevod konstantnich radiosit na hodnoty ve vrcholech sceny (pro Gouraudovo stinovani).
 
92. B: Reseni radiacni soustavy metodou strileni a trideni (varianta Southwellovy metody). Staticke deleni sceny.
 
93. C: Adaptivni zjemnovani do strilejici radiacni metody. Orakulum rozhodujici o deleni plosky, zjemneni site, korektni prepocitavani radiosit.
 
94. B: Modul pro prestrelovani (hyper-relaxaci) v radiacni metode. Adaptivni rizeni prestrelovaciho koeficientu, prirozeny odhad podle celkoveho objemu dosud nezpracovane energie ve scene (Purgathofer, Feda).
 
95. B: Dvoustupnova hierarchicka radiacni metoda - staticke rozdeleni sceny na plosky a elementy, libovolna staticka metoda reseni mensi soustavy, prepocitani radiosit do elementu.
 
96. C: Obecna hierarchicka radiacni metoda - staticka varianta. Prvotni rozdeleni sceny podle odhadu konfiguracniho faktoru (F-pravidlo). Vypocet strilenim.
 
97. C az D: Obecna hierarchicka radiacni metoda - adaptivni varianta. Prvotni rozdeleni sceny podle odhadu konfiguracniho faktoru (F-pravidlo). V prubehu vypoctu adaptivni zjemnovani podle BF-pravidla. Prestrelovani.
 
98. C az E: Obecna hierarchicka radiacni metoda - dualni varianta. Prvotni rozdeleni sceny podle odhadu konfiguracniho faktoru (F[I]-pravidlo). V prubehu vypoctu adaptivni zjemnovani podle BFI-pravidla. Paralelni vypocet radiosity B a dulezitosti I - ve scene musi byt definovana kamera.
 
99. C az E: Monte-Carlo radiacni metoda - propagace svetla nahodnymi paprsky (nemusi se pocitat konfiguracni faktory). Adaptivni deleni (na ploskach se musi pamatovat vsechny dopady paprsku), dualni varianta (propagace dulezitosti = potencialu opacnym smerem), ..
 
 
2D GRAFIKA (Pokrocilá 2D pocítacová grafika, atd.):
 
100. B: Kompozice rastrovych obrazku pomoci alfa-kanalu: bezne unarni i binarni operace (pracujici na datech s predem vynasobenym alfa).
{ Property, Trigger -> RasterGraphicsRasterGraphics ] RasterGraphics }
 
101. B: Klicovani pres modre pozadi ("blue-screen") - automaticka extrakce objektu v popredi. Pozadi je zadane zakladni barvou a povolenym rozptylem (klasifikace pixelu pozadi lze oddelit).
{ Property, Trigger -> RasterGraphics, AlphaMask, RasterGraphics }
 
102. C: Klasifikacni rutina pro "blue-screen" klicovani - hleda pixely pozadi, popredi a obrysu. Vysledek vraci protokolem AlphaMask (jen hodnoty 0.0, 0.5 a 1.0).
{ Property, AlphaMask -> RasterGraphics }
 
103. B: Vyplnovaci rutina - mapovani jednoduche bitmapove textury. On-line (polygon + maska) i off-line (nekolik volani pro dany polygon) varianta.
{ FaceRender -> Brep, RasterGraphics }
 
104. C: Vyplnovaci rutina - kombinace stinovani s mapovanim jednoduche bitmapove textury. On-line (polygon + maska) i off-line (nekolik volani pro dany polygon) varianta.
{ FaceRender -> Brep, RasterGraphics }
 
105. C: Vyplnovaci rutina - kombinace stinovani s MIP-mapovanou texturou. On-line (polygon + maska) i off-line (nekolik volani pro dany polygon) varianta.
{ FaceRender -> Brep, RasterGraphics }
 
106. B: Prepocitavani rastroveho obrazku podle zadane deformace (warping). Zpetny algoritmus s filtraci a interpolaci (staci bilinearni a bikubicka).
{ Property, Trigger -> FunctionR2ToR2, RasterGraphics, RasterGraphics }
 
107. C: Prepocitavani rastroveho obrazku podle zadane deformace (warping). Dopredny algoritmus s filtraci a interpolaci (staci bilinearni a bikubicka).
{ Property, Trigger -> FunctionR2ToR2, RasterGraphics, RasterGraphics }
 
108. nekolik uloh B az C: Vicekrokovy warping (rozklad deformacni funkce na radkove a sloupcove kroky) - mechanismus vypoctu
{ Property, Trigger -> FunctionR2ToR2, RasterGraphics, RasterGraphics } a priklady konkretnich deformaci
{ FunctionR2ToR2 }
 
109. B: Warping - deformace trojuhelnikove site (barycentricke souradnice, nespojitost prvni derivace).
{ FunctionR2ToR2 }
 
110. C: Warping - sit spline krivek (B-spline krivky, dvoukrokovy algoritmus).
{ FunctionR2ToR2 }
 
111. C: Warping - spline plochy (deformace zdrojove i cilove site, nutnost inverzni spline-transformace - numericky algoritmus).
{ FunctionR2ToR2 }
 
112. C: Warping - "feature-based" (0D i 1D "features", vazeny prumer s pomoci "funkci vlivu", parametrizace).
{ FunctionR2ToR2 }
 
113. D: Metamorfoza polygonu v rovine - zalozena na fyzikalnim modelu (deformacni prace). Vypocet optimalniho prirazeni vrcholu i vlastni metamorfoza (morphing).
{ Interpolation1D -> Brep }
 
114. D: Geometricky morphing soustavy "features" - vymyslet rozumne hladke reseni bez singularit.
{ Interpolation1D -> Brep }
 
115. B: Implementace vlastniho vypoctu morphingu - dan je parametrizovany warping a dva rastrove obrazky.
{ Property, Trigger -> FunctionR2ToR2, RasterGraphics, RasterGraphics, RasterGraphics }
 
116. mnoho uloh B az D: Implementace datovych struktur: Region-quadtree, MX-quadtree, Point-Region-quadtree, Point-quadtree, pseudo-quadtree, K-D-tree, A-K-D-tree, BSP-tree (ruzne varianty), Range-tree (ruzne varianty), R-tree, .. Konstrukce (operace insert, delete), vyvazovani, lokalizace, pruchod ze stredu nebo "sweep".
{ GeometrySearch -> Brep }
 
117. C: Strip-tree: konstrukce, detekce a vypocet pruseciku dvou krivek.
{ GeometrySearch -> Brep }
 
118. nekolik uloh C: PMx-tree (polygonalni mapy): konstrukce, lokalizace bodu, mnozinove operace apod.
{ GeometrySearch -> Brep }, mnozinove operace nejak jinak
 
119. mnoho uloh B az D: Transformacni funkce pro kompresi obrazu - dekorelace dat, separace podle dulezitosti. Globalni transformace, blokova transformace, [1D], 2D, [3D], dopredna i zpetna transformace. Konkretni pristupy: Fourierova, sinova, cosinova, Hartleyova, Walshova, Hadamardova, Haarova, Karhunen-Loewyho, waveletove, apod. transformace. Rychly vypocet O(N log N), celociselna aritmetika (kde je to mozne).
{ Property, Trigger -> SampleData, SampleData }
 
120. nekolik uloh B: Pruchody 2D rastrovou matici (space-filling curves): Z-order, Morton, Peano-Hilbert, cik-cak, apod. Osetreni libovolne velikosti 2D oblasti. Ekvivalentni s ulohou 37.
{ Order2D }
 
121. nekolik uloh B az C: 1D predikce - linearni konecny prediktor, polynomialni prediktor, staticke a adaptivni varianty.
{ Property, Trigger -> SampleData, SampleData }
 
122. nekolik uloh B az D: 2D predikce - linearni nebo polynomialni prediktory, staticke a adaptivni varianty, 1-bitove prediktory.
{ Property, Trigger -> SampleData, SampleData }
 
123. nekolik uloh B: Skalarni kvantovace - linearni, nelinearni, mrtva zona rizena parametrem, ..
{ Property, Trigger -> SampleData, SampleData }
 
124. nekolik uloh B az C: Obecne vektorove kvantovace - uniformni a adaptivni, konstrukce podle hustoty pravdepodobnosti nebo vzorku dat, .. Principy: shora dolu, shlukova analyza, iteracni algoritmy, neuronove site, apod.
{ Property, Trigger -> SampleData, SampleData }
 
125. nekolik uloh B az C: Vektorove kodery (bitova alokace) - pevne prirazeni, dynamicka alokace (podle amplitudy = energie), ..
{ Property, Trigger -> SampleDataOrder2D ] EntropyCodec }
 
126. nekolik uloh B az C: Kodovani ridkeho souboru dat ([1D], 2D, [3D]) - preskakovani nulovych useku, 1-bitova a vice-bitova data, staticke i adaptivni kodovani, ..
{ Property, Trigger -> SampleDataOrder2D ] EntropyCodec }
 
127. nekolik uloh C az E: Implementace konkretnich kompresnich standardu (nemusi byt nutne 100% bitove kompatibilni, ale urcite musi byt ekvivalentni) - baseline JPEG, losless JPEG, JPEG-2000, .. Modularni konstrukce kodeku: priprava pro experimenty (vymena jednotlivych modulu), provedeni jednoduchych mereni a porovnani. Priblizne (bez vymennych modulu) -
{ Property, Trigger -> SampleData, BitStream }
 
128. nekolik uloh B az C: Kodovani paletoveho obrazku (cartoon, vystup kresliciho programu, jednoducha business grafika) - quad-tree, pruchod daty + nektera slovnikova metoda (viz ulohy 39. - 40.), apod.
{ Property, Trigger -> SampleDataOrder2D ] EntropyCodec }
 
129. C az D: Segmentace obrazku pro vysoce ztratovou kompresi - hledani homogennich oblasti a hranic mezi nimi. Metody: narustani oblasti, soft-fill, apod. Redukce poctu oblasti, ..
{ Property, Trigger -> SampleData, SampleData }
 
130. nekolik uloh B az D: Hledani co nejpodobnejsiho bloku v obrazku - v celem obrazku nebo jen omezene, moznost zmeny meritka nebo jednoduche afinni transformace. Kompletni vyhledavani (kvalita) nebo sub-optimalni reseni (rychlost).
{ zzz -> SampleData, SampleDataSampleData ] }
 
131. nekolik uloh B az D: Fraktalni komprese obrazu - pevne delani, quad-tree, jine segmentace. Ruzne metody kodovani, rizeni kvality vysledku nebo kompresniho pomeru. Superpozice vice zdrojovych bloku.
 
132. C az D: Fraktalni komprese videa - zavislosti uvnitr BOP (block of pictures), automaticke urcovani hranic mezi BOP, moznost intra-bloku a intra-snimku, prenos bloku v meritku (1:1), ..
 
133. B az D: Klasicka komprese videa s predikci pohybu - referencni snimky, dopredna a zpetna predikce pohybu, kodovani rozdilovych bloku (specialni pripad: bloky bez predikce = intra-bloky), ..
 
134. B: Jednoducha rychla predikce mezi sousednimi pulsnimky (fields) prokladaneho video-signalu - moznost pouzit tez predchoziho kompletniho snimku.
{ Property, Trigger -> SampleData, SampleData, EntropyCodec }
 
135. C az D: Kompenzace pohybu ve waveletovem rozkladu snimku (frames) nebo pulsnimku (fields) - Mallatuv rozklad, nejaky jednodussi wavelet, omezene prohledavani, hierarchicke hledani, ..
 


[Cvicení PGR003, PGR004, PGR007]  [Prednáska PGR003]  [Prednáska PGR004]  [Prednáska PGR007]  [Projekt JaGrLib]

Copyright (c) 2000-2004 Josef Pelikán, poslední změna: 18.10.2004 ($Rev: 926 $)