Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Hasonló dokumentumok
Algoritmizálás és adatmodellezés tanítása 2. előadás

Algoritmizálás és adatmodellezés tanítása 3. előadás

Programozási alapismeretek (M1,M2)

Algoritmizálás és adatmodellezés 2. előadás

Algoritmizálás, adatmodellezés 1. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

Algoritmizálás, adatmodellezés tanítása 6. előadás

Függvényábrázolás III.

Algoritmizálás, adatmodellezés tanítása 1. előadás

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Algoritmusok raszteres grafikához

Algoritmizálás, adatmodellezés tanítása 8. előadás

Bevezetés az informatikába

Cohen-Sutherland vágóalgoritmus

Algoritmizálás, adatmodellezés tanítása 2. előadás

Algoritmizálás, adatmodellezés 1. előadás

Algoritmizálás és adatmodellezés tanítása 6. előadás

Algoritmizálás, adatmodellezés tanítása 2. előadás

Szélsőérték-számítás

Bevezetés a programozásba. 5. Előadás: Tömbök

Matematika I. NÉV:... FELADATOK: 2. Határozzuk meg az f(x) = 2x 3 + 2x 2 2x + 1 függvény szélsőértékeit a [ 2, 2] halmazon.

BME MOGI Gépészeti informatika 15.

Algoritmizálás, adatmodellezés tanítása 11. előadás. (Horváth Gyula előadása alapján)

Matematika III előadás

5. fejezet. Differenciálegyenletek

Hatékonyság 1. előadás

Közismereti informatika I. 4. előadás

Utolsó módosítás: Feladat egy kétváltozós valós függvény kirajzolása különféle megjelenítési módszerekkel.

3. Szűrés képtérben. Kató Zoltán. Képfeldolgozás és Számítógépes Grafika tanszék SZTE (

sin x = cos x =? sin x = dx =? dx = cos x =? g) Adja meg a helyettesítéses integrálás szabályát határozott integrálokra vonatkozóan!

Algoritmusok és adatszerkezetek I. 4. előadás

Koordináta geometria III.

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Függvények ábrázolása

Miskolci Egyetem GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR. Polárkoordinátás és paraméteres megadású görbék. oktatási segédanyag

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Számítási feladatok a Számítógépi geometria órához

Tartalom. Programozási alapismeretek. 11. előadás

OPTIKA. Szín. Dr. Seres István

Matematika II. 1 sin xdx =, 1 cos xdx =, 1 + x 2 dx =

Láthatósági kérdések

Matematika A2 vizsga mgeoldása június 4.

Programozási alapismeretek 11. előadás

KOORDINÁTA-GEOMETRIA

Hajder Levente 2017/2018. II. félév

10. Koordinátageometria

Érettségi feladatok: Koordináta-geometria 1/5

Programozási nyelvek 4. előadás

Függvények Megoldások

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Matematikai háttér. 3. Fejezet. A matematika hozzászoktatja a szemünket ahhoz, hogy tisztán és világosan lássa az igazságot.

Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához

1. Bevezetés. 2. Felületek megadása térben. A fenti kúp egy z tengellyel rendelkező. ismerhető fel, hogy. 1. definíció. Legyen D R n.

Adatbázis rendszerek Gy: Algoritmusok C-ben

Közgazdaságtan I. Számolási feladat-típusok a számonkérésekre 3. hét. 2018/2019/I. Kupcsik Réka

Érettségi feladatok Koordinátageometria_rendszerezve / 5

A kör. A kör egyenlete

Matematika I. NÉV:... FELADATOK:

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

Láncolt listák Témakörök. Lista alapfogalmak

valós számot tartalmaz, mert az ilyen részhalmazon nem azonosság.

Egyszerű programozási tételek

Geometriai valo szí nű se g

NULLADIK MATEMATIKA ZÁRTHELYI

Egyenletek, egyenlőtlenségek VII.

Helyvektorok, műveletek, vektorok a koordináta-rendszerben

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Algoritmizálás és adatmodellezés tanítása 4. előadás

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

VIK A1 Matematika BOSCH, Hatvan, 5. Gyakorlati anyag

Számítógépes Grafika mintafeladatok

Multihalmaz, intervallumhalmaz

Algoritmizálás és adatmodellezés tanítása 1. előadás

A keresett kör középpontja Ku ( ; v, ) a sugara r = 1. Az adott kör középpontjának koordinátái: K1( 4; 2)

Feladatok a MATEMATIKA. standardleírás 2. szintjéhez

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

EGY ABLAK - GEOMETRIAI PROBLÉMA

Az f ( xy, ) függvény y változó szerinti primitív függvénye G( x, f xydy= Gxy + C. Kétváltozós függvény integrálszámítása. Primitívfüggvény.

a b a b x y a b c d e f PSZT/PSZSZT 1.) Az ábrán e, f egyenesek párhuzamosak. Számítsd ki a hiányzó adatokat!

Szelekció. Döntéshozatal

Két körhenger általánosabban ( Alkalmazzuk a vektoralgebrát! ) 1. ábra

Speciális szükségletű felhasználók navigációjának vizsgálata különböző multimédiás alkalmazásokban

Kettős integrál Hármas integrál. Többes integrálok. Sáfár Orsolya május 13.

Rajz 01 gyakorló feladat

Fényerősség. EV3 programleírás. Használt rövidítések. A program működésének összegzése

2 (j) f(x) dx = 1 arcsin(3x 2) + C. (d) A x + Bx + C 5x (2x 2 + 7) + Hx + I. 2 2x F x + G. x

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

3D koordináta-rendszerek

OPTIKA. Vékony lencsék képalkotása. Dr. Seres István

A Cassini - görbékről

1. tétel. 1. Egy derékszögű háromszög egyik szöge 50, a szög melletti befogója 7 cm. Mekkora a háromszög átfogója? (4 pont)

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Haladó rendezések. PPT 2007/2008 tavasz.

First Prev Next Last Go Back Full Screen Close Quit

Gépi tanulás a gyakorlatban. Lineáris regresszió

Képrestauráció Képhelyreállítás

Átírás:

Grafika I.

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 2/35

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 3/35

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 4/35

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. Raszteres képek transzformálása Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 5

Kép kétszeresre nagyítása Raszteres képek transzformálá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 6

Kép kétszeresre nagyítása: Raszteres képek transzformálása Pontsokszorozással: Pontátlagolással: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 7

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 8

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 9

Kép felére kicsinyítése Raszteres képek transzformálása 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 10

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 11

Kép felére kicsinyítése Raszteres képek transzformálása 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 12

Kép felére kicsinyítése Raszteres képek transzformálása Pontátlagolással kicsinyített kép újra nagyítva: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 13

Lineáris szűrés Raszteres képek transzformálása 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: B 1 i 1 i, j A k, l 9 k i 1 l j 1 j 1 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 14

Raszteres képek transzformálása Lineáris szűrés Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 15

Rank szűrés Raszteres képek transzformálása 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 16

Rank szűrés Raszteres képek transzformálása 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 17

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 18

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 19

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 20

Szakasz rajzolás A feladat: szakaszt rajzolni (x 1,y 1 ) és (x 2,y 2 ) között. A naiv megoldás: A két ponton húzható egyenes egyenlete: y=(y 2 -y 1 )/(x 2 -x 1 )*(x-x 1 )+y 1. Feltehető, hogy x 1 x 2. A megoldás lényege: vegyük sorra x lehetséges (egész) értékeit [x 1,x 2 ] között, és rajzoljuk ki az (x,y(x)) pontot! Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 21

Szakasz rajzolás SzakaszRajzolás(x 1,y 1,x 2,y 2 ): it:=(y 2 -y 1 )/(x 2 -x 1 ) Ciklus x=x 1 -től x 2 -ig y:=(x-x 1 )*it+y 1 ; PontRajz(x,y) Ciklus vége Eljárás vége. Problémák: x 1 =x 2 eset 0-val osztás külön vizsgálandó; x 1 >x 2 eset üres ciklus a ciklus-változónak visszafelé kellene haladni; Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 22

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 23

Szakasz rajzolás A feladat: szakaszt rajzolni (x 1,y 1 ) és (x 2,y 2 ) 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 24

Szakasz rajzolás SzakaszRajzolás(x 1,y 1,x 2,y 2 ): hx:=x 2 -x 1 ; hy:=y 2 -y 1 Ha hx > hy akkor h:= hx különben h:= hy Ha h=0 akkor PontRajz(x 1,y 1 ) különben lx:=hx/h; ly:=hy/h x:=x 1 ; y:=y 1 ; PontRajz(x 1,y 1 ) 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 25

Kör rajzolás A feladat: (x 0,y 0 ) 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 (x 0,y 0 ) 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 26

A kör egyenlete: A körív pontjai: Kör rajzolás x 2 y 2 2 ( x, x 2 r ) Mivel a körív pontjai kielégítik az y 2 =r 2 -x 2 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. r 2 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 27

Kör rajzolás Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 28

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 29

Kör rajzolás A körív pontjai: (r*cos( ), r*sin( )) L=0.3 L=0.2 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 30

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 31

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 32

Kör rajzolás A körív követése (belülről): Következő(x,y): Ha (x+1) 2 +y 2 r 2 akkor x:=x+1 különben ha (x+1) 2 +(y-1) 2 r 2 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 33

Kör rajzolás Ugyanezt az elvet körív helyett tetszőleges görbére is alkalmazhatjuk: Pillangó-görbe: y 6 =x 2 -x 6 Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 34

Vége Zsakó Zsakó László: László: Programozási Szövegfeldolgozás alapismeretek I. M 35