algorytm.org

Histogram



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?

Histogram
Ocena użytkowników:***** / 23
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 08 września 2005 21:15

Histogram obrazu w odcieniach szarości wyznaczany jest jako suma wszystkich pikseli o danej wartości. Przeanalizujmy to na przykładzie. Mamy dany obraz o wymiarze 3x2, o 4 odcieniach szarości (0-3). Czcionką pogrubioną zaznaczono aktualnie rozpatrywaną komórkę obrazu.
Obraz
101
221
Historgam
0000

Pierwsza komórka jest równa jeden, zatem w histogramie, zwiększamy indeks numer 1 (liczymy od 0 tak jak odcienie w obrazie, w końcu każdy odcień musi mieć swój odpowiednik w histogramie)
Obraz
101
221
Historgam
0100

Kolejna wartość w obrazie to 0, zatem zwiększamy indeks 0
Obraz
101
221
Historgam
1100

Kolejna wartość w obrazie to 1
Obraz
101
221
Historgam
1200

Następnie 2
Obraz
101
221
Historgam
1210

I znów 2
Obraz
101
221
Historgam
1220

I na końcu 1
Obraz
101
221
Historgam
1320

Z histogramu możemy zatem od razu odczytać, że piksli o odcieniu szarości równym 0 jest w obrazie 1, o odcieniu równym 1 są 3, o odcieniu równym 2 są 2, natomiast o odcieniu równym 3 w obrazie nie ma żadnego.

W przypadku obrazów, w których pojedynczy piksel zawiera kilka składowych, zazwyczaj analizuje się histogramy dla każdej składowej. I tak dla obrazu kolorowego w trybie RGB będą to 3 histogramy dla składowej R (Red), G (Green) oraz B (Blue).
Poniżej przedstawiono, analizę histogramów, dla obrazu kolorowego i monochromatycznego.

histogram

W histogramie zawarta jest informacja o kontraście i jasności obrazu. Dane zawarte w histogramie umozliwiaja również polepszenie jakości obrazu. Możliwe operacje to m.in rozjaśnianie i przyciemnianie obrazu, zwiększanie i zmniejszanie kontrastu, korekcja gamma, wyrównywanie histogramu oraz rozciąganie histogramu. Przy wszystkich tych operacjach wykorzystujemy tablicę LUT (ang. Look Up Table), do konwersji oryginalnych wartości składowych obrazu na nowe wartości.

Przykład w JavaScript:

Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "Histogram" by zobaczyć wykres dla obrazu.
Ze względu na zabezpieczenia w przeglądarkach, skrypt generuje histogramy wyłącznie dla plików graficznych 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

Plik:


Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC#Microsoft Visual Studio 2010
.cs
.cs
***** / 1
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 5
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 3
Tomasz LubińskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 1
 
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: 28 listopada 2011 20:39
Komentarze
photo
-4 # Mateusz 2010-06-19 19:21
Co muszę zmienić, aby przykład dostępny w C++ zadziałał w Builder C++ 6, gdzie nie ma komponentów chart, lecz chartfx?
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz