Archive for listopad, 2008

Filtrowanie dwuliniowe

piątek, listopad 28th, 2008


Powiększony kawałek bitmapy, w której używane jest cedzenie najbliższego sąsiada (po lewej), obciąganie biliniowe (po środku) i obciąganie 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 niewiasta obliczaniu wartości między punktami w teksturze. Sposób wykonywania wygładza przez to tekstury w pobliżu powiększeniach obrazu.

Spis treści

//

Opis


Wartość w punkcie P jest obliczana na podstawie biliniowej interpolacji między narożnymi punktami Q.

Dwuwymiarowa tekstura w grafice komputerowej na ogół jest reprezentowana w charakterze dwuwymiarowa tabela teksli - punktów których atrybutem jest np. barwa. Bitmapa tego typu ma określoną rozdzielczość. Obok wyświetlaniu takiej tekstury na ekranie komputera, każdemu pikselowi przydzielany jest nadający się teksel (zwykle na podstawie metryki najbliższego sąsiada - wybierany jest bliźni teksel). W pobliżu powiększeniu takiej tekstury widoczne stają prostokątne obszary reprezentujące odpowiednie teksle. żeby temu odwrócić stosuje się obciąganie biliniowe polegające na obliczeniu zinterpolowanych wartości pośrodku punktami reprezentującymi teksle.

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

Wówczas obliczona zaleta 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 (odbitka graficzna 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

czwartek, listopad 27th, 2008

Filtrowanie trójliniowe to sposób wykonywania poprawy jakości tekstur w trójwymiarowej grafice komputerowej, polegająca na zamazywaniu granic między mipmapami, przez interpolację pośrodku kolejnymi poziomami mipmapy. Jest to tak bardzo w istocie rozciągniecie filtrowania dwuliniowego.

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

Opis


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

W filtrowaniu biliniowym wartości tekstury były obliczane na podstawie interpolacji biliniowej między najbliższymi czterema punktami w teksturze - tekslami. Podziękowanie tej operacji jest dozwolone było zdobyć uśrednione wartości tekstury pośrodku 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ę szkopuł aliasingu - tekstury znajdujące się w targ dużej odległości są rynek szczegółowe, przez co próba wyświetlenia ich w przestrzeni ekranu daje niepożądane efekty. By 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 (atut 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 tryb, iż ich część znajduje się plus minus obserwatora, zaś część w oddali. Przykładem mogą być w tym miejscu teksturowane powierzchnie reprezentujące np. ziemię w symulatorach lotu. W powyższych przypadkach wymaga się iżby tekstura była słusznie wyświetlana zarówno na rzecz jej fragmentów znajdujących się bliżej obserwatora, jakim sposobem i na rzecz tych w wyższym stopniu oddalonych - tak aby połączone były ze sobą cechy filtrowania dwuliniowego z mipmapami (różnymi poziomami szczegółowości). By anulować wyżej wymieniony powikłanie w grafice komputerowej stosuje się cedzenie trójliniowe.

Filtrowanie trójliniowe polega na interpolacji pośrodku najbliższymi tekslami dodatkowo na dwóch poziomach szczegółowości (jednakowo w jaki sposób pod ręką filtrowaniu dwuliniowym), a później interpolacji liniowej pośrodku dwoma uzyskanymi wartościami (z dwóch poziomów szczegółowości), w układy 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 odbyć pośrodku poszczególnymi mipmapami.

W dzisiejszych kartach graficznych 3D cedzenie trójliniowe jest wspomagane sprzętowo i jest w szerokim zakresie stosowane zwłaszcza w grach komputerowych. Wskazane jest odnotować, że powyższa strategia nie jest doskonała i blisko dużych kątach efekty filtrowania wydają się być sztuczne na rzecz ludzkiego oka - mnogość lepszą techniką jest obciąganie 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

wycieczki do Izraela filmiki odżywki ogłoszenia z Polski software anti spamhosting hotele w polsce listy motywacyjne wybielanie fronty meblowe GRY
rolety antywłamaniowe reklama świetlna Jan Twardowski Stanisław Grochowiak Jan Brzechwa