Professional Documents
Culture Documents
07 ML 05 Gyak
07 ML 05 Gyak
Pécsi Tudományegyetem
ÁOK, TTK
Szerda
2/7
Képműveletek
2/7
Képműveletek
Néhány fontos utası́tás:
2/7
Képműveletek
Néhány fontos utası́tás:
imread: Kép beolvasása. Használata A=imread(filenev,tip)
imwrite: Kép mentése. Használata imwrite(A,filenev,tip)
image: Kép ábrázolása. Használata image(A)
2/7
Képműveletek
Néhány fontos utası́tás:
imread: Kép beolvasása. Használata A=imread(filenev,tip)
imwrite: Kép mentése. Használata imwrite(A,filenev,tip)
image: Kép ábrázolása. Használata image(A)
5.1. Feladat. Töltsük le a honlapról a pte.bmp file-t. Készı́tsünk egy m-filet,
amellyel beolvashatjuk ábrázolhatjuk a képet a középpont körül elforgatva valame-
ly megadott szöggel. A függvény bemenőadatkét várja a file nevét és a forgatás
szögét. Mielőtt kilépünk mentsük is el az elforgatott képet a filenev2.bmp file-
ba.
2/7
Képműveletek
Néhány fontos utası́tás:
imread: Kép beolvasása. Használata A=imread(filenev,tip)
imwrite: Kép mentése. Használata imwrite(A,filenev,tip)
image: Kép ábrázolása. Használata image(A)
5.1. Feladat. Töltsük le a honlapról a pte.bmp file-t. Készı́tsünk egy m-filet,
amellyel beolvashatjuk ábrázolhatjuk a képet a középpont körül elforgatva valame-
ly megadott szöggel. A függvény bemenőadatkét várja a file nevét és a forgatás
szögét. Mielőtt kilépünk mentsük is el az elforgatott képet a filenev2.bmp file-
ba.
Képműveletek
Néhány fontos utası́tás:
imread: Kép beolvasása. Használata A=imread(filenev,tip)
imwrite: Kép mentése. Használata imwrite(A,filenev,tip)
image: Kép ábrázolása. Használata image(A)
5.1. Feladat. Töltsük le a honlapról a pte.bmp file-t. Készı́tsünk egy m-filet,
amellyel beolvashatjuk ábrázolhatjuk a képet a középpont körül elforgatva valame-
ly megadott szöggel. A függvény bemenőadatkét várja a file nevét és a forgatás
szögét. Mielőtt kilépünk mentsük is el az elforgatott képet a filenev2.bmp file-
ba.
Sztereografikus projekció
1
Az egység sugarú kört az R = 2
sugarú gömbre vetı́tjük.
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
Szükséges információk:
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
Szükséges információk:
1. Gömb és egyenes döféspontjára van szükségünk.
Ehhez a gömb egyenlete: (x − u2 ) + (y − v)2 + (z − w)2 = R2
x = x0 + tA
A v = (A, B, C) irányvektorú P = (x0 , y0 , z0 ) ponton átmenő egyenes egyenletrendszere y = y0 + tB
z = z0 + tC
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
Szükséges információk:
1. Gömb és egyenes döféspontjára van szükségünk.
Ehhez a gömb egyenlete: (x − u2 ) + (y − v)2 + (z − w)2 = R2
x = x0 + tA
A v = (A, B, C) irányvektorú P = (x0 , y0 , z0 ) ponton átmenő egyenes egyenletrendszere y = y0 + tB
z = z0 + tC
2. A döféspont meghatározásához a solve utası́tást használjuk. (Már ha van. Próbáljuk ki!)
solve használata: S=solve(’eq1’,’eq2’,...). Ekkor a megoldásokS.valtnev változókban lesznek
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
Szükséges információk:
1. Gömb és egyenes döféspontjára van szükségünk.
Ehhez a gömb egyenlete: (x − u2 ) + (y − v)2 + (z − w)2 = R2
x = x0 + tA
A v = (A, B, C) irányvektorú P = (x0 , y0 , z0 ) ponton átmenő egyenes egyenletrendszere y = y0 + tB
z = z0 + tC
2. A döféspont meghatározásához a solve utası́tást használjuk. (Már ha van. Próbáljuk ki!)
solve használata: S=solve(’eq1’,’eq2’,...). Ekkor a megoldásokS.valtnev változókban lesznek
3. Figyelem a solve visszatérési értéke sym (szimbolikus) elemekből álló vektor. Konvertáláshoz a double
parancs használható.
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
Szükséges információk:
1. Gömb és egyenes döféspontjára van szükségünk.
Ehhez a gömb egyenlete: (x − u2 ) + (y − v)2 + (z − w)2 = R2
x = x0 + tA
A v = (A, B, C) irányvektorú P = (x0 , y0 , z0 ) ponton átmenő egyenes egyenletrendszere y = y0 + tB
z = z0 + tC
2. A döféspont meghatározásához a solve utası́tást használjuk. (Már ha van. Próbáljuk ki!)
solve használata: S=solve(’eq1’,’eq2’,...). Ekkor a megoldásokS.valtnev változókban lesznek
3. Figyelem a solve visszatérési értéke sym (szimbolikus) elemekből álló vektor. Konvertáláshoz a double
parancs használható.
4. Mindig két döféspont lesz, de az egyik mindig az Északi pólus (N ). Ki kell szűrni!
3/7
5.2. Feladat. Töltsük le a honlapról az lfc02.bmp filet. Vetı́tsük a képet egy gömbre!
Szükséges információk:
1. Gömb és egyenes döféspontjára van szükségünk.
Ehhez a gömb egyenlete: (x − u2 ) + (y − v)2 + (z − w)2 = R2
x = x0 + tA
A v = (A, B, C) irányvektorú P = (x0 , y0 , z0 ) ponton átmenő egyenes egyenletrendszere y = y0 + tB
z = z0 + tC
2. A döféspont meghatározásához a solve utası́tást használjuk. (Már ha van. Próbáljuk ki!)
solve használata: S=solve(’eq1’,’eq2’,...). Ekkor a megoldásokS.valtnev változókban lesznek
3. Figyelem a solve visszatérési értéke sym (szimbolikus) elemekből álló vektor. Konvertáláshoz a double
parancs használható.
4. Mindig két döféspont lesz, de az egyik mindig az Északi pólus (N ). Ki kell szűrni!
5. Ábrázolás pontonkét történjen, a szinkódot RGB koordinátákkal is megadhatjuk:
plot(x,y,’o’,’MarkerFaceColor’,[R G B],’MarkerEdgeColor’,[R G B])
4/7
function sztepro(filenev,R)
tic
clf; daspect=[1,1,1]; view(3); hold on;
A=imread(filenev,’bmp’);
n=length(A); %N=[0,0,2*R]
for k=1:n
for m=1:n
y=-k+(n-1)/2+1;
x=m-(n-1)/2-1;
x1=x/(n-1)*4*R;
y1=y/(n-1)*4*R;
if x1^2+y1^2<4*R^2
s=num2str(x1);
s1=strcat(’x1=’,s);
s=num2str(y1);
s2=strcat(’y1=’,s);
s=num2str(R);
s3=strcat(’R=’,s);
S=solve(’x^2+y^2+(z-R)^2=R^2’,’x=x1+t*(0-x1)’,’y=y1+t*(0-y1)’,’z=0+t*(2*R-0)’,s1,s2,s3);
x2=double(S.x); y2=double(S.y); z2=double(S.z);
c=1/256*[A(k,m,1),A(k,m,2),A(k,m,3)];
plot3(x2,y2,z2,’.’,’MarkerFaceColor’,c,’MarkerEdgeColor’,c)
drawnow
end
end
end
toc
4/7
function sztepro(filenev,R)
tic
clf; daspect=[1,1,1]; view(3); hold on;
A=imread(filenev,’bmp’);
n=length(A); %N=[0,0,2*R]
for k=1:n
for m=1:n
y=-k+(n-1)/2+1;
x=m-(n-1)/2-1;
x1=x/(n-1)*4*R;
y1=y/(n-1)*4*R;
if x1^2+y1^2<4*R^2
s=num2str(x1);
s1=strcat(’x1=’,s);
s=num2str(y1);
s2=strcat(’y1=’,s);
s=num2str(R);
s3=strcat(’R=’,s);
S=solve(’x^2+y^2+(z-R)^2=R^2’,’x=x1+t*(0-x1)’,’y=y1+t*(0-y1)’,’z=0+t*(2*R-0)’,s1,s2,s3);
x2=double(S.x); y2=double(S.y); z2=double(S.z);
c=1/256*[A(k,m,1),A(k,m,2),A(k,m,3)];
plot3(x2,y2,z2,’.’,’MarkerFaceColor’,c,’MarkerEdgeColor’,c)
drawnow
end
end
end
toc
4/7
function sztepro(filenev,R)
tic
clf; daspect=[1,1,1]; view(3); hold on;
A=imread(filenev,’bmp’);
n=length(A); %N=[0,0,2*R]
for k=1:n
for m=1:n
y=-k+(n-1)/2+1;
x=m-(n-1)/2-1;
x1=x/(n-1)*4*R;
y1=y/(n-1)*4*R;
if x1^2+y1^2<4*R^2
s=num2str(x1);
s1=strcat(’x1=’,s);
s=num2str(y1);
s2=strcat(’y1=’,s);
s=num2str(R);
s3=strcat(’R=’,s);
S=solve(’x^2+y^2+(z-R)^2=R^2’,’x=x1+t*(0-x1)’,’y=y1+t*(0-y1)’,’z=0+t*(2*R-0)’,s1,s2,s3);
x2=double(S.x); y2=double(S.y); z2=double(S.z);
c=1/256*[A(k,m,1),A(k,m,2),A(k,m,3)];
plot3(x2,y2,z2,’.’,’MarkerFaceColor’,c,’MarkerEdgeColor’,c)
drawnow
end
end
end
toc
4/7
function sztepro(filenev,R)
tic
clf; daspect=[1,1,1]; view(3); hold on;
A=imread(filenev,’bmp’);
n=length(A); %N=[0,0,2*R]
for k=1:n
for m=1:n
y=-k+(n-1)/2+1;
x=m-(n-1)/2-1;
x1=x/(n-1)*4*R;
y1=y/(n-1)*4*R;
if x1^2+y1^2<4*R^2
s=num2str(x1);
s1=strcat(’x1=’,s);
s=num2str(y1);
s2=strcat(’y1=’,s);
s=num2str(R);
s3=strcat(’R=’,s);
S=solve(’x^2+y^2+(z-R)^2=R^2’,’x=x1+t*(0-x1)’,’y=y1+t*(0-y1)’,’z=0+t*(2*R-0)’,s1,s2,s3);
x2=double(S.x); y2=double(S.y); z2=double(S.z);
c=1/256*[A(k,m,1),A(k,m,2),A(k,m,3)];
plot3(x2,y2,z2,’.’,’MarkerFaceColor’,c,’MarkerEdgeColor’,c)
drawnow
end
end
end
toc
4/7
function sztepro(filenev,R)
tic
clf; daspect=[1,1,1]; view(3); hold on;
A=imread(filenev,’bmp’);
n=length(A); %N=[0,0,2*R]
for k=1:n
for m=1:n
y=-k+(n-1)/2+1;
x=m-(n-1)/2-1;
x1=x/(n-1)*4*R;
y1=y/(n-1)*4*R;
if x1^2+y1^2<4*R^2
s=num2str(x1);
s1=strcat(’x1=’,s);
s=num2str(y1);
s2=strcat(’y1=’,s);
s=num2str(R);
s3=strcat(’R=’,s);
S=solve(’x^2+y^2+(z-R)^2=R^2’,’x=x1+t*(0-x1)’,’y=y1+t*(0-y1)’,’z=0+t*(2*R-0)’,s1,s2,s3);
x2=double(S.x); y2=double(S.y); z2=double(S.z);
c=1/256*[A(k,m,1),A(k,m,2),A(k,m,3)];
plot3(x2,y2,z2,’.’,’MarkerFaceColor’,c,’MarkerEdgeColor’,c)
drawnow
end
end
end
toc
5/7
function sztepro6(filenev,R,res)
tic
daspect=[1,1,1]; view(3); hold on;
A=imread(filenev,’bmp’);
n=length(A); %N=[0,0,2*R]
for k=-0.7:R/res:R
for m=-R:R/res:R
if k^2+m^2<R^2
k
m
t=2*R/(sqrt(R^2-k^2-m^2)-2*R);
x=-m*t;
y=-k*t;
x1=round((n-1)/4/R*x+(n+1)/2);
y1=round((1-n)/4/R*y+(n+1)/2);
c=1/256*[A(y1,x1,1),A(y1,x1,2),A(y1,x1,3)];
plot3([m,-m],[k,-k],sqrt(R^2-k^2-m^2)*[1 -1],’.’,’MarkerFaceColor’,c,’MarkerEdgeColor’,c)
drawnow
end
end
end
toc
6/7
5.3. Feladat. Az A ∈ Z20×20 mátrix tartalmazzon 1 és 500 közötti véletlen egész
számokat! Ábrázoljuk az adatainkat 64-szı́nű,,hőtérképen”!
6/7
5.3. Feladat. Az A ∈ Z20×20 mátrix tartalmazzon 1 és 500 közötti véletlen egész
számokat! Ábrázoljuk az adatainkat 64-szı́nű,,hőtérképen”!
A=round(500.*rand(20,20));
6/7
5.3. Feladat. Az A ∈ Z20×20 mátrix tartalmazzon 1 és 500 közötti véletlen egész
számokat! Ábrázoljuk az adatainkat 64-szı́nű,,hőtérképen”!
A=round(500.*rand(20,20));
maxi=max(max(A));
mini=min(min(A));
B=floor(64/(maxi-mini)*A);
image(B);
7/7
maxi=max(max(A));
C=zeros([size(A),3]);
for k=1:3
C(:,:,k)=C(:,:,k)+1/maxi*A(:,:);
end
image(C/3);