Wpisany przez Dariusz Rorat
poniedziałek, 09 sierpnia 2010 08:42
Obraz w odcieniach szarości jest obrazem w którym udział każdej składowej R, G, B jest taki sam. Składowe R, G, B są zatem w stosunku 1:1:1. Wykonanie obrazu w odcieniach szarości sprowadza się do takiego przekształcenia obrazu aby uzyskać dla każdego piksela obrazu odpowiednio do stopnia jasności piksela taki sam udział każdej z tych składowych.
W tym celu najpierw odczytuje się piksel obrazu o określonym kolorze z odpowiednim udziałem każdej ze składowych podstawowych i wyodrębnia składowe R, G, B. Następnie dokonuje się sumowania jasności każdej z barw podstawowych i tą sumę dzieli bez reszty przez 3. Po tej operacji należy dokonać syntezy koloru z tych trzech składowych. Zatem operacja ta może zostać opisana następującym wzorem:
Rszarosc = (Rkolorowy + Gkolorowy + Bkolorowy) / 3
Gszarosc = (Rkolorowy + Gkolorowy + Bkolorowy) / 3
Bszarosc = (Rkolorowy + Gkolorowy + Bkolorowy) / 3
Operacje wykonujemy w pętli dla każdego piksela obrazu.
Zdjęcia poniżej przedstawiają obraz kolorowy dla którego mamy wykonać przekształcenia i obraz monochromatyczny po przekształceniach. Głębia koloru dla obrazu 24 bitowego to 16,7 miliona kolorów. Obraz monochromatyczny będzie miał tylko 256 odcieni szarości.
Innym sposobem na przetworzenie obrazu kolorowego na obraz w odcieniach szarości, jest użycie wzoru wykorzystywanego w modelu YUV. Ma on tą zaletę, że bierze pod uwagę, że ludzkie oko jest bardziej wyczulone na kolor zielony, a najmniej na kolor niebieski. Operacja przetworzenia może w tym wypadku zostać opisana następującym wzorem:
Rszarosc = 0.299*Rkolorowy + 0.587*Gkolorowy + 0.114*Bkolorowy
Gszarosc = 0.299*Rkolorowy + 0.587*Gkolorowy + 0.114*Bkolorowy
Bszarosc = 0.299*Rkolorowy + 0.587*Gkolorowy + 0.114*Bkolorowy
Przykład w JavaScript:
Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "Konwertuj do skali szarości" 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
W tym celu najpierw odczytuje się piksel obrazu o określonym kolorze z odpowiednim udziałem każdej ze składowych podstawowych i wyodrębnia składowe R, G, B. Następnie dokonuje się sumowania jasności każdej z barw podstawowych i tą sumę dzieli bez reszty przez 3. Po tej operacji należy dokonać syntezy koloru z tych trzech składowych. Zatem operacja ta może zostać opisana następującym wzorem:
Rszarosc = (Rkolorowy + Gkolorowy + Bkolorowy) / 3
Gszarosc = (Rkolorowy + Gkolorowy + Bkolorowy) / 3
Bszarosc = (Rkolorowy + Gkolorowy + Bkolorowy) / 3
Operacje wykonujemy w pętli dla każdego piksela obrazu.
Zdjęcia poniżej przedstawiają obraz kolorowy dla którego mamy wykonać przekształcenia i obraz monochromatyczny po przekształceniach. Głębia koloru dla obrazu 24 bitowego to 16,7 miliona kolorów. Obraz monochromatyczny będzie miał tylko 256 odcieni szarości.

Innym sposobem na przetworzenie obrazu kolorowego na obraz w odcieniach szarości, jest użycie wzoru wykorzystywanego w modelu YUV. Ma on tą zaletę, że bierze pod uwagę, że ludzkie oko jest bardziej wyczulone na kolor zielony, a najmniej na kolor niebieski. Operacja przetworzenia może w tym wypadku zostać opisana następującym wzorem:
Rszarosc = 0.299*Rkolorowy + 0.587*Gkolorowy + 0.114*Bkolorowy
Gszarosc = 0.299*Rkolorowy + 0.587*Gkolorowy + 0.114*Bkolorowy
Bszarosc = 0.299*Rkolorowy + 0.587*Gkolorowy + 0.114*Bkolorowy
Przykład w JavaScript:
Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "Konwertuj do skali szarości" 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
| Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
| Adrian Wijas | C/C++ | konwersja bmp do skali szarości w czystym C, tylko jedna biblioteka: stdio, najprościej jak się dało | ![]() | ![]() |
![]() ![]() ![]() ![]() / 0 |
| Dariusz Rorat | Delphi/Pascal | Komponent do obsługi efektów graficznych z przykładowym programem. Efekty: negatyw, solaryzacja, fałszywe kolory, odcienie szarości i sepia | ![]() | ![]() |
![]() ![]() ![]() ![]() / 1 |
| Tomasz Lubiński | Java Script | Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 0 |
Poprawiony: czwartek, 12 stycznia 2012 11:13





