Wpisany przez Dariusz Rorat,
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:
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:
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:
R_{szarosc} = \frac{R_{kolorowy} + G_{kolorowy} + B_{kolorowy}}{3}\\
G_{szarosc} = \frac{R_{kolorowy} + G_{kolorowy} + B_{kolorowy}}{3}\\
B_{szarosc} = \frac{R_{kolorowy} + G_{kolorowy} + B_{kolorowy}}{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:
R_{szarosc} = 0.299*R_{kolorowy} + 0.587*G_{kolorowy} + 0.114*B_{kolorowy}\\
G_{szarosc} = 0.299*R_{kolorowy} + 0.587*G_{kolorowy} + 0.114*B_{kolorowy}\\
B_{szarosc} = 0.299*R_{kolorowy} + 0.587*G_{kolorowy} + 0.114*B_{kolorowy}
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
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Microsoft Visual C# 2010 | .cs | .cs | ***** / 0 |
Adrian Wijas | C/C++ | konwersja bmp do skali szarości w czystym C, tylko jedna biblioteka: stdio, najprościej jak się dało | .cpp | .cpp | ***** / 5 |
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 | .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: 17 sierpnia 2012 19:24