Filtrowanie dwuliniowe
Filtrowanie dwuliniowe, filtrowanie biliniowe (ang. bilinear filtering) – technika znana z grafiki komputerowej mająca na celu poprawę jakości wyświetlania tekstur – polega ona na obliczaniu wartości (interpolacji) pomiędzy dyskretnymi punktami w teksturze zwanymi tekselami. Dzięki tej metodzie wyświetlane tekstury stają się gładsze.
Opis metody
edytujDwuwymiarowa tekstura w grafice komputerowej najczęściej jest reprezentowana jako dwuwymiarowa tablica teksli – punktów, których atrybutem jest np. kolor. Tego typu bitmapa ma określoną rozdzielczość, a wyświetlanie jej na ekranie komputera, polega na tym, że każdemu pikselowi przydzielany jest odpowiedni teksel. Najprostszą metodą takiego mapowania jest zastosowanie metryki najbliższego sąsiada (ang. nearest neighbour), czyli dla danego piksela wybierany jest najbliższy teksel. Niestety przy powiększeniu takiej tekstury widoczne stają się prostokątne obszary reprezentujące odpowiednie teksle. Aby temu zapobiec, stosuje się filtrowanie dwuliniowe, polegające na interpolacji wartości pomiędzy punktami reprezentującymi teksele.
Niech dla danego piksela na ekranie obliczony zostanie punkt w przestrzeni tekstury. Niech odpowiednie punkty reprezentujące teksle będą znajdowały się odpowiednio w punktach oraz:
Wówczas obliczona wartość tekstury w punkcie będzie wynosić:
gdzie zaś
Przykład implementacji
edytujW języku C procedura filtrowania dwuliniowego może zostać zaimplementowana następująco:
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[x][y] * u_opposite + tex[x+1][y] * u_ratio ) * v_opposite +
( tex[x][y+1] * u_opposite + tex[x+1][y+1] * u_ratio ) * v_ratio;
return result;
}
Zobacz też
edytujBibliografia
edytuj- 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.