Wpisany przez Tomasz Lubiński,
27 sierpnia 2008 16:50
Parametr mówiący o tym ile światła odbitego od fotografowanych obiektów dociera do matrycy bądź innego materiału światłoczułego nazywamy ekspozycją. Gdy zdjęcie jest już zrobione możemy jeszcze w pewnym stopniu korygować ją, czyli zasymulować dłuższe lub krótsze otwarcie migawki. Zmiana ekspozycji obrazu sprowadza sie do wykonania przekształcenia obrazu przy pomocy odpowiednio przygotowanej tablicy LUT. Współczynniki w takiej tablicy wyznaczane są wg następującego wzoru:
Jeżeli wartość stałej a, czyli współczynnika kierunkowego prostej jest większa od 1, to nastąpi zwiększenie ekspozycji obrazu. W przeciwnym wypadku, gdy wartość a jest mniejsza od 1, nastąpi zmniejszenie ekspozycji obrazu. Wykresy powyższych krzywych przedstawia rysunek.
Jak widać zmiana ekspozycji sprowadza się do przemnożenia wszystkich składowych RGB obrazu przez pewną stałą a, gdy wynik jest większy od zakresu to należy wziąć wartość maksymalną. Zwiększanie ekspozycji obrazu powoduje rozciągnięcie histogramu obrazu w prawo, natomiast zmniejszenie ekspozycji zwężanie histogramu w lewo.
W instrukcjach aparatu znaleźć możemy zazwyczaj "korekcję ekspozycji" w jednostkach EV (ang. Exposure Value). Zmiana EV o 1.0 oznacza dwukrotną zmianę ekspozycji. Czyli jeżeli na wykonanym już zdjęciu chcemy dokonać korekcji +1.0 EV to należy w tym celu użyć współczynnika a o wartości równej 2. Wykonanie korekcji +2.0 EV oznacza 4 krotną zmianę ekspozycji, dlatego też w tym wypadku wartość współczynnika a wynosić będzie 4. W przypadku zmniejszania korekcji -1.0 EV użyjemy współczynnika a o wartości 0.5, a dla korekcji -2.0 EV, a = 0.25.
Zatem związek pomiędzy wartością EV, a współczynnikiem a możemy opisać wzorem: a = 2EV.
Poniżej zestawiono, wyniki zmiany ekspozycji przykładowego obrazu. W środku znajduje się obraz oryginalny, po lewej mamy obraz o zmniejszonej ekspozycji, po prawej obraz o zwiększonej ekspozycji.
Wyniki dla obrazu monochromatycznego:
Wyniki dla obrazu kolorowego:
Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "korekcja ekspozycji" 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
LUT(i)=\begin{cases}
ai & \text{ jeżeli } ai < i_{max} \\
i_{max} & \text{ jeżeli } ai \geq i_{max}
\end{cases}
gdzie imax oznacza maksymalną dopuszczalną wartość składowej piksela obrazu.Jeżeli wartość stałej a, czyli współczynnika kierunkowego prostej jest większa od 1, to nastąpi zwiększenie ekspozycji obrazu. W przeciwnym wypadku, gdy wartość a jest mniejsza od 1, nastąpi zmniejszenie ekspozycji obrazu. Wykresy powyższych krzywych przedstawia rysunek.
Jak widać zmiana ekspozycji sprowadza się do przemnożenia wszystkich składowych RGB obrazu przez pewną stałą a, gdy wynik jest większy od zakresu to należy wziąć wartość maksymalną. Zwiększanie ekspozycji obrazu powoduje rozciągnięcie histogramu obrazu w prawo, natomiast zmniejszenie ekspozycji zwężanie histogramu w lewo.
W instrukcjach aparatu znaleźć możemy zazwyczaj "korekcję ekspozycji" w jednostkach EV (ang. Exposure Value). Zmiana EV o 1.0 oznacza dwukrotną zmianę ekspozycji. Czyli jeżeli na wykonanym już zdjęciu chcemy dokonać korekcji +1.0 EV to należy w tym celu użyć współczynnika a o wartości równej 2. Wykonanie korekcji +2.0 EV oznacza 4 krotną zmianę ekspozycji, dlatego też w tym wypadku wartość współczynnika a wynosić będzie 4. W przypadku zmniejszania korekcji -1.0 EV użyjemy współczynnika a o wartości 0.5, a dla korekcji -2.0 EV, a = 0.25.
Zatem związek pomiędzy wartością EV, a współczynnikiem a możemy opisać wzorem: a = 2EV.
Poniżej zestawiono, wyniki zmiany ekspozycji przykładowego obrazu. W środku znajduje się obraz oryginalny, po lewej mamy obraz o zmniejszonej ekspozycji, po prawej obraz o zwiększonej ekspozycji.
Wyniki dla obrazu monochromatycznego:
Wyniki dla obrazu kolorowego:
Przykład w JavaScript:
Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "korekcja ekspozycji" 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
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Visual Studio C# 2010 Express | .cs | .cs | ***** / 0 |
Tomasz Lubiński | C/C++ | Borland Builder 6 | .cpp | .cpp | ***** / 1 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 1 |
Tomasz Lubiński | JavaScript | Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+ | .js | .js | ***** / 0 |
Poprawiony: 16 sierpnia 2012 19:53