Wpisany przez Tomasz Lubiński,
01 sierpnia 2005 00:44
Algorytm ten wykorzystywany jest w tak zwanej aproksymacji półtonowej, czyli wówczas gdy obraz o większej liczbie odcieni szarości (ewentualnie barw) musimy przekształcić w obraz czarno - biały. Metoda ta jest wykorzystywana również do redukcji liczby odcieni szarości lub kolorów. Jest to algorytm działający w oparciu o zasadę rozpraszania błedu (ang. dithering, error diffusion), który powstaje na skutek zmniejszania liczby kolorów. Metoda ta została zaproponowana w 1988 roku przez Burkes'a jako ulepszenie algorytmu Stucki'ego. Modyfikacja polega na usunięciu ostatniego wiersza, do którego przenoszony jest błąd. Uproszczenie to miało przyspieszyć wykonywanie obliczeń dzięki zmniejszeniu liczby komórek, do których przekazywany jest błąd i zastąpieniu dzielenia przez 48 dzieleniem przez 32 - dzielenie przez liczbę która jest potęgą dwójki, wykonywana jest znacznie szybciej (dzielenie przez potęgę dwójki można osiągnąć przez przesuwanie bitów w prawo). Zasada działania metody jest identyczna jak w algorytmie Floyd'a-Steinberg'a lecz o ile w przypadku Floyd'a-Steinberg'a tablica rozpraszania błędów wyglądała następująco:
to dla metody Burkes'a tablica rozpraszania błędu wygląda tak:
* oznacza aktualnie rozważaną próbkę..
Wynik działania algorytmu:
* | 7/16 | |
3/16 | 5/16 | 1/16 |
* | 8/32 | 4/32 | ||
2/32 | 4/32 | 8/32 | 4/32 | 2/32 |
Wynik działania algorytmu:
Obraz oryginalny | Przekształcanie zwykłe - progowe | Algorytm Burkes'a |
![]() | ![]() | ![]() |
Przykład w JavaScript:
Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "Algorytm Burkes'a" by sprawdzić działanie metody.
Ze względu na zabezpieczenia w przeglądarkach, skrypt otwiera wyłącznie pliki graficzne w obrębie naszego serwisu, np:
http://www.algorytm.org/images/stories/po/anaglif_lewy.jpg
http://www.algorytm.org/images/stories/po/orig.gif
http://www.algorytm.org/images/stories/mb/hsv.jpg
|
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Microsoft Visual Studio 2010 | .cs | .cs | ***** / 0 |
Tomasz Lubiński | C/C++ | Borland Builder 6 | .cpp | .cpp | ***** / 1 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 1 |
Tomasz Lubiński | JavaScript | Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+ | .js | .js | ***** / 0 |
Poprawiony: 30 lipca 2012 19:25