Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem. 2018/2019 1. Odcienie szaro±ci Model RGB jest modelem barw opartym na wªa±ciwo±ciach odbiorczych ludzkiego oka. Bazuje on na spostrze»eniu,»e praktycznie wszystkie rozró»niane przez oko kolory uzyska mo»na mieszaj c ze sob w odpowiednich proporcjach trzy barwy podstawowe. Od angielskich nazw tych trzech barw podstawowych model wzi ª swoj nazw. S to: czerwony R, zielony G oraz niebieski B. Jest on tak zwanym modelem addytywnym gdy» polega on na mieszaniu ±wiatªa - wi ksze warto±ci poszczególnych skªadowych oznaczaj wi ksz intensywno± ±wiatªa o danej barwie. W oparciu o ten model dziaªaj kineskopy, oraz monitory LCD. Kolory w tym modelu zapisywane s poprzez podanie intensywno±ci trzech barw skªadowych (r, g, b). W zale»no±ci od reprezentacji skªadowe te przyjmuj najcz ±ciej warto±ci zmiennoprzecinkowe od 0 do 1, b d¹ warto±ci caªkowite od 0 do 255. W informatyce kolor najcz ±ciej przechowywany jest za pomoc 24-bitowej liczby, w której ka»dej skªadowej przypada 8 bitów (2 8 = 256, czyli liczby od 0 do 255). Model ten reprezentowany jest przez sze±cian. Poszczególne wymiary tego sze±cianu odpowiadaj skªadowym: R, G oraz B. Punkt styku tych kraw dzi jest punktem (0, 0, 0) co jest równoznaczne z kolorem czarnym, natomiast punkt le» cy naprzeciwko, po przek tnej, czyli punkt (255, 255, 255) odpowiada kolorowi biaªemu. 1
Typy zmiennych int8 int16 int32 int64 uint8 uint16 uint32 uint64 double 8-bitowa zmienna caªkowita (liczba caªkowita z zakresu od 2 7 do 2 7 1); 16-bitowa zmienna caªkowita; 32-bitowa zmienna caªkowita; 64-bitowa zmienna caªkowita; 8-bitowa zmienna caªkowita bez znaku (liczba caªkowita z zakresu od 0 do 2 8 1); 16-bitowa zmienna caªkowita bez znaku; 32-bitowa zmienna caªkowita bez znaku; 64-bitowa zmienna caªkowita bez znaku; zmienna podwójnej precyzji liczby zmiennoprzecinkowe podwójnej precyzji. Toolbox w wersji 5.x -->atomsinstall("sivp") Toolbox w wersji 6.x -->atomsinstall("ipcv") Obraz jako tablica imread('nazwa.jpg') imshow(i) funkcja wczytuj ca obraz do tablicy; funkcja wy±wietlaj ca obraz I w oknie gracznym. Obraz w trybie kolorowym wczytywany jest do tablicy m n 3 wymiarowej. Ka»dej skªadowej RGB odpowiada warstwa w tablicy. Obraz w odcieniach szaro±ci wczytywany jest do jednowarstwowej tablicy wymiaru m n. Wczytamy obraz lena.jpg do tablicy I 2
Przykªad -->I = imread('lena.jpg'); -->size(i) ans = 256. 256. 3. -->imshow(i); Odwoªywanie si do konkretnego elementu tablicy w konkretnej warstwie pozwala na dost p do ka»dego elementu obrazka, czyli warto±ci odpowiednich wspóªrz dnych R, G i B dla ka»dego piksela. Przykªad -->I(100,100,1) ans = 51 Kolejne warstwy obrazu lena.jpg: 3
Konwersja do odcieni szaro±ci rgb2gray(i) funkcja konwertuj ca obraz I do odcieni szaro±ci; imwrite(i,'nazwa.jpg'); funkcja zapisuj ca obraz I do pliku nazwa.jpg. Przykªad -->J=rgb2gray(I); -->size(j) ans = 256. 256. --> imshow(j); --> imwrite(j,'lenargb.jpg'); Konwersja do odcieni szaro±ci odbywa si w nast puj cy sposób: g(i, j) = [f(i, j, 1) + f(i, j, 2) + f(i, j, 3)] /3, gdzie g(i, j) to warto± piksela obrazu w odcieniach szaro±ci, a f(i, j, k) dla k = 1, 2, 3 to warto± kolejnej warstwy piksela w obrazie kolorowym. 4
Sepia jest jedn z technik barwienia odbitek fotogracznych, stosowan gªównie w celu zwi kszenia trwaªo±ci odbitek. Odbitka tonowana w ten sposób ma charakterystyczne br zowe zabarwienie. Obecnie coraz powszechniejsza jest symulacja sepii przy u»yciu programów komputerowych. Aby wykona obraz w sepii nale»y najpierw obraz kolorowy przeksztaªci w obraz o odcieniach szaro±ci. Nast pnie dokonuje si koloryzacji tego obrazu okre±lon barw. W tym celu odczytuje si barw piksela dla obrazu w odcieniach szaro±ci. Pó¹niej dokonuje si wyodr bnienia ka»dej skªadowej R, G, B (tzn. powracamy do obrazu trójwarstowego, gdzie ka»da warstwa ma warto±ci pikseli z obrazu w odcieniach szaro±ci). Pó¹niej dokonuje si wyodr bnienia ka»dej skªadowej R, G, B (tzn. powracamy do obrazu trójwarstowego, gdzie ka»da warstwa ma warto±ci pikseli z obrazu w odcieniach szaro±ci). Nast pnie mo»emy post powa wedªug jednej z dwóch nast puj cych, przykªadowych, metod: 1. Zwi kszamy warto± ±redni dla koloru czewnonego, mno» c now (±redni ) warto± wspóªrz dnej R przez pewien wspóªczynnik α > 1, natomisat now warto± wspóªrz dnej B przez wspóªczynnik β < 1, pami taj c, aby α + β = 2. Warto± nowej wspóªrz dnej G pozostawiamy bez zmian: R R α G G B B β 2. Dodajemy do skªadowej zielonej zadany wspóªczynnik wypeªnienia W, a do czerwonej dwukrotno± tego wspóªczynnika. Skªadowa niebieska pozostaje bez zmian: R R + 2 W G G + W B B gdzie W to zadany wspóªczynnik wypeªnienia barw (od 20 do 40). Nast pnie skªadamy obraz do trójwarstwowego obrazu kolorowego. Przykªad dla drugiej metody. Efekt kolejno dla W = 20, W = 30 i W = 40. 5
Skªadnia w Scilab function out = funkcja(in)... endfunction Przykªad function out = warstwa(im,k) [h w d] = size(im); out = im(:,:,k); endfunction ob=imread('lena.jpg'); g = warstwa(ob,1); imshow(g); Przykªad na piechot function out = warstwa(im,k) [h w d] = size(im); img = uint8(zeros(h,w)); for i=1:h for j=1:w img(i,j) = im(i,j,k); end printf("%d\n",double(i/h)*100); end out = img; endfunction ob=imread('lena.jpg'); g = warstwa(ob,1); imshow(g); 6
Scilab udost pnia edytor SciNotes do tworzenia i modykacji skryptów. Jest on dost pny poprzez menu Narz dzia SciNotes lub z poziomu konsoli wykonuj c polecenie editor(). SciNotes 7