You are on page 1of 5

Obrada slike (Vežba 6)

Uvod

Slika se u Matlabu predstavlja kao trodimenzionalana matrica (3D). Tu matricu


možemo posmatrati kao kocku prikazanu na slici 1. Žuta površina predstavlja
dimenzije slike u pikselima (u slučaju ove kocke 4x4), dok plava strana predstavlja
3 komponente svakog piksela (R komponentu, G komponentu i B komponentu).

Slika 1.

1. Primer

Napisati skrip datoteku koja učitava sliku, prikazuje je na ekranu , dozvoljava jedan klik
mišem(na osnovu klika mišem se preuzima boja sa lokacije gde je kliknuto) i deli sliku na 4
jednaka dela (deleći je linijom po plovini vertikalno i horizontalno). Zatim je potrebno obojiti
gornji levi deo u belo, gornji desni u crveno, donji levi u preuzetu boju, a donji desni u zeleno.

REŠENJE:
im = imread('rocky_beach1.jpg');
image(im)
[s1, s2, s3]= size(im);
[y,x] = ginput(1);
x = round(x);
y = round(y);
R = im(x,y,1);
G = im(x,y,2);
B = im(x,y,3);
for i = 1: round (s1/2)
for j= 1 : round (s2/2)
im(i,j,1) = 255;
im(i,j,2) = 255;
im(i,j,3) = 255;
end
end
for i = 1: round (s1/2)
for j= (round (s2/2)+1) : s2
im(i,j,1) = 255;
im(i,j,2) = 0;
im(i,j,3) = 0;
end
end
for i = (round (s1/2)+1): s1
for j= 1 : round (s2/2)
im(i,j,1) = R;
im(i,j,2) = G;
im(i,j,3) = B;
end
end
for i = (round (s1/2)+1): s1
for j= (round (s2/2)+1) : s2
im(i,j,1) = 0;
im(i,j,2) = 255;
im(i,j,3) = 0;
end
end
image(im);

2. Primer

Napisati skrip datoteku koja učitava sliku, prikazuje je na ekranu , dozvoljava dva klika
mišem(na osnovu klika mišem se preuzima boja sa lokacije gde je kliknuto) i deli sliku na 4
jednaka dela (po vertikalni). Zatim je potrebno obojiti skroz levi deo u prvu preuzetu boju,
centralni levlji u crno, centralni desni u drugu preuzetu boju, a skroz desni u crveno.

REŠENJE:
im = imread('rocky_beach1.jpg');
image(im)
[s1, s2, s3]= size(im);
[y,x] = ginput(1);
x = round(x);
y = round(y);
R = im(x,y,1);
G = im(x,y,2);
B = im(x,y,3);
[y2,x2] = ginput(1);
x2 = round(x2);
y2 = round(y2);
R2 = im(x2,y2,1);
G2 = im(x2,y2,2);
B2 = im(x2,y2,3);
for i = 1: s1
for j= 1 : round (s2/4)
im(i,j,1) = R;
im(i,j,2) = G;
im(i,j,3) = B;
end
end
for i = 1: s1
for j= (round (s2/4)+1) : round (s2/2)
im(i,j,1) = 0;
im(i,j,2) = 0;
im(i,j,3) = 0;
end
end
for i = 1: s1
for j= (round (s2/2)+1) : round (3*(s2/4))
im(i,j,1) = R2;
im(i,j,2) = G2;
im(i,j,3) = B2;
end
end
for i = 1: s1
for j= (round (3*(s2/4))+1) : s2
im(i,j,1) = 255;
im(i,j,2) = 0;
im(i,j,3) = 0;
end
end
image(im);

3. Primer

Napisati skrip datoteku koja učitava sliku, prikazuje je na ekranu , dozvoljava dva klika
mišem(na osnovu klika mišem se preuzima boja sa lokacije gde je kliknuto) i deli sliku na 4
jednaka dela (po dijagonali). Zatim je potrebno obojiti levi deo u prvu preuzetu boju, gornji u
drugu preuzetu boju, desni u zelenu, a donji u crvenu boju.
REŠENJE:
im = imread('beach1.jpg');
image(im)
[s1, s2, s3]= size(im);
[y,x] = ginput(1);
x = round(x);
y = round(y);
R = im(x,y,1);
G = im(x,y,2);
B = im(x,y,3);
[y2,x2] = ginput(1);
x2 = round(x2);
y2 = round(y2);
R2 = im(x2,y2,1);
G2 = im(x2,y2,2);
B2 = im(x2,y2,3);
for i = 1: s1
for j= 1 : s2
if (i>j) && (i+j<s1+1) % levo
im(i,j,1) = R;
im(i,j,2) = G;
im(i,j,3) = B;
elseif (i>j) && (i+j>s1+1) % dole
im(i,j,1) = 255;
im(i,j,2) = 0;
im(i,j,3) = 0;
elseif (i<j) && (i+j< s1+1) % gore
im(i,j,1) = R2;
im(i,j,2) = G2;
im(i,j,3) = B2;
elseif ((i<j) && (i+j> s1+1)) % desno
im(i,j,1) = 0;
im(i,j,2) = 255;
im(i,j,3) = 0;
else
im(i,j,1) = 255;
im(i,j,2) = 255;
im(i,j,3) = 255;
end
end
end
image(im)
4. Primer

Omogućiti 2 klika mišem na sliku. Obezbediti da se oboji u belo krug radijusa 30, ako je centar
kruga mesto prvog klika mišem. Zatim omogućiti da se oboji u crno kvadrat stranice 60 sa
centrom na mestu drugog klika mišem.

REŠENJE:
im = imread('beach1.jpg');
image(im)
[s1, s2, s3]= size(im);
[y,x] = ginput(1);
x = round(x);
y = round(y);
R = im(x,y,1);
G = im(x,y,2);
B = im(x,y,3);
[y2,x2] = ginput(1);
x2 = round(x2);
y2 = round(y2);
R2 = im(x2,y2,1);
G2 = im(x2,y2,2);
B2 = im(x2,y2,3);
r=30;
for i = 1: s1
for j= 1 : s2
if (i-x)^2+(j-y)^2<r^2
im(i,j,1)=255;
im(i,j,2)=255;
im(i,j,3)=255;
end
if abs(i-x2)<30 && abs(j-y2)<30
im(i,j,1)=0;
im(i,j,2)=0;
im(i,j,3)=0;
end
end
end
image(im)

You might also like