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
- 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.