BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Baza wiedzy











Wybór InterpolationMode w GDI+

20-01-2007 10:01 | afranczyk
Artykuł przedstawia problem związany z wyborem metody interpolacji obrazu w bibliotece GDI+. Przybliża idee alorytmu interpolacji oraz opisuje po krótce każdą dostępną metode. Zapraszam.

Wybór InterpolationMode w GDI+ 

 


Spis treści

1. Wstęp.
3. Opis wybranych algorytmów interpolacji.
2. Co oferuje GDI+.
                A. Przykład zastosowania.
                B. Specyfikacja dostępnych metod interpolacji.
                C. Porównanie metod interpolacji.
3. Wnioski.

 


Wstęp

Interpolacja pikseli obrazu ma miejsce przy zmianie rozmiaru oraz jakichkolwiek zniekształceniach (np.obrót).
Jest to próba szacowania koloru nowopowstałych pikseli w obrazie zmienionym na podstawie obrazu pierwotnego, tak aby optycznie wyglądało to jak najkorzystniej.

            

tut_interpolation_2D

Powiększenie 200%

tut_interpolation_2D

Interpolacja

tut_interpolation_2D

Obraz wejściowy

        >

W wyniku powiększenia powstają niepokolorowane piksele

       >

Obraz interpolowany metodą Bicubic

 
Rys. 1. Idea algorytmu interpolacji.

 

 

Opis wybranych algorytmów interpolacji

Istnieje wiele algorytmów interpolowania w grafice komputerowej. Do najbardziej popularnych należą:
Nearest Neighbor (wierne kopiowanie najbliższego piksela) – metoda najgorsza optycznie, ale najszybsza;
- Bilinear (piksele są powielane lub redukowane z uwzględnieniem koloru czterech sąsiednich pikseli, stykających się z danym pikselem bokami) – wyniki są optycznie lepsze, przez co ich uzyskanie trochę dłuższe;
- Bicubic (metoda polega na uwzględnieniu kolorów wszystkich ośmiu pikseli stykających się bokami lub rogami z danym pikselem) – bardzo przyzwoity efekt końcowy, bardziej złożone obliczeniowo;
- Lanczos (uwzględnia sąsiadujące punkty w kwadratach 4x4, 6x6 lub 8x8) – w przypadku 4x4 algorytm jest zbliżony wynikami do interpolacji Bicubic, w pozostałych daje lepsze wyniki, ale czas wykonania obliczeń jest znacząco dłuższy. (Brak implementacji w GDI+); 

Nowe:
- Spline (szacuje fragmenty obrazu wielokątami i opisuje je matematycznie);
- Interpolacja fraktalna (szacuje fragmenty obrazu fraktalami);

 


Co oferuje GDI+

Przykład zastosowania

[Kod C#]

System.Drawing.Image img = System.Drawing.Image.FromFile("C:\a.bmp");
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(200, 200);
System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bmp);
graph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graph.DrawImage(img, 0, 0, 200, 200);
graph.Dispose();
bmp.Save("C:\b.bmp");

Obraz a.bmp ma wymiary 100x100pikseli. Prezentowany fragment kodu tworzy obiekt graph typu Graphics na obiekcie bmp typu Bitmap, dzięki czemu możliwe jest rysowanie do bmp. Następnie definiuje metodę interpolacji dla graph – HighQualityBicubic (zamiast domyślnej - Bilinear). Powiększa obraz a.bmp dwukrotnie poprzez narysowanie go metodą DrawImage() dla graph w kwadracie 200x200pikseli. Usuwa obiekt graph metoda Dispose() oraz zapisuje obraz powiększony do pliku o nazwie b.bmp. 

Specyfikacja

Oto lista możliwych metod interpolacji w GDI+

InterpolationMode

Opis

Bicubic

Interpolacja Bicubic bez wstępnego filtrowania. (Niekorzystna przy zmniejszaniu obrazu o więcej niż 25% - ze względu na brak filtrowania)

Bilinear

Interpolacja Bilinear bez wstępnego filtrowania. (Niekorzystna przy zmniejszaniu obrazu o więcej niż 50% - ze względu na brak filtrowania)

Default

Domyślna. (Bilinear)

High

Interpolacja wysokiej jakości. (HighQualityBicubic)

HighQualityBicubic

Interpolacja Bicubic z wstępnym filtrowaniem. (Najlepsze rezultaty) 

HighQualityBilinear

Interpolacja Bilinear z wstępnym filtrowaniem.  

Invalid

Odpowiednik obiektu QualityMode.Invalid 

Low

Interpolacja niskiej jakości. (Bilinear)

NearestNeighbor

Interpolacja Nearest Neighbor 

Tabela.1. Specyfikacja metod interpolacji dostępnych w GDI+.

Porównanie
 
Program napisany na potrzeby tego artykułu ilustruje różnice powstałe w skutek powiększania obrazu z poszczególnymi metodami interpolacji. Najlepiej wyniki analizować bezpośrednio w programie ponieważ zrzuty ekranu pokazane poniżej są JPEG’ami przez co niektóre różnice nie są widoczne. 

g

Rys. 2. Porównanie metod interpolacji w konteksie płynnych przejść tonalnych.

t
Rys. 3. Porównanie metod interpolacji w kontekscie wyświetlania tekstu.

s
Rys. 4. Porównanie metod interpolacji w kontekście wyświetlania kształtów.

Wnioski

  • wybór metody interpolacji jest niezwykle istotny;
  • wszędzie tam, gdzie liczy się jakość otrzymywanych rezultatów, a nie czas ich uzyskania (np.druk, zapis) powinno się wybierać jak najdokładniejsze algorytmy (w GDI+: HighQualityBicubic);
  • zaletą metod mniej precyzyjnych (w GDI+: NearestNeighbor) jest krótki czas uzyskiwania wyników, co przy dużych obrazach może być niezwykle znaczące;
  • tak naprawdę do użytku domowego, przy np.zdjęciach z aparatu cyfrowego, gdzie liczba pikseli w pliku wynosi 10 milionów (zdjęcie o wymiarach 3872 pikseli x 2592 pikseli) efekt wyboru metody interpolacji nie będzie widoczny gołym okiem;
  • w profesjonalnych zastosowaniach; Na przykład identyfikacja osób (twarz, siatkówka, linie papilarne), czy jakiekolwiek zdjęcia medyczne nasuwa się problem utraty informacji. Może zaistnieć sytuacja, że na skutek zmniejszenia rozmiaru obrazu utracimy istotną informacje (np. znak szczególny na zdjęciu do dokumentu tożsamości);
     

Załączniki:

Podobne artykuły

Komentarze 0

pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.