Algoritmi normalizacije, transformacije i usporedbe vektorske grafike uz automatsku verifikaciju i vrednovanje Konrad Burnik, Kristijan Burnik Seminar za teorijsko računarstvo PMF – Matematički odjel, Zagreb Prosinac 2014
Algoritmi normalizacije, transformacije i usporedbe vektorske grafike uz automatsku verifikaciju i vrednovanje
Konrad Burnik, Kristijan Burnik
Seminar za teorijsko računarstvo PMF – Matematički odjel, ZagrebProsinac 2014
UvodAlgoritmi normalizacije, transformacije i usporedbe vektorske grafike uz automatsku verifikaciju i vrednovanje
Obrađujemo kriterije i algoritme kod usporedbe dvaju slika reprezentiranih vektorskim objektima. Postavljamo pitanje: što znači kvalitativno (po sadržaju) usporediti dvije vektorske slike? Kakve strukture podataka koristimo u zapisu?
Seminar je zamišljen kao kratki pregled ovog zanimljivog područja sa stanovišta teorije, ali i praktičnih primjena u računarstvu.
UvodKonrad Burnik,Doktorski studij matematike, PMFTajnik udruge informatičara ABC info
Kristijan Burnik,Tajnik udruge informatičara BOŽO TEŽAK Contest manager ZG. Informatijada BOŽO TEŽAKAutor softverskog projekta "L O V R E"
Pregled sadržaja● Motivacija● Programski jezik Logo● Bodovanje na natjecanju● Metode usporedbe i vrednovanja● Raster usporedba● Vektorska usporedba● Normalizacija i normalizacijski algoritmi● Verifikacija i paralelizam● Vrednovanje● Primjene● Zahvale
Motivacija● Niz godina rada s osnovnoškolcima na području programiranja u
Zagrebačkom računalnom savezu.
● Veliki broj natjecanja i uspjeha u RH te inozemstvu.
● Niz uočenih problema i poteškoća na natjecanjima, često zbog nedostatka pravih alata (softvera).
Motivacija● Sustav za automatsko vrednovanje vektorskih slika otvara velik broj
izazova, kako s tehničke, tako i s pedagoške strane.
● U praksi nudi moćan alat za učenje i samostalni rad i razvoj učenika.
● Potiče na razmišljanje i otvara pitanja o tome na koji način umanjiti ulogu subjektivne procjene kod bodovanja uradaka te kako algoritamski primijeniti kriterije vrednovanja koji su do sada uglavnom bili podložni interpretaciji.
Programski jezik Logo● Interpreterski jezik nalik Lispu osmišljen 1967. s intelektualnim korjenima u
umjetnoj inteligenciji, matematičkoj logici i razvojnoj psihologiji.
● Podržava crtanje kornjačom što je iznimno intuitivno, razvija logiku i programerske sposobnosti kod početnika, a naročito djece predškolske i osnovnoškolske dobi.
● U praksi se najčešće danas koriste UCBLogo i FMSLogo.
Programski jezik LogoOsnovne naredbe (prve 3 radionice s početnikom):
csfd :d, bk :drt :k, lt :kpu, pdcircle :r
Programski jezik LogoJoš neke naredbe:
make :variable :valuerepeat :n :instructionsif :condition :instructionssetpos :p, posfillellipse :rx :rylist :a :bfirst :l, last :l, item :i :lbutfirst :l, butlast :lsort :l
Primjer natjecanjaZG. Informatijada BOŽO TEŽAK, programersko natjecanje za djecu i učenike od 6 do 19 godina
● tri razine: MINI (razredna nastava), AVVENIRE (osnovne škole) i MASTERS (olimpijski kandidati) ;
● dva programerska područja (Logo / C++) ;● 11 godina tradicije
Bodovanje na natjecanjima● Izvorni kod rješenja se učitava, pokreće sa test primjerima te uspoređuje s
pripadnom slikom službenog rješenja.
● Boduje se po zadanim kvalitativnim kriterijima (određeni elementi trebaju postojati).
● Na nekim razinama se rade i grupe bodova tako da kad neki dio slike nedostaje se ipak osvaja dio bodova. Veoma otvoreno interpretraciji...
● Izvorni kod se ne boduje.
Metode usporedbe i vrednovanja● Ručnim putem - čitav proces
● Ručnim putem uz jednostavnu automatizaciju
● Ručnim putem uz unaprijeđenu automatizaciju
● Potpuno automatizirano
Metode usporedbe i vrednovanjaNačelno se riješava problem kako odrediti jesu li dvije slike kvalitativno jednake:
Ako je moguće dvije rastezljive prozirne folije sa slikama (jedna crvena, a druga plava) namjestiti tako da se vidi samo ljubičasta boja.
http://test.ibt.zrs.hr/manager/
http://test.ibt.zrs.hr/manager/#/result/25/verification/11321
Metode usporedbe i vrednovanjaRučnim putem - čitav proces
Prednosti:- temeljitost (double-checking)- moguće bodovati po sadržaju/temi (npr. krov od kuće donosi 30% bodova)
Nedostaci:- mnogo vremena - bodovi se unose ručno- mogućnost previda, preskakivanja- često je moguće previdjeti odstupanje od službenog rješenja- subjektivnost dovodi do nekonzistentnosti
Metode usporedbe i vrednovanjaRučnim putem uz jednostavnu automatizaciju
Unaprijed pripremljena skripta koja pokreće natjecateljska rješenja.
Prednosti:- brže od potpuno ručnog procesa
Nedostaci:- bodovi se unose ručno- često je moguće previdjeti odstupanje od službenog rješenja- subjektivnost dovodi do nekonzistentnosti
Metode usporedbe i vrednovanjaRučnim putem uz unaprijeđenu automatizaciju
Osim slike ispitnog rješenja, crta se i slika službenog rješenja.
Prednosti:- manja mogućnost previda nepoklapanja slika
Nedostaci:- i dalje zahtijeva pripremu te koncentraciju kod bodovanja
Metode usporedbe i vrednovanjaPotpuna automatizacija
Prednosti:- gotovo trenutačna povratna informacija- lakše ispravljanje pogrešaka (reevaluacija)- ne zahtijeva ručni rad, samo kvalitetnu pripremu- zahtijeva strukturu i disciplinu kod definiranja zadataka- radi izvrsno kod potpuno ispravnih rješenja- bodovi se unose prema zadanim kriterijima i odstupanjima
Nedostaci:- bodovanje po sadržaju traži dodatni angažman kod pripreme- rubni slučajevi i dalje trebaju biti pregledani
Raster usporedba● Jedinica usporedbe je jedan piksel.
● Bez dodatnih optimizacija, uspoređuje se 1000x1000 sa 1000x1000 piksela. Ukupno 106 usporedba. Postotak poklapanja ne govori kvalitativno ništa ako je dozvoljena translacija.
● Transformacijama se gubi kvaliteta slike.
● Zahtjevaju se i kopije, svaka po 3 * 106 B.
Vektorska usporedbaPrednosti● U pravilu znatno manji broj objekata za usporediti.
● Transformacijom se ne gubi kvaliteta.
● Renderiranjem moguće prijeći u raster - kao zadnja provjera.
● Grupiranjem objekata moguće definirati sadržaj (npr. kotač od automobila).
Vektorska usporedbaGlavni problemi● Preciznost● Redoslijed crtanja● Pogreška relativne pozicije, rotacije i zrcaljenja● Skala crteža● Višepotezne i preklapajuće dužine● Obojane zatvorene površine● Usporedba grupa (sadržajnih elemenata)
NormalizacijaPostupak nad ispitnom i normiranom slikom koji omogućuje ispravnu kvalitativnu usporedbu.
● Objekti se transformiraju, grupiraju, sortiraju, spajaju i uklanjaju ne bi li na jednostavan način proveli usporedbu (usporedba dva slijeda).
● Svaki postupak normalizacije zadržava kvalitetu slike (reverzibilnost prema rasteru).
NormalizacijaNapomenaManja nespretnost kod nepovezanih pojmova - normalizacija i normiranost.
1. Normalizacija je postupak nad vektorskom slikom koji zadržava kvalitetu prema rasteru.
2. Normirana slika je unaprijed zadana vektorska slika službenog rješenja (bez ikakve normalizacije) - norma koja se zadovoljava/ispituje.
NormalizacijaPrimjer:
Normirana slika sadrži kvadrat stranice 100 u 1. kvadrantu.Ispitna slika sadrži kvadrat stranice 100 u 2. kvadrantu.
Dozvoljeno odstupanje: Pozicija lika na ekranu nije bitna.
Slike su kvalitativno iste. Moguće je translacijom postići da se slike poklapaju. Translacija je ovdje normalizacijski postupak.
Normalizacijski algoritmi● Preciznost
● Redoslijed crtanja
● Odstupanje u poziciji
● Odstupanje u rotaciji
● Višepotezne i preklapajuće dužine
● Obojane zatvorene površine
PreciznostVeoma rijetko predstavlja problem.
Algoritam: Zaokruživanje razriješava većinu poteškoća.Općenito: usporedba točaka i vektora uz zadani e.
Potencijalno problematično (vremenski složeno) kod traženja parova točaka udaljenih za d < e.
Redoslijed crtanja je uvijek proizvoljan: potreban je normalizacijski postupak prije usporedbe.
Algoritam:Grupirati objekte po tipu; O(n)Sortirati objekte unutar tipa; O(p log
2 p)
* p = broj objekata zadanog tipa
Redoslijed crtanja
Odstupanje u pozicijiČesto dozvoljeno odstupanje: Pozicija lika na ekranu nije bitna.
Rješenje: obje slike dovesti u istu točku te zatim usporediti.
Algoritam: Izračunati najmanji pravokutnik koji obuhvaća sliku; O(n)Izračunati poziciju donjeg lijevog vrha pravokutnika (dx, dy); O(1)Translatirati čitavu sliku u ishodište: ∀ T : T’(x - dx, y - dy); O(n)
Odstupanje u rotacijiRijetka pojava - dozvoljeno početnicima i u posebnim zadacima.
Glavni problem: Za koji kut zarotirati sliku prije usporedbe?
Dodatna poteškoća: Slučajevi s mnogo točaka.
Odstupanje u rotacijiAlgoritam:
Pronaći težište reprezentativnih točaka objekata; O(n)Translatirati sliku u težište; O(n)Izračunati konveksnu ljusku; O(n log
2 n)
Odabrati najudaljeniju točku T ljuske od ishodišta; O(p)Rotirati sliku za kut koji čini točka T s x-osi; O(n)
* gdje je p broj točaka konveksne ljuske
Odstupanje u rotaciji“Mini” optimizacije
Umjesto euklidske udaljenosti, koristiti kvadrat udaljenosti kod usporedbe.
(a2 + b2) vs √(a2 + b2)
Using Newton's method , the time complexity of calculating a root of a function f(x) with n-digit precision, provided that a good initial approximation is known, is O((logn)F(n)) where F(n) is the cost of calculating f(x)/f'(x)with n-digit precision
Višepotezne i preklapajuće dužineVeoma česta pojava.
Dužine koje su istog vektora smjera te u presjeku spajamo (merge).Ostvarujemo unije i uklanjamo višak.
Višepotezne i preklapajuće dužineAlgoritam:
Sortiramo dužine po vektoru smjera, zatim po točkama leksikografski; O(n log
2 n)
Ako je n < 2 gotovi smo.Sve dok postoji presjek:
Za sve neobrisane dužine A od prve do predzadnje:Za neobrisane dužine B u nizu nakon A, dok A ∩ B ≠ 0,
Ako A ∩ B ≠ 0:A postaje A ⋃ BObriši B
O(n2)
Višepotezne i preklapajuće dužinePresjek dužina istog vektora smjera
Osigurati: sA ≤ e
A ∧ s
B ≤ e
B
Ocijeniti: v
A = v
B ∧ ( s
A ≤ s
B ≤ e
A ∨ s
B ≤ s
A ≤ e
B )
O(1)
sA
eA
sB
eB
sA
eA
sB
eB
Višepotezne i preklapajuće dužineLeksikografska usporedba točaka
s ≤ e ≡ (xs ≤ x
e) ∧ ( (y
s ≤ y
e) ∨ (x
s = x
e ∧ y
s ≤ y
e) )
O(1)
Obojane zatvorene površine“Flood Fill“
● Ispunjava zatvorenu površinu pikselima zadane boje.
● Jedini rasterski objekt!
● Može sačinjavati veliki broj točaka.
● Nerijetko se stapa u unije.
Obojane zatvorene površinePrijelaz s rastera na vektorski objekt
O ≡ izvor (točka s koje kreće flood fill)A ≡ slika prije bojanjaB ≡ slika nakon bojanjaF ≡ upravo obojana regija slike = B - A
Na F provesti BFS algoritam od izvora sve do rubova obojane regijeIzdvojiti i reducirati skup točaka (uzeti npr. svaku treću) na rubovima = F’
F’ čini poligon (ovojnicu) obojanog rastera.
F’ je vektorski objekt.
Obojane zatvorene površineUsporedba ovojnica
N ≡ normirana ovojnicaF’ ≡ ispitna ovojnicaOpćenito: Ispitujemo je li poligon F’ čitav unutar N.
Dovoljni uvjet za poklapanje konveksnih ovojnicaK(S) ≡ konveksna ljuska skupa SF’’ = reducirana ispitna ljuska (izvana “ošišana” za 1 piksel)Skup F’’ mora čitav ležati unutar N: K(F’’ U N) = NReducirana ispitna ljuska F’’ je važna u slučaju različitog normiranog i ispitnog izvora bojanja (nerijetko), budući drukčije točke mogu sačinjavati istu ovojnicu.
O(n log2 n)
Verifikacija i paralelizamPod verifikacijom se podrazumijeva računanje najboljeg ishoda za zadano ispitno rješenje, u tom procesu se provodi niz usporedbi s različitim kombinacijama normalizacijskih postupaka. Rezultati verifikacije uključuju primjenjene normalizacijske postupke, broj uparenih objekata te višak i/ili manjak istih.
Sa stanovišta ukupnog sustava za provjeru rješenja, verifikatori su idealna razgraničenja paralelizma budući se za N odabranih normalizacijskih postupaka provodi najviše 2N verifikacija.
Primjer: CompactLines + Scale
VrednovanjeNa temelju rezultata svih provedenih verifikacija, odabiru se najpogodniji te se po zadanim kriterijima računaju bodovi za takvo rješenje. Ovo je zadnji korak prije unosa bodova.
PrimjeneL O V R EReal-time Logo vrednovač (evaluator), Zagrebačkog računalnog saveza
● Glavna i najvažnija primjena leži u radu s darovitima.
● Opisani algoritmi postaju sastavni dio sustava za automatsko vrednovanje slikovnih izlaza u Logo programima.
● Radionice i natjecanja iz programiranja.
Primjene - vektorski zapis
[evaluate start 0 529326031]
[line [0 0] [0 100] [pendown paint [1 1] [0 0 0] [1]]]
[line [0 100] [100 100] [pendown paint [1 1] [0 0 0] [1]]]
[line [100 0] [100 100] [pendown paint [1 1] [0 0 0] [1]]]
[line [0 0] [100 0] [pendown paint [1 1] [0 0 0] [1]]]
[evaluate end 0 529326046]
ZahvaleSvima prisutnima na seminaruPMF - Matematičkom odjelu
Posebno zahvaljujemo:
Zagrebačkom računalnom savezu www.zrs.hrUdruzi informatičara Božo Težak, udruga članica ZRS-a