algorytm.org

Skala szarości

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Skala szarości
Ocena użytkowników:***** / 22
SłabyŚwietny 
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:
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.

Skala 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
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Adrian WijasC/C++konwersja bmp do skali szarości w czystym C, tylko jedna biblioteka: stdio, najprościej jak się dało
.cpp
.cpp
***** / 4
Dariusz RoratDelphi/PascalKomponent 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ńskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 0
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 17 sierpnia 2012 19:24
Dodaj komentarz