Wpisany przez Tomasz Lubiński,
12 października 2005 19:25
Wyrównywanie histogramu (ang. histogram equalization) ma na celu takie dobranie wartosci aby wykres był mozliwie "płaski". W praktyce wyrównywanie histogramu sprowadza się do wykonania przeksztalcenia obrazu przy pomocy odpowiednio przygotowanej tablicy LUT. Operacja wyrównywania histogramu pozwala na uwypuklenie tych szczegółów w obrazie, które z uwagi na niewielki kontrast sa mało widoczne.
Na początku należy obliczyć dystrybuantę rozkładu prawdopodobieństwa. Jest ona określona wzorem:
D(n) = \frac{h_0 + h_1 + ... + h_n}{s}
dla każdego n = 0 .. maksymalna wartość składowejgdzie s oznacza liczbę wszystkich punktów w obrazie. Zatem wartość dystrybuanty w punkcie i określa liczbę punktów w obrazie o wartości składowej mniejszej lub równej i podzieloną przez liczbę wszystkich punktów w obrazie.Na podstawie dystrybuanty otrzymujemy tablice LUT, która wyraza się wzorem:
LUT(i) = \frac{D(i) - D_0}{1 - D_0} * (k - 1)
gdzie:- i - wartosc składowej obrazu oryginalnego,
- D0 - pierwsza niezerowa wartosc dystrybuanty obrazu oryginalnego,
- k - liczba mozliwych wartosci składowych obrazu.
Przykład:
Rozważmy obraz o 20 punktach, dla którego dany jest histogram h = {2, 5, 0, 3, 9, 1}
Dystrybuanta dla niego będzie zatem wyglądała następująco: D = {2/20, 7/20, 7/20, 10/20 , 19/20, 20/20}
Co po przekształceniu na ułamki dziesiętne wgląda tak: D = {0.1, 0.35, 0.35, 0.5 , 0.95, 1}
Teraz obliczymy współczynniki tablicy LUT:
Pierwsza niezerowa wartość dystrybuanty D0 = 0.1
Liczba wartości składowych (liczba elementów histogramu) k = 6
Wartości zakrąglamy w dół (można też zaokrąglać wartości normalnie, tzn. do wartości x.5 w dół a powyżej w górę):
LUT(0) = ((0.1 - 0.1) / (1 - 0.1)) * (5) = 0
LUT(1) = ((0.35 - 0.1) / (1 - 0.1)) * (5) = 1
LUT(2) = ((0.35 - 0.1) / (1 - 0.1)) * (5) = 1
LUT(3) = ((0.5 - 0.1) / (1 - 0.1)) * (5) = 2
LUT(4) = ((0.95 - 0.1) / (1 - 0.1)) * (5) = 4
LUT(5) = ((1 - 0.1) / (1 - 0.1)) * (5) = 5
Należy pokreślić, iż operacja ta nie jest uniwersalna i w przypadku niektórych obrazów może nie przynieść zadowalajacych rezultatów. Poniżej przedstawiono wynik wyrównywania histogramu, dla obrazu kolorowego i monochromatycznego (po lewej obrazy przed operacją wyrównywania histogramu):

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 | ***** / 8 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 4 |
Poprawiony: 16 sierpnia 2012 19:46
dzięki za pomoc, ze skryptu A.Sluzka"Komputerowa analiza obrazu" ciężko zczaić o co chodzi