algorytm.org

Negatyw obrazu

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?

Negatyw obrazu
Ocena użytkowników:***** / 5
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 26 sierpnia 2008 21:53

Wykonanie negatywu 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:
LUT(i) = i_{max} - i
gdzie imax oznacza maksymalną dopuszczalną wartosc składowej RGB piksela obrazu.
Wykres prostej ukazującej to przekształcenie przedstawia rysunek poniżej.
wykres LUT

Jak widać wykonanie negatywu obrazu sprowadza się do odjęcia od maksymalnej dopuszczalnej wartości wartości składowej RGB obrazu. Czyli można powiedzieć, że negatyw jest dopełnieniem obrazu. Jak łatwo zauważyć negatyw negatywu będzie na powrót pozytywem czyli oryginalnym obrazem.

Dowód:
Wprowadzimy następujące oznaczenia:
i0 - punkt obrazu przed pierwszym przekształceniem (pozytyw)
i1 - punkt obrazu po pierwszym przekształceniem (negatyw)
i2 - punkt obrazu po drugim przekształceniem (negatyw negatywu)
Po pierwszym przekształceniu: i1 = imax - i0
Po drugim przekształceniu: i2 = imax - i1
Czyli: i2 = imax - i1 = imax - (imax - i0) = imax - imax + i0 = i0
Zatem i2 = i0, czyli negatyw negatywu jest pozytywem co oczywiście wykorzystuje się w tradycyjnej fotografii analogowej.

Poniżej zestawiono obrazy oraz ich negatywy.
Wyniki dla obrazu monochromatycznego:
Negatyw - obraz monochromatyczny


Wyniki dla obrazu kolorowego:
Negatyw - obraz kolorowy

Przykład w JavaScript:

Ustaw ścieżkę do pliku (lub pozostaw tą domyślną), wczytaj plik a następnie użyj przycisku "negatyw" do uzyskania jego negatywu
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
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 1
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 2
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:19
Dodaj komentarz