Archive for the ‘ArtykuÅ‚y’ Category

Filtrowanie dwuliniowe

sobota, listopad 29th, 2008


Powiększony część bitmapy, w której używane jest obciąganie najbliższego sąsiada (po lewej), cedzenie biliniowe (po środku) i cedzenie bikubiczne (po prawej).

Filtrowanie dwuliniowe (filtrowanie biliniowe) to sposób wykonywania znana z grafiki komputerowej mająca na celu poprawę jakości wyświetlania tekstur. Polega białogłowa obliczaniu wartości między punktami w teksturze. Sprawność wygładza przez to tekstury niedaleko powiększeniach obrazu.

Spis treści

//

Opis


Wartość w punkcie P jest obliczana na podstawie biliniowej interpolacji pośrodku narożnymi punktami Q.

Dwuwymiarowa tekstura w grafice komputerowej zazwyczaj jest reprezentowana w charakterze dwuwymiarowa tabela teksli - punktów których atrybutem jest np. zabarwienie. Bitmapa tego typu ma określoną rozdzielczość. Blisko wyświetlaniu takiej tekstury na ekranie komputera, każdemu pikselowi przydzielany jest zharmonizowany teksel (z reguły na podstawie metryki najbliższego sąsiada - wybierany jest bliski teksel). Pod ręką powiększeniu takiej tekstury widoczne stają prostokątne obszary reprezentujące odpowiednie teksle. Tak aby temu odwrócić stosuje się cedzenie biliniowe polegające na obliczeniu zinterpolowanych wartości między punktami reprezentującymi teksle.

Niech na rzecz danego piksela na ekranie obliczony zostanie paragraf w przestrzeni tekstury. Niech odpowiednie punkty reprezentujące teksle będą znajdowały się poprawnie w punktach , , , oraz:

Wówczas obliczona plus tekstury w punkcie będzie wynosić:

gdzie , zaÅ› .

Pseudokod

Procedura filtrowania dwuliniowego przypuszczalnie być przedstawiona za pomocą poniższego pseudokodu:

double getBilinearFilteredPixelColor( Texture tex, double u, double v )
{
u *= tex.size;
v *= tex.size;
int x = floor(u);
int y = floor(v);
double u_ratio = u - x;
double v_ratio = v - y;
double u_opposite = 1 - u_ratio;
double v_opposite = 1 - v_ratio;
double result = ( tex * u_ratio ) * v_opposite +
( tex * u_ratio ) * v_ratio;
return result;
}

Zobacz też

  • teksturowanie
  • filtrowanie trójliniowe
  • filtrowanie anizotropowe
  • Interpolacja (rycina komputerowa)

Bibliografia

  1. Foley J.D., Van Dam A., Feiner S.K., Hughes J.F., Phillips R.L.: Introduction to Computer Graphics, Addison-Wesley Longman Publishing Co. Inc., 1994.

Filtrowanie trójliniowe

piÄ…tek, listopad 28th, 2008

Filtrowanie trójliniowe to sposób wykonywania poprawy jakości tekstur w trójwymiarowej grafice komputerowej, polegająca na zamazywaniu granic pośrodku mipmapami, na skroś interpolację pośrodku kolejnymi poziomami mipmapy. Jest to do tego stopnia ano rozciągniecie filtrowania dwuliniowego.

Technika powyższa nie stanowi idealnego rozwiązania na rzecz rysowania tekstur wobec dużymi kątami, jest tymczasem często stosowana ze względu na swoją wydajność.

Opis


Różnica pośrodku filtrowaniem biliniowym (po lewej), a trójliniowym (po prawej). Strzałkami oznaczono miejsca widocznych ukończyć pośrodku poziomami szczegółowości mipmap.

W filtrowaniu biliniowym wartości tekstury były obliczane na podstawie interpolacji biliniowej pośrodku najbliższymi czterema punktami w teksturze - tekslami. Podziękowanie tej operacji jest dozwolone było dochrapać się uśrednione wartości tekstury między jej dyskretnymi punktami. Sprawność ta dawała dobre rezultaty na rzecz tekstur wyświetlanych w dużym powiększeniu.

Dla tekstur, które znajdowały się w pewnej odległości od obserwatora, pojawia się trudność aliasingu - tekstury znajdujące się w targ dużej odległości są targ szczegółowe, przez co próba wyświetlenia ich w przestrzeni ekranu daje niepożądane efekty. Tak aby odwrócić powyższemu stosuje się różne horyzontalny szczegółowości tekstury w układy od odległości - tzw. mipmapy. Na podstawie zadanej tekstury tworzy się ciąg tekstur o mniejszych rozdzielczościach z użyciem filtrów dolnoprzepustowych (zaleta każdego teksla jest średnią ważoną z odpowiednich teksli z wyższego poziomu szczegółowości).

W grafice komputerowej teksturowane obiekty często umiejscowione są w ów metoda, iż ich część znajduje się z grubsza obserwatora, zaś część w oddali. Przykładem mogą być tu teksturowane powierzchnie reprezentujące np. ziemię w symulatorach lotu. W powyższych przypadkach wymaga się ażeby tekstura była słusznie wyświetlana zarówno na rzecz jej fragmentów znajdujących się bliżej obserwatora, w jaki sposób i na rzecz tych w wyższym stopniu oddalonych - by połączone były ze sobą cechy filtrowania dwuliniowego z mipmapami (różnymi poziomami szczegółowości). Iżby wypowiedzieć wyżej wymieniony ambaras w grafice komputerowej stosuje się obciąganie trójliniowe.

Filtrowanie trójliniowe polega na interpolacji między najbliższymi tekslami co więcej na dwóch poziomach szczegółowości (jednakowo w jaki sposób pod ręką filtrowaniu dwuliniowym), a odtąd interpolacji liniowej pośrodku dwoma uzyskanymi wartościami (z dwóch poziomów szczegółowości), w relacje od odległości od obserwatora.

Z użyciem powyższych technik, wyświetlanie kolejnych poziomów szczegółowości następuje płynnie, bez widocznych ukończyć między poszczególnymi mipmapami.

W dzisiejszych kartach graficznych 3D obciąganie trójliniowe jest wspomagane sprzętowo i jest w szerokim zakresie stosowane zwłaszcza w grach komputerowych. Pożądane byłoby zanotować, że powyższa sposób nie jest doskonała i blisko dużych kątach efekty filtrowania wydają się być sztuczne na rzecz ludzkiego oka - multum lepszą techniką jest cedzenie anizotropowe.

Zobacz też

  • Filtrowanie dwuliniowe
  • Filtrowanie anizotropowe

Bibliografia

  1. Foley J.D., Van Dam A., Feiner S.K., Hughes J.F., Phillips R.L.: Introduction to Computer Graphics, Addison-Wesley Longman Publishing Co. Inc., 1994.
  2. http://developer.nvidia.com

laptopy katalog firm wyniki totolotka wszystko po 2 zł noclegi w bieszczadach
www.autostrada.powiadaj.pl | d³ugi szalik | 9 piosenki | piosenki 6 | wycieczki objazdowe