Wpisany przez Tomasz Lubiński,
13 września 2005 23:26
Rozciagniecie histogramu (ang. histogram stretching) wykonuje sie wówczas, gdy nie pokrywa on całego zakresu wartosci składowych obrazu. Czasem operacja ta mylona jest z wyrównywaniem histogramu. Rozciagniecie prowadzi do takiej konwersji zakresu wartosci składowych, aby histogram obejmował wszystkie wartosci składowych. Czyli jeżeli zakres składowej jest równy 0-255, a najmniejsza wartość w obrazie wynosi 4, największa natomiast wynosi na przykład 198, to po operacji rozciągnięcia wartości tej składowej będą w pełnym zakresie 0-255. Czyli teraz najmniejsza wartość w obrazie wynosi 0 a największa 255. Operacje rozciagniecia histogramu mozna przeprowadzic odpowiednio dobierajac jasnosc i kontrast obrazu. W praktyce rozciągnięcie histogramu sprowadza się do wykonania przeksztalcenia obrazu przy pomocy odpowiednio przygotowanej tablicy LUT. Współczynniki w takiej tablicy wyznaczane są wg nastepujacego wzoru:
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 rozciągania histogramu, dla obrazu kolorowego i monochromatycznego (po lewej obrazy przed operacją rozciągania histogramu):
LUT(i) = \frac{i_{max}}{v_{max}-v_{min}}*(i-v_{min})
gdzie:- vmax oznacza maksymalną wartość składowej w obrazie,
- vmin oznacza minimalną wartość składowej w obrazie,
- imax oznacza maksymalną możliwą wartość składowej w obrazie.
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 rozciągania histogramu, dla obrazu kolorowego i monochromatycznego (po lewej obrazy przed operacją rozciągania histogramu):
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Microsoft Visual Studio 2010 | .cs | .cs | ***** / 1 |
Tomasz Lubiński | C/C++ | Borland Builder 6 | .cpp | .cpp | ***** / 5 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 1 |
Poprawiony: 16 sierpnia 2012 19:37