Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

INFOÉRA 2006 2006.11.18 Grafika I. Juhász István-Zsakó László: Informatikai képzések a ELTE-n.

Hasonló előadás


Az előadások a következő témára: "INFOÉRA 2006 2006.11.18 Grafika I. Juhász István-Zsakó László: Informatikai képzések a ELTE-n."— Előadás másolata:

1 INFOÉRA 2006 Grafika I. Juhász István-Zsakó László: Informatikai képzések a ELTE-n

2 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
Kép – mátrix Feladat: Egy N*M-es raszterképet nagyítsunk a két-szeresére pontsokszorozással: minden régi pont helyébe 2*2 azonos színű pontot rajzolunk a nagyított képen.  Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Szlávi-Zsakó: Programozási alapismeretek 7. előadás

3 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
Kép – mátrix Problémák/válaszok: Hogyan ábrázoljunk egy képet? A kép rendezett pontokból áll, azaz biztosan valamilyen sorozatként adható meg. Nehézkes lenne azonban a pontokra egy sorszámozást adni. Könnyebb azt megmondani, hogy egy kép-pont a kép hányadik sorában, illetve oszlopá-ban található, azaz mátrixban tároljuk! Mi van a mátrixban? Fekete-fehér kép esetén fényerősség, színes képnél RGB kód. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Szlávi-Zsakó: Programozási alapismeretek 7. előadás

4 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
Kép – mátrix Specifikáció: Bemenet: N,M:Egész A:Tömb[1..N,1..M:Egész] Kimenet: B:Tömb[1..2*N,1..2*M:Egész] Előfeltétel: N,M0 Utófeltétel: i (1iN): j (1jM): B [2*i,2*j]=A[i,j] és B[2*i–1,2*j]=A[i,j] és B[2*i,2*j–1]=A[i,j] és B[2*i–1,2*j–1]=A[i,j] Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Szlávi-Zsakó: Programozási alapismeretek 7. előadás

5 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép kétszeresre nagyítása Nagyítás pontsokszorozással: Nagyítás: Ciklus I=1-től N-ig Ciklus J=1-től M-ig B(2*I-1,2*J-1):=A(I,J) B(2*I,2*J-1):=A(I,J) B(2*I-1,2*J):=A(I,J) B(2*I,2*J):=A(I,J) Ciklus vége Ciklus vége Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5

6 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép kétszeresre nagyítása Nagyítás pontátlagolással: Nagyítás: Ciklus I=1-től N-1-ig Ciklus J=1-től M-1-ig B(2*I-1,2*J-1):=A(I,J) B(2*I,2*J-1):=(A(I,J)+A(I+1,J))/2 B(2*I-1,2*J):=(A(I,J)+A(I,J+1))/2 B(2*I,2*J):=(A(I,J)+A(I+1,J+1))/2 Ciklus vége Ciklus vége Eljárás vége. Színes pontok átlaga? Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6

7 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép kétszeresre nagyítása: Pontsokszorozással: Pontátlagolással: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7

8 Raszteres képek transzformálása
Feladat: Egy N*M-es raszterképet kicsinyítsünk a felére (N/2*M/2 méretűre): a kicsinyített kép minden pontja az eredeti kép 2*2 pontjából számítódjon: pontelhagyással; átlagolással! Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Szlávi-Zsakó: Programozási alapismeretek 7. előadás

9 Raszteres képek transzformálása
Specifikáció: Bemenet: N,M:Egész A:Tömb[1..N,1..M:Egész] Kimenet: B:Tömb[1..N/2,1..M/2:Egész] Előfeltétel: N,M0 Utófeltétel: i (1iN/2): j (1jM/2): B[i,j]=A[2*i-1,2*j-1] vagy B[i,j]=(A[2*i,2*j]+A[2*i–1,2*j] A[2*i,2*j–1]+A[2*i–1,2*j–1])/4 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Szlávi-Zsakó: Programozási alapismeretek 7. előadás

10 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép felére kicsinyítése Kicsinyítés pontelhagyással: Kicsinyítés: Ciklus I=1-től N/2-ig Ciklus J=1-től M/2-ig B(I,J):=A(2*I-1,2*J-1) Ciklus vége Ciklus vége Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10

11 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép felére kicsinyítése, pontelhagyással: ↑ ↑ Eredeti ← Kicsinyített Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11

12 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép felére kicsinyítése Kicsinyítés pontátlagolással: Kicsinyítés: Ciklus I=1-től N/2-ig Ciklus J=1-től M/2-ig B(I,J):=(A(2*I-1,2*J-1) A(2*I-1,2*J) A(2*I,2*J-1) A(2*I,2*J))/4 Ciklus vége Ciklus vége Eljárás vége. Színes pontok átlaga? Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

13 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Kép felére kicsinyítése Pontátlagolással kicsinyített kép újra nagyítva: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

14 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Lineáris szűrés Sok képen véletlen zajok jelennek meg, amelyek a kép minőségét határozottan rontják, azaz minden egyes valódi értéket megváltoztathatott egy véletlen érték. A szűrés feladata ezen véletlen hatások minél jobb hatásfokú megszüntetése. Ennek legegyszerűbb változatában minden egyes képpont értékét helyettesítjük önmaga és közvetlen 8 szomszédja átlagával: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

15 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Lineáris szűrés Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

16 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Rank szűrés Ennél a módszernél átlagszámítás helyett a szomszédos pontokkal más műveletet végzünk. Első lépésként vegyük a környező pontok fényesség értékét és rendezzük nagyság szerint sorba! Válasszuk ki a nagyság szerint K-adik elemet, s ezzel helyettesítsük az eredeti pontot! Ha K=1, akkor éppen a legsötétebb pontot választjuk, ha K=N, akkor pedig a legfényesebbet. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

17 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Rank szűrés Speciális rank szűrő, a medián szűrő, amikor K=N/2, azaz éppen a nagyság szerint középső értéket választjuk. Ez a módszer a kiugró zajcsúcsokat tökéletesen eltünteti. Példa A Rák-köd képére alkalmazzunk Rank-szűrőt! Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

18 Raszteres képek transzformálása
INFOÉRA 2006 Raszteres képek transzformálása Eredeti K=1 szűrő K=5 szűrő K=8 szűrő Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

19 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Grafikai alapok A képernyőn a „normál” koordináta-rendszer: Origó a bal-felső sarokban. A pixel az egység. Csak egész koordinátájú pontokkal jellemzett görbékkel, ívekkel foglalkozunk. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

20 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Grafikai alapok PontRajzol(x,y): s:=Kerekít(ks-y); o:=Kerekít(ko+x) Ha s[0,MaxY] és o[0,MaxX] akkor Pont(o,s) Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

21 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Szakasz rajzolás A feladat: szakaszt rajzolni (x1,y1) és (x2,y2) között. A naiv megoldás: A két ponton húzható egyenes egyenlete: y=(y2-y1)/(x2-x1)*(x-x1)+y1. Feltehető, hogy x1x2. A megoldás lényege: vegyük sorra x lehetséges (egész) értékeit [x1,x2] között, és rajzoljuk ki az (x,y(x)) pontot! Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

22 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Szakasz rajzolás SzakaszRajzolás(x1,y1,x2,y2): it:=(y2-y1)/(x2-x1) Ciklus x=x1-től x2-ig y:=(x-x1)*it+y1; PontRajz(x,y) Ciklus vége Eljárás vége. Problémák: x1=x2 eset – 0-val osztás  külön vizsgálandó; x1>x2 eset – üres ciklus  a ciklus-változónak visszafelé kellene haladni; Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

23 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Szakasz rajzolás Problémák: it1 (legfeljebb 45 lejtésszög) esetén „folytonos” pixelek sorozata a szakasz, it>1 (több, mint 45 lejtésszög) esetén „szakadozott” pixelek sorozata. it1 it>1 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

24 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Szakasz rajzolás A feladat: szakaszt rajzolni (x1,y1) és (x2,y2) között. Egy helyes megoldás: Válasszuk meg úgy az x-irányú lépésközt, hogy az megfelelő legyen minden esetben. A megoldás lényege: Az x-irányú eltérés (hx) és az y-irányú eltérés (hy) maximumával normáljuk a lépésközöket! Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24

25 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Szakasz rajzolás SzakaszRajzolás(x1,y1,x2,y2): hx:=x2-x1; hy:=y2-y1 Ha │hx│>│hy│ akkor h:=│hx│különben h:=│hy│ Ha h=0 akkor PontRajz(x1,y1) különben lx:=hx/h; ly:=hy/h x:=x1; y:=y1; PontRajz(x1,y1) Ciklus k=1-től h-ig x:=x+lx; y:=y+ly; PontRajz(x,y) Ciklus vége Elágazás vége Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25

26 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A feladat: (x0,y0) középpontú, r sugarú kör rajzolása. A kör szimmetriája miatt, ha az (x,y) pont rajta van az íven, akkor a (-x,y), (x,-y), (-x,-y) pontok is rajta lesznek. További szimmetria-tengelyei is vannak, amelyek kihasználhatók! Az (x0,y0) középpontú kör a (0,0) középpontú eltolásával egyszerűen megkapható, amelyet ismét rábízhatunk a PontRajzol eljárásra. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26

27 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A kör egyenlete: A körív pontjai: Mivel a körív pontjai kielégítik az y2=r2-x2 egyenletet, kapjuk a kézenfekvő megoldást: KörRajzolás(r): Ciklus x=0-tól r-ig y:=Egész(Négyzetgyök(r*r-x*x)) PontRajz(x,y); PontRajz(-x,y) PontRajz(x,-y); PontRajz(-x,-y) Ciklus vége Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27

28 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28

29 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A körív pontjai: (r*cos(), r*sin()) KörRajzolás(r): Ciklus alfa=0-tól 6.28-ig L-esével x:=Egész(r*cos(alfa)) y:=Egész(r*sin(alfa))) PontRajz(x,y); PontRajz(-x,y) PontRajz(x,-y); PontRajz(-x,-y) Ciklus vége Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29

30 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A körív pontjai: (r*cos(), r*sin()) L=0.3 L= L=0.01 Kérdés: mekkora legyen az L? Legyen L-nyi fordulat az r-sugarú íven kb. 1 pixelnyi! L / (2*) = 1 / (2*r*) L = 1 / r Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30

31 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A körív követése (görbék rajzolására általánosan alkalmazható ötlet): kiindulás a görbe egy alkalmas kezdő-pontjából, válasszunk valamilyen elképzelhető haladási (rajzolási) irányt (balra/jobbra, fel/le), az irányba eső szomszédos pontokat vizsgáljuk meg: melyik tér el legkevésbé a görbétől, majd arra lépjünk tovább! Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31

32 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A körív követése : KörRajzolás(r): x:=0; y:=r Ciklus amíg y0 PontRajz(x,y); PontRajz(-x,y) PontRajz(-x,y); PontRajz(-x,-y) Következő(x,y) Ciklus vége Eljárás vége. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

33 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás A körív követése (belülről): Következő(x,y): Ha (x+1)2+y2r akkor x:=x+1 különben ha (x+1)2+(y-1)2r2 akkor y:=y-1; x:=x+1 különben y:=y-1 Eljárás vége. A fekete pontból indulva kék-zöld-piros vizsgálati sorrenddel. Választhatnánk közülük a körvonalhoz legközelebbit is. Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33

34 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés
INFOÉRA 2006 Kör rajzolás Ugyanezt az elvet körív helyett tetszőleges görbére is alkalmazhatjuk: Pillangó-görbe: y6=x2-x6 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34

35 INFOÉRA 2006 Vége Zsakó László: Szövegfeldolgozás I. Zsakó László: Programozási alapismeretek M 35 Juhász István-Zsakó László: Informatikai képzések a ELTE-n


Letölteni ppt "INFOÉRA 2006 2006.11.18 Grafika I. Juhász István-Zsakó László: Informatikai képzések a ELTE-n."

Hasonló előadás


Google Hirdetések