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