Fotografia cyfrowa i obróbka obrazu

3 rok astronomii, semestr letni 2012

Program zajęć

Materiały do projektów w Gimpie dostepne są na stronie http://gpp.gajdaw.pl/rozdz-01.html

Zajęcia pierwsze

Powstawanie obrazu w kamerze

Śledzenie promieni

Wykład Onur G. Guleryuz z Department of Electrical and Computer Engineering, Polytechnic University, Brooklyn, NY.

Przykładowe programy do tworzenia grafiki 3D

POV-Ray (Persistence of Vision Raytracer)

Blender

Zajęcia drugie

Próbkowanie i kwantyzacja:

Reprezentacja kolorów w grafice komputerowej:

Grafika rastrowa

Grafika wektorowa

Zajęcia trzecie

Podstawowe operacje na zdjęciach: obrót, odbicie lustrzane, histogram.

Utwórz nową macierz o rozmiarach 100 x 100, zawierającą same zera.

	A=zeros(100,100);

Taka macierz nie jest zbyt wygodna do przechowywania obrazów, bo jej elementy są w ogólnym przypadku typu rzeczywistego (double). Zmienimy je na typ unsigned 8 bit integer:

        A1=uint8(A);
Teraz macierz opisuje obraz w postaci bitmapy: kwadrat o boku 100 pikseli. Wartość każdego piksela wynosi 0, co odpowiada kolorowi czarnemu. Pozostałe odcienie szarości kodowane są na liczbach z zakresu 0..255, gdzie 255 to biały.

Podobną operacje wykonuje specjalna funkcja mat2gray, która w naszym przypadku można użyć tak:

        A1=mat2gray(zeros(100,100));

Zobaczmy nasz kwadrat:

       imshow(A1);
Zmieńmy jego kolor na biały:
       for i=1:100
       for j=1:100
           A2(i,j)=A1(i,j)+255;
       end
       end
i zobaczmy wynik:
	imshow(A2);
Teraz zmieńmy jego kolor na szary nadając pikselom wartość w połowie zakresu 0-255:
       for i=1:100
       for j=1:100
           A3(i,j)=A1(i,j)+125;
       end
       end
i zobaczmy wynik:
       imshow(A3);

Nadajmy teraz naszemu kwadratowi gradient koloru tak, by piksel o współrzędnych (1,1) był czarny (wartość 0), a piksel (100,100) był prawie biały (wartość 200):

       for i=1:100
       for j=1:100
           A4(i,j)=A1(i,j)+i+j;
       end
       end
Spróbujmy teraz zamienić miejscami najciemniejszy róg z najjaśniejszym:
       for i=1:100
       for j=1:100
           A5(101-i,101-j)=A4(i,j);
       end
       end
Odpowiada to obrotowi obrazu o kąt 180 stopni.

By pokolorować nasz kwadrat należy zapisać go w trzech warstwach o kolorach podstawowych: czerwonym (R), zielonym (G) i niebieskim (B). Każda z warstw na ogół też jest kodowana w postaci liczb z zakresu 0..255 (odpowiada to łącznie 3*8=24 bitom; 2^24 to ok. 16.8 milionów kolorów).

W Scilabie można definiowac tzw. hipermacierze, które maja więcej niż dwa wymiary:

	B=uint8(zeros(100,100,3);
	imshow(B);
Suma 3 kanałów: R, G, B wynosi w tej hipermacierzy 0, zatem kwadrat jest czarny. Zmieńmy teraz wartość kanału czerwonego, R z 0 na 255:
       for i=1:100
       for j=1:100
           B(i,j,1)=B(i,j,1)+255;
       end
       end
Kwadrat zmienił kolor na czerwony.

Pytanie: jaki kolor uzyskamy, jeśli zmienimy wartość kanału zielonego z 0 na 255?

Sprawdźmy to:

       for i=1:100
       for j=1:100
           B(i,j,2)=B(i,j,2)+255;
       end
       end
Niech teraz każdy sam zmieni wartość ostatniego kanału, niebieskiego, z 0 na 255. Jaki kolor wypadkowy uzyskamy?

Do dalszych operacji na obrazach wykorzystamy już konkretne zdjęcie. Do katalogu roboczego kopiujemy plik lena.png. By go wczytać użyjemy funkcji imread:

       lena1=imread('lena.png');
Sprawdzamy rozmiary macierzy lena:
       size(lena1)
Jak widać, jest to hipermacierz o rozmiarach 512x512x3 co sugeruje, że obraz lena.png jest obrazem kolorowym. Sprawdźmy to:
       imshow(lena1);       

By ułatwić sobie dalze operacje, zamieniamy obraz kolorowy na czarno-biały:

       lena2=rgb2gray(lena1);
       imshow(lena2); 
Dokonajmy teraz odbicia lena2 lustrzanego względem linii pionowej (uwaga: operacja ta może zająć trochę czasu, trzeba cierpliwie poczekac na jej zakończenie).
       for i=1:512
       for j=1:512
           lena3(i,513-j)=lena2(i,j);
       end
       end
Teraz każdy samodzielnie niech dokona odbicia lustrzanego lena2 względem linii poziomej, zapisując wynik jako lena4.

Zobaczmy teraz jak zmieni obraz transpozycja macierzy A4. By przyspieszyć te operacje posłużymy się wewnętrznym mechanizmem Scilaba do transponowania macierzy:

       lena5=lena2';
Wniosek: transpozycja odpowiada obrotowi o 270 stopni (zgodnie z kierunkiem ruchu wskazówek zegara).

Zajęcia czwarte (2010-03-09)

Ciekawostka na początek

Przykład cyfrowego retuszu zdjęcia i do czego to może doprowadzić: World Press Photo odbiera nagrodę za manipulację

Organizacja kolekcji zdjęć cyfrowych

Tagowanie zdjęć, metadane

Tagi (słowa kluczowe) są używane do zapisu informacji o zdjęciach (miejsce, ludzie, wydarzenia itp) w celu sklasyfikowania ich i umożliwienia przeszukiwania.

Ćwiczenia z Gimpem, c.d.

Proszę wykonać ćwiczenia w rozdziale drugim.

Zajęcia piąte (2010-03-16)

Przydatne linki

Retouching of astronomical data

Zajęcia n-te

Jak komponować zdjęcia

Zajęcia m-te

Samouczek stosowania szybkiej maski

Selektywne kolorowanie fotografii

Redukcja czerwonych oczu


Tworzenie kolorowych zdjęć w astronomii

Czym jest kolor? Przykłady złudzeń chromatycznych.
Data ostatniej aktualizacji: 2013-09-18