algorytm.org

Korekcja gamma

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?

Korekcja gamma
Ocena użytkowników:***** / 16
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 12 września 2005 22:25

Do usunięcia zniekształceń wprowadzonych przez urządzenia (np. monitor, bimer, skaner) potrzebna jest konwersja o charakterze nieliniowym. Przekształceniem takim jest tak zwana korekcja gamma. Sprowadza się ona do wykonania przekształcenia obrazu przy pomocy odpowiednio przygotowanej tablicy LUT. Współczynniki w takiej tablicy wyznaczane są wg następującego wzoru:
LUT(i) = i^{1 / \gamma}
gdzie γ jest stałą, której wartość zależy od charakterystyki urządzenia. Należy tutaj zauważyć, że wzór ten jest prawdziwy dla 0 ≤ i ≤ 1, by wykorzystać ten wzór dla np.: 0 ≤ i ≤ 255 należy go odpowiednio przekształcić do postaci:
LUT(i) = 255 * \left(\frac{i}{255}\right)^{\frac{1}{\gamma}}
Wykresy krzywych w zależności od wartości współczynnika, przedstawiono poniżej:

Korekcja gamma


Poniżej zestawiono, wyniki korekcji gamma przykładowego obrazu. W środku znajduje się obraz oryginalny, po lewej mamy obraz dla γ<1, po prawej obraz dla γ>1.

Wyniki dla obrazu monochromatycznego:
Korekcja gamma - obraz monochromatyczny


Wyniki dla obrazu kolorowego:
Korekcja gamma - obraz kolorowy

Przykład w JavaScript:

Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "Korekcja gamma" w celu sprawdzenia działania 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

Plik:
Gamma:

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC#Visual Studio C# 2010 Express
.cs
.cs
***** / 0
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 4
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.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:02
Komentarze
photo
-3 # wieslaw 2009-11-16 20:50
co jest na tym wykresie?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-4 # fsfsffsfg 2013-06-03 19:56
LUT
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz