Drukarka, czyli kłamstwa Twoich oczu

23.11.2009 - Krzysztof Dryś
TrudnośćTrudność

Czy wiecie, że oczy Was okłamują? I co gorsza, wielu ludzi często to wykorzystuje! Ale nie bójcie się - zazwyczaj wykorzystują to z pożytkiem dla Was. Na przykład w drukarkach. W tym artykule zobaczymy właśnie jakie triki przydają się w drukowaniu.

Nie bój się słowa macierz! Tutaj oznacza ono zwyczajną dwuwymiarową tablicę.

Dlaczego do drukowania potrzeba stosować stosować jakieś triki? Wyobraźcie sobie, że chcecie wydrukować czarno-biały obrazek na czarno-białej drukarce atramentowej. Obrazek jest zadany jako macierz $ U $ liczb naturalnych. Wartość każdego piksela pamiętamy na 8 bitach. Największa liczba jaką umiemy zapisać na 8 bitach to 255. Oznacza to, że:

$ 0 \leq U[i,k] \leq 255 $

Jeżeli $ U[i,j] = 0 $, to piksel jest czarny. Natomiast jeżeli $ U[i,j] = 255 $, to piksel jest biały. Pośrednie wartości oznaczają różne odcienie szarości.

alternative text Przykładowy czarno-biały (a właściwie czarno-szaro-biały) obrazek na którym będziemy pracować. Naszym celem jest takie przekształcenie tego obrazka, żeby zawierał tylko białe i czarne piksele i jak najbardziej przypominał oryginał.

No dobrze, ale gdzie jest ten problem? - możecie zapytać. Dlaczego wydrukowanie tego obrazka ma być takie trudne? Otóż drukarka, przynajmniej taka atramentowa, umie drukować tylko dwa rodzaje pikseli - białe i czarne. Nie ma mowy o różnych odcieniach szarość. Natomiast nasz obrazek tak na prawdę nie jest czarno-biały, tylko czarno-szaro-biały.

Gdy patrzymy na gotowe zdjęcie, to zazwyczaj nie zdajemy sobie sprawy, że wydrukowanie go wcale nie było takie łatwe! A jednak. Trzeba jakoś przygotować obrazek $ U $ do druku. W tym celu należy stworzyć obrazek $ T $ taki, że:

  • ma tylko białe i czarne piksele (taki format jest potrzebny drukarce),
  • jak najbardziej przypomina obrazek $ U $.
Jak się to robi? W tym artykule omówimy parę podstawowych metod.

Prosta kwantyzacja

Straszny nazwa, prawda? Jak coś co nazywa się kwantyzacja, może być proste? Na szczęście sama metoda jest naprawdę prosta. Słowo kwantyzacja w tym kontekście oznacza stratę informacji - przekształcenie z obrazka zawierającego wiele odcieni szarości na taki, który zawiera tylko dwa. Spróbujemy zrobić to w naprawdę prosty sposób:

1
2
3
4
5
6
7
8
9
U = obrazek [macierz z wartościami od 0 do 255]
T = obrazek przekazany do drukarki [macierz z wartościami 0 i 255] 
p = parametr algorytmu
Dla i = 1 ... n
 Dla j = 1 ... m
  Jeżeli U[i,j] > p
   T[i,j] = 255
  W przeciwnym razie:
   T[i,j] = 0
Wszystkie piksele o wartości większej niż $ p $ są zamieniane na czarne. Wszystkie pozostałe są zamieniane na białe. Oczywiście $ p $ jest parametrem algorytmu - dla różnych wartości $ p $ dostaniemy różne obrazki wyjściowe.

alternative text Wynik zastosowania algorytmu przy $ p=50 $.
alternative text Wynik zastosowania algorytmu przy $ p=125 $.
alternative text Wynik zastosowania algorytmu przy $ p=180 $.

Zauważmy, że im większe $ p $, tym uzyskany obrazek jest ciemniejszy. To dlatego, że więcej pikseli zostało przydzielonych do czarnej grupy.

Niestety - ta metoda daje fatalne rezultaty. Ciężko rozpoznać wejściowy obrazek. Zdecydowanie musimy poszukać lepszego sposobu.

5
Twoja ocena: Brak Ocena: 5 (9 ocen)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com