UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO Sistem za avtomatizirano optično odčitavanje električnih števcev Magistrska naloga Boštjan MUROVEC Zahvala Za strokovno pomoč in prijateljsko vzpodbudo pri nastajanju magistrske naloge se iskreno zahvaljujem svojemu mentorju prof. dr. Stanislavu Kovačiču, dipl. ing., ki me je kot podiplomskega študenta skrbno spremljal, usmerjal in mi ustvaril odlične delovne pogoje, v katerih sem z veseljem raziskoval in se strokovno izpopolnjeval. Zahvaljujem se tudi kolegom in prijateljem Franciju Lahajnarju, dipl. ing., Marku Knezu, dipl. ing. ter Petru Roglju, dipl. ing. za prijetno in stimulativno delovno vzdušje v laboratoriju ter za številne izmenjave strokovnih izkušenj. Posebno mesto v zahvali posvečam prijatelju mag. Antonu Poznetu ml., dipl. ing. za strokovne nasvete in neprecenljivo pomoč pri strojni opremi, ki sem jo potreboval za raziskave. Na zadnjem, a v nobenem pogledu manj pomembnem, mestu bi se rad iskreno zahvalil svojim staršem, ki so mi v času študija vsestransko pomagali, zaupali vame ter me vzpodbujali. Boštjan Murovec Povzetek Pričujoče delo podaja rezultate raziskav in razvoja avtomatiziranega odčitavanja električnih števcev s pomočjo kamere in osebnega računalnika. Potreba po sistemu, ki bi opravljal to nalogo, se je pojavila v tovarni, kjer električne števce izdelujejo. Preizkus teh naprav je skoraj v celoti avtomatiziran, glavno oviro do popolne avtomatizacije pa predstavlja končni preizkus proizvodov, sestavni del katerega je odčitavanje njihovih vrednosti, ki ga v odsotnosti ustreznega sistema za odčitavanje opravlja človek. Tak način kontrole je že v osnovi manj zanesljiv od avtomatiziranega, saj je rutinsko in ponavljajoče se odčitavanje vrednosti števcev utrudljivo in zahteva od človeka veliko koncentracije. Iz tega sledi, da se je praktično nemogoče izogniti določenemu številu napak pri kontroli proizvodov, ki so težko ugotovljive in niso naknadno dokazljive. Postopek avtomatskega odčitavanja električnih števcev, kot ga v tem delu predlagamo, izpolnjuje pričakovanja industrijskega okolja po hitrem, robustnem, ponovljivem in točnem delovanju. S tem se odpira možnost popolne avtomatizacije proizvodnje teh naprav. Laboratorijski testi kažejo, da bodo končni produkt lahko uporabljali tudi serviserji električnih števcev z uporabo ročnih odčitovalnikov, kjer so delovni pogoji manj predvidljivi kot v sami proizvodnji. Delo podrobno opisuje strukturo sistema ter postopke, ki nas od zajete slike pripeljejo do končnega rezultata. Poleg prijemov, ki smo jih pri odčitavanju uporabili, so opisane še alternativne rešitve, ki smo jih v toku raziskav preizkusili in zavrnili, ker so se izkazale za manj uspešne. Kljub temu nam pomagajo bolje razumeti delovanje sistema ter nam omogočajo popolnejši pregled nad obravnavano problematiko. 1 Uvod Potreba po optičnem odčitavanju električnih števcev izvira iz potrebe po popolni avtomatizaciji proizvodnje teh naprav. Preden električni števec zapusti tovarno, ga je potrebno preizkusiti; vrednosti števcev se odčitajo pred samim pričetkom testiranja, nato se jih izpostavi električni obremenitvi, nakar ponovno sledi odčitavanje ter ugotavljanje, ali je izmerjena vrednost enaka pričakovani. Tovarna izdela več tisoč števcev dnevno, kar pomeni, da je potrebno število odčitavanj zelo veliko. Ker do sedaj sistem avtomatskega zajema vrednosti ne obstaja, morajo to delo opravljati ljudje, kar ima za posledico precej slabosti, ki so opisane v nadaljevanju. Avtomatski zajem nam odpira možnost odpraviti te slabosti in s tem dvigniti kvaliteto proizvodnje. V uvodnem poglavju bomo podali razliko med električnimi števci z analognim in digitalnim prikazom (poglavje 1.1) ter opisali čelno ploščo analognega števca, ki nas v tem primeru zanima (poglavje 1.2). Predstavili bomo tudi potek preizkusa električnih števcev brez avtomatskega zajema njihovih vrednosti (poglavje 1.3), slabosti, ki iz tega izhajajo (poglavje 1.4), ter prednosti, ki jih pričakujemo od avtomatizacije postopka (poglavje 1.5). Sledi groba specifikacija zahtev sistema za odčitavanje (poglavje 1.6). 1.1 Električni števci in prikaz vrednosti Glede na princip merjenja energije delimo električne števce na indukcijske in elektronske. Indukcijski prikazujejo izmerjeno vrednost s pomočjo rotacijskega števnika (slika 1 levo), elektronski pa z LED prikazovalnikom (slika 1 desno) ali redkeje tudi z rotacijskim števnikom. Rotacijski števnik je sestavljen iz niza koleščkov (dekad), na katerih so natisnjene števke. Kolešček z najmanjšo vrednostjo (skrajno desni) se vrti s kotno hitrostjo, ki je premosorazmerna trenutni moči, ki jo števec meri. Ostali koleščki so z njim povezani preko mehanskega prenosa in naslednji se premakne za eno števko naprej, ko predhodni naredi celoten obrat. Na ta način je doseženo, da števnik prikazuje porabo električne energije, ki jo matematično izrazimo kot časovni integral trenutne moči. Elektronski električni števci so zgodovinsko gledano novejši in imajo dolgoročne možnosti zamenjave indukcijskih. Kljub temu se v tem trenutku indukcijski števci proizvajajo v večjem številu. Slika 1: Električni števec z rotacijskim števnikom (levo) ter prikazovalnikom LCD (desno) Magistrska naloga je posvečena avtomatskemu odčitavanju števcev z rotacijskom prikazovalnikom, kar je neprimerno težje izvedljivo kot odčitavanje prikazovalnikov LCD (poglavje 4.1). Nekateri postopki, ki smo jih razvili, so uporabni tudi pri realizaciji odčitavanja slednjih (zlasti določanje položaja števnika, poglavje 1). V nadaljevanju bomo imeli v mislih analogne števce, ko bomo uporabljali izraz električni števec. 1.2 Čelna plošča električnega števca Nekaj primerov čelnih plošč vidimo na sliki 2. Opazimo lahko, da se med seboj precej razlikujejo, kljub temu pa imajo nekatere bistvene lastnosti skupne in človek lahko na vsaki izmed njih z lahkoto prepozna posamezna področja, kot so števnik, kotva in serijska številka. S stališča optičnega odčitavanja električnih števcev sta zlasti zanimivi področji števnika in serijske številke. Področje kotve za nas ni zanimivo, ker sta njen zajem in kontrola že rešeni (omenjeno v poglavju 1.3). Problematiki odčitavanja serijske številke se v tem delu ne bomo posvečali, ker njen razvoj poteka vzporedno [L1]. Za nas je interesantno področje števnika, katerega vrednost moramo razbrati. Slika 2: Nekaj primerov čelnih plošč števcev z enim števnikom Opazimo, da imajo vsi števniki črno ozadje ter bele števke. Vidimo lahko tudi, da so števke predstavljene večinoma z arabskimi številkami, možno pa je, da se nahajajo na zadnjem koleščku števke, zakodirane z izbranimi vzorci (slika 3). Slika 3: Števec z arabsko (levo) ter kodirano (desno) decimalko Z vidika problematike optičnega odčitavanja vrednosti se čelne plošče razlikujejo v položaju števnika na njih, razlike pa so tudi med grafičnimi prikazi števnikov. Tako lahko opazimo, da imajo nekatere izvedbe le-teh črn ali črno-rdeč rob, druge imajo okoli sebe ozek bel pas, šele nato so obrobljene. Nekateri števniki pa nimajo pravokotne obrobe, ampak so od ostalega dela čelne plošče razmejeni z vodoravnimi črtami. Omenimo še ločevanje zadnje števke od ostalih z decimalno zarezo, ki je največkrat prisotna; njeno vlogo lahko opravljata tudi različni barvi ali pa grafične ločitve med zadnjo in ostalimi števkami sploh ni. Vse te razlike je pri odčitavanju potrebno upoštevati, sicer bi sistem deloval pravilno le z majhnim številom izvedb števnikov. Veliko števcev ima vgrajena dva števnika (slika 4). Njuna lega na čelni plošči variira od modela do modela. Odčitavanje teh števcev rešujemo z dvojnim zajemom slike, pri čemer je kamera vsakič postavljena tako, da je na sliki v celoti viden ustrezen števnik. Realizirali smo sicer detekcijo položaja ter odčitavanje vrednosti več števnikov, vendar smo ugotovili, da bi morali sliko zajemati pri premajhni povečavi, ki ne bi omogočala odčitavanja z zadovoljivo natančnostjo, če bi hoteli doseči, da sta oba števnika vidna v celoti. Slika 4: Nekaj primerov čelnih plošč z dvema števnikoma 1.3 Končni preizkus električnih števcev Števci, ki vstopajo v fazo preizkusa (velikostnega reda štirideset izdelkov naenkrat), se nahajajo na posebnih nosilcih in so pritrjeni v vodoravni vrsti v enakomernih presledkih. Tipično obstajata dva niza le-teh, ki se nahajata en nad drugim (slika 5). Slika 5: Števci na nosilcih med končnim preizkusom Pred samo izvedbo preizkusa se odčitajo vrednosti vsakega števca posebej. To opravi operater tako, da se s prenosnim terminalom premika od števca do števca, odčitava vrednosti s prostim očesom ter jih preko posebne tipkovnice vnaša v računalnik. Odčitavanju vrednosti sledi fantomska obremenitev, ki ima za posledico, da se števci pričnejo vrteti. V toku te faze se s posebnimi optičnimi glavami kontrolira pravilno delovanje kotve (vsak števec ima svojo optično glavo). Po koncu obremenitve zopet prevzame vlogo operater, ki ponovno odčita ter vnese v računalnik vrednosti vseh števcev. Na podlagi odčitavanj vrednosti ter podatkov, ki jih posredujejo optične glave, se določi, kateri števci dosegajo zahtevani točnostni razred in katere je potrebno dodatno umeriti ali celo odstraniti iz prodaje. 1.4 Slabosti ročnega odčitavanja Ob upoštevanju dejstva, da izdela tovarna več tisoč števcev dnevno in da mora zaradi ekonomskih razlogov en človek v delovnem času odčitati veliko število le-teh, lahko zaključimo, da je to delo precej utrudljivo, zahteva od operaterja visoko stopnjo koncentracije v daljšem obdobju ter naprezanje oči. Poudariti moramo, da ni dovolj razpoznati posameznih števk, ki jih koleščki števnika prikazujejo, ampak je potrebno vsaj zadnji kolešček odčitati do posameznega razdelka natančno (vsaka števka je graduirana z desetimi razdelki, torej sto razdelkov na celoten kolešček; poglavje 4.2). Ker so koleščki oz. števke na njih zelo majhne (celotna višina števke je cca. 1 cm, kar pomeni, da je razdalja med dvema razdelkoma približno 1 mm), oči pri odčitavanju precej trpijo. Tipična frekvenca odčitavanja je en odčitek na tri do štiri sekunde (skupaj s premikanjem od števca do števca), zato morajo operaterji odčitano vrednost določiti relativno hitro. Sklepamo lahko, da je v daljšem časovnem obdobju težko obdržati zahtevano natančnost odčitavanja (operater lahko zelo hitro napačno oceni oz. spregleda razdelek), poleg tega se lahko pojavijo napake pri samem vnosu odčitanih vrednosti v terminal. Posledica tega je določeno število dobrih števcev, ki so razglašeni za slabe, ali (redkeje) da slabi števci uspešno prestanejo testiranje. V prvem primeru se povečajo stroški proizvodnje, v drugem gre slab izdelek na tržišče in manjša zaupanje kupcev v blagovno znamko. 1.5 Prednosti avtomatskega odčitavanja Pričakujemo, da bomo z avtomatizacijo zajema vrednosti števcev odpravili slabosti sedanjega postopka končnega preizkusa (poglavje 1.4) in s tem izboljšali kvaliteto samega testiranja. Odčitovalni sistem bo deloval z nespremenjeno natančnostjo v daljšem časovnem obdobju (ne bo podvržen stresom, utrujenosti, upadu koncentracije, ...), odpravljena bo nevarnost napak ob vnašanju odčitanih vrednosti v terminal, odpira se tudi možnost arhiviranja slik števnikov v času zajema in s tem naknadna dokazljivost pravilnosti oz. napačnosti odčitavanja, kar je v primeru ročnega odčitavanja praktično neizvedljivo. 1.6 Specifikacija zahtev sistema Da bi sistem v praksi zaživel, morajo biti njegove zmožnosti odčitavanja boljše ali vsaj enake človekovim. Poleg tega mora biti praktičen za uporabo in integracijo v industrijsko okolje. Kot pri vseh industrijskih aplikacijah je tudi v tem primeru zelo pomemben ekonomski vidik oz. cena realizacije sistema ter njegovega vzdrževanja. Opisane zahteve lahko strnemo v naslednje točke: • natančnost odčitavanja: odčitana vrednost lahko odstopa manj kot za en razdelek zadnjega koleščka števnika (poglavje 4.2); • hitrost odčitavanja: v primeru realizacije sprotnega odčitavanja mora biti čas le-tega pod eno sekundo, možna je tudi izvedba zajema slik števcev v paketu ter naknadnega odčitavanja; • praktičnost: sistem mora biti čim manj občutljiv na motilne vplive okolja, poleg tega morajo biti postopki, ki jih moramo izvesti pred začetkom uporabe (npr. učenje oblike številk; poglavje 1), enostavni za izvedbo; • preprosta integracija v proizvodni proces: sistem odčitavanja mora z ostalimi sistemi v proizvodnji komunicirati preko protokolov, ki jih le-ti razumejo, izdajati rezultate v primerni obliki za nadaljnjo obdelavo ter z lastno prisotnostjo čim manj spremeniti obstoječe proizvodne postopke; • ekonomičnost; oprema, ki sistem sestavlja, naj bo čim cenejša. Namesto dragih in kvalitetnih kamer naj se uporablja cenejšo opremo; manjša kvaliteta strojne opreme naj se v čim večji meri kompenzira programsko, ker obstaja možnost uporabe velikega števila kamer pri zajemu enega nosilca. Pri razvoju ročnega odčitovalnika kot pripomočka za servisiranje je potreba po hitrosti še posebej izrazita zaradi ergonomične uporabe, saj v tem primeru ni možno izvesti naknadnega odčitavanja na podlagi zajetih slik, ampak se od sistema pričakuje izdaja rezultata z minimalnimi, v kolikor je mogoče neopaznimi, zakasnitvami. V nasprotnem primeru bi bilo delo z napravo utrudljivo. Magistrska naloga opisuje pot do zastavljenih ciljev. V nadaljnjih poglavjih si bomo natančno ogledali, na kakšen način je opisane zahteve možno realizirati. 2 Splošno o zasnovi sistema Sistem optičnega odčitavanja električnih števcev je zasnovan tako, da ga lahko obravnavamo kot dva modula. Prvi obsega strojno opremo, drugi predstavlja programsko opremo, ki obdeluje vhodne podatke ter poda želeni rezultat. Strojni del optičnega odčitovalnika sestavlja osebni računalnik, kamera za zajem slike števca, luč za osvetljavo ter pomožni pribor (senčilo, ki odpravlja motnje ostalih izvorov svetlobe, stojalo za kamero, razni nosilci, kabli za komunikacijo z ostalimi aparaturami, ...). Naloga strojne opreme je ob pravem trenutku zajeti sliko števca ter jo predati programski opremi, ki iz nje izloči želeno informacijo - odčita vrednost števca na sliki. V tem poglavju bomo podali makroskopski opis sistema (poglavje 2.1); ogledali si bomo strojno opremo, ki smo jo uporabljali med razvojem in testiranjem (poglavje 2.2). Oprema podobnih zmogljivosti in karakteristik bo verjetno uporabljena tudi v končni izvedbi sistema, zato podajamo nekaj hitrostnih testov (poglavje 2.3), ki smo jih dosegli z njo. Nadalje bomo opisali način delovanja sistema, za katerega je bil le-ta predviden (končni preizkus izdelkov v tovarni, poglavje 2.4), ter ostale možnosti uporabe, ki se nakazujejo (poglavje 2.5). 2.1 Makroskopski opis sistema Zaradi enostavnejše in s tem cenejše uporabe sistema je pomembno, da je programska oprema v čim večji meri realizirana neodvisno od strojne. Taka zasnova je potrebna, ker lahko slike števcev zajemamo v tovarni z eno kamero, ki se pomika od števca do števca. Druga možnost, ki se nam odpira, je uporaba posebne kamere za vsak števec na nosilcu (podobno kot pri fotoglavah za kontrolo kotve). Nenazadnje pa lahko zajemamo slike števcev tudi s prenosno kamero na servisu ali pri odčitavanju porabe električne energije v gospodinjstvih. Prednost neodvisnosti programske opreme od načina uporabe sistema je poenostavljen razvoj (izdelati moramo samo eno verzijo programa), testiranje (zagotoviti več brezhibnih verzij je zanesljivo težje kot eno samo) ter vzdrževanje. Pripomnimo naj, da popolne neodvisnosti med strojno in programsko opremo ne moremo doseči. Izpostavimo naj dva modula, kjer je povezava izrazita: modul za delo s kamero ter kontrola zajema slike in izdaje rezultata. Prvega je potrebno spremeniti, če preidemo na drugo kartico za zajem slik; drugi realizira protokol med odčitovalnim sistemom ter zunanjim svetom in je praktično v celoti odvisen od namena uporabe. Koncept uporabe sistema prikazuje slika 6. Izhodišče postopka predstavlja števec kot objekt odčitavanja. Njegovo sliko lahko zajamemo na različne načine (na sliki so nakazani trije primeri: serijsko odčitavanje števcev na nosilcih, zajem slik za poznejše odčitavanje, kar lahko storimo z drugo kamero, ter ročno odčitavanje na terenu ali servisu s pomočjo prenosne kamere). Zajeta slika se preda programski opremi, ki teče na osebnem računalniku, in se tu obdela - določi se vrednost, ki jo števec kaže. Slika 6: Splošni koncept uporabe sistema Vidimo, da programska oprema deluje neodvisno od načina zajema slike ter s tem načina uporabe, saj kot vhodni podatek uporabi izključno zajeto sliko, ki mora biti ustrezne kvalitete. Če to ni izpolnjeno, potrebujemo dodatne postopke predobdelave, s katerimi vhodno sliko izboljšamo. S tem koncepta neodvisno realizirane programske opreme ne pokvarimo bistveno, saj lahko fazo predobdelave dodamo na začetek postopka odčitavanja, ne da bi s tem spremenili potek nadaljnjih korakov. Način podaje rezultata, ki sledi po uspešnem ali neuspešnem odčitavanju vrednosti (npr. ker števca ni bilo na predvidenem mestu na nosilcu), se izvrši na način, ki je specifičen namenu uporabe. V primeru končnega preizkusa v tovarni se rezultat posreduje sistemu, ki ugotovi, ali je konkretni števec dober; pri ročnem odčitavanju se vrednost sporoči v bazo ali izpiše na zaslonu naprave. Na tem mestu ne bomo podrobno opisovali možnih načinov zajema ali izdaje rezultata, ker sistema še nismo prenesli v industrijsko okolje. 2.2 Strojna oprema V tem poglavju bomo opisali tisti del strojne opreme, ki ga potrebujemo za realizacijo sistema neodvisno od namena uporabe. Podali bomo napotke za tehnično pravilno ter ekonomsko racionalno izbiro le-te. 2.2.1 Osebni računalnik Analiza zajete slike se vrši v osebnem računalniku, ki mora biti dovolj zmogljiv, da zadosti hitrostnim zahtevam sistema (poglavje 1.6). Čas odčitavanja slike lahko razdelimo na dva dela: interval, v katerem se slika zajame, in interval, v katerem poteka sama analiza in določanje vrednosti. Groba ocena razmerja trajanja zajema slike v celotnem času odčitavanja je 41% na računalniku PentiumII/266, 28% na Pentium/233 ter 22% v primeru uporabe Pentiuma/166 (tabela 1, str. 18). Meritve, ki smo jih izvedli, so pokazale, da je poleg takta procesorja zelo važen podatek tudi hitrost sistemskega vodila . Razlog je v tem, da zajem slike in s tem njen prenos v delovni pomnilnik računalnika poteka s hitrostjo vodila. Poleg tega začetni postopki analize, ki trajajo večino časa, delujejo predvsem z vsebinami pomnilniških prostorov, kjer se nahaja začetna slika ter vmesni rezultati. To dejstvo je pri nakupu potrebno upoštevati, zato da ne kupimo računalnika, ki ima veliko razmerje notranjega procesorskega takta proti zunanjemu, ker samo z notranjim taktom ne pridobimo več kot cca. 50% časa. Pri razvoju smo uporabljali računalnik PentiumII/266 z 64 MB pomnilnika, ki ima 66 MHz zunanje vodilo, kar povsem zadostuje tudi v praksi v primeru, da računalnik analizira slike zajete z eno kamero. Tudi cenovno so ti računalniki dostopni. 2.2.2 Kamera za zajem slike Sistem optičnega odčitavanja električnih števcev uporablja sivinsko sliko, zato lahko uporabljamo cenejše kamere kot v primeru barvnih slik. V laboratoriju smo uporabljali modele: JVC TK-5130 (sivinska), SONY XC-77CE (sivinska) ter SONY XC-0035 (barvna, ki je delovala v sivinskem načinu). Vse tri kamere zagotavljajo v našem primeru uporabe dovolj kvalitetno sliko, čeprav nekatere spadajo v slabši kakovostni razred, zato smatramo, da je nakup dragih in zelo kvalitetnih kamer nepotreben. 2.2.3 Kartica za zajem slike Osebni računalnik sprejme zajeto sliko s kamere preko posebne kartice, ki signal digitalizira ter ga prenese v delovni pomnilnik računalnika. Kvaliteta zajete slike je neposredno odvisna od obeh členov: kamere in kartice, zato je smiselno, da oboje izberemo iz podobnega kakovostnega razreda. Od kombinacije kamere in kartice dodatno zahtevamo, da je število slikovnih elementov po vertikali in horizontali deljivo z osem. Zahteva izhaja izključno iz postopka odčitavanja, ki smo ga razvili, saj ob tej predpostavki nekatere algoritme lahko optimiramo na nivoju samega programiranja. Omejitev ni moteča, saj večina standardnih ločljivosti izpolnjuje to zahtevo. V laboratoriju smo uporabljali kartico Matrox Meteor (vodilo PCI), ki zagotavlja solidno sliko z malo šuma (ločljivost slike je bila 768x576 slikovnih elementov) in ima podporo za barvno kamero, ki je v našem primeru ne potrebujemo. 2.3 Nekaj hitrostnih testov V tem poglavju podajamo grobo oceno hitrosti, ki jo lahko od sistema pričakujemo. Za meritve smo uporabili v poglavju 2.2 opisano opremo. Rezultati so prikazani v tabeli 1, pri čemer moramo poudariti, da se vrednost odčitavanja spreminja glede na vsebino slike, zato prikazanih podatkov ne smemo interpretirati, kot da podajajo natančno karakteristiko sistema. Testni vzorec, ki smo ga uporabili pri meritvah, si lahko ogledamo na sliki 7, str. 28. Natančnejšo analizo hitrosti bomo podali v poglavju 1, kjer bomo tudi podrobneje opisali pogoje testiranja. Zajem (s) Odčitavanje (s) Celotni čas (s) % časa za zajem PentiumII/266, 64Mb 0,08 0,12 0,20 41% Pentium/233, 64MB 0,08 0,21 0,29 28% Pentium/166, 64Mb 0,08 0,29 0,37 22% Tabela 1: Ocena hitrosti sistema na različnih računalnikih Celotni čas smo razbili na čas zajema slike in čas odčitavanja, zato ker prvega lahko zmanjšamo samo s hitrejšo strojno opremo, zadnjega pa tudi z boljšimi algoritmi odčitavanja in analize slike. Pri tem je pomembno, kolikšen delež celotnega časa porabi sam zajem (zadnji stolpec tabele 1), saj lahko na ta način ocenimo, koliko truda je vredno vložiti v pohitritev algoritma odčitavanja, preden pričnemo razmišljati o dražji opremi. Iz tabele 1 je razvidno, da je čas potreben za zajem slike enak pri vseh računalnikih, ki smo jih preizkusili, ker so vsi imeli sistemsko vodilo 66 MHz in enako kartico za zajem. Pri počasnejših Pentium računalnikih čas zajema slike predstavlja majhen delež v celotnem času odčitavanja, ko pa procesorsko moč povečujemo, prične zajem predstavljati ozko grlo. 2.4 Uporaba sistema za končni preizkus Glavni problem, ki ga je potrebno rešiti, preden pričnemo sistem uporabljati v tovarni za končni preizkus, je, kako dovolj hitro zajemati slike števcev na nosilcih. Ponujata se dve rešitvi: uporaba ene kamere in premični nosilec, ki jo bo premikal od števca do števca oz. uporaba ločene kamere za vsak števec posebej. Cenovno je prva varianta dosti bolj ugodna, saj ne prihranimo samo pri nakupu velikega števila kamer (devetintrideset ob predpostavki, da je kapaciteta nosilca štirideset števcev), pač pa moramo v drugem primeru za vsako kamero zagotoviti poseben računalnik in kartico za zajem slike ali pa sistemu dodati posebno strojno opremo, ki bo signale različnih kamer multipleksirala. V primeru uporabe ene kamere hitrost odčitavanja (programske opreme) ne bi bila kritična, saj bi lahko zajeto sliko analizirali v času, ko bi se kamera pomikala do naslednjega števca, kar zanesljivo ne bi bilo manj kot nekaj sekund, saj se mora celoten nosilec kamere pospešiti, ustaviti in njegove vibracije iznihati, preden lahko zajamemo sliko zadovoljive ostrine. Glede na to, da v tem trenutku opravljajo to delo operaterji s podobno hitrostjo, smatramo, da ima ta način uporabe sistema precej ugodnejše razmerje cena/učinek kot izvedba z več kamerami in je zato tudi zanimivejši. Možno je tudi realizirati sistem z eno kamero v večjem delu proizvodnje, dražjo izvedbo pa samo na nekaj izbranih mestih, če bi se izkazalo, da je odčitavanje na določenih delih proizvodnje ozko grlo. 2.5 Drugi načini uporabe V tem trenutku se nakazujeta dve dodatni možnosti uporabe, ki sta tehnično in realizacijsko gledano zelo podobni. Sistem bi lahko opremili s prenosno kamero in računalnikom. Na ta način bi dobili ročni odčitovalnik, ki bi ga lahko uporabljali serviserji pri kontroli in umerjanju števcev ali inkasanti na terenu. S tehničnega stališča je razlika samo v načinu predaje in tolmačenja rezultatov. Npr.: pri umerjanju izdelkov bi lahko sistem avtomatično ugotovil, za koliko je potrebno števec korigirati, ter mogoče tudi sam opravil korekturo, če bi v ta namen realizirali tudi poseben izvršni člen, ki bi bil sposoben spreminjati nastavitve števca. Pri odčitavanju porabe v gospodinjstvih bi sistem odčitavanja hkrati z vrednostjo števca poslal bazi podatkov kodo porabnika. S tem bi dobili sistem popolnoma avtomatiziranega obračunavanja porabe električne energije. 3 Izbira metod obdelave slik Na področju računalniškega vida je bilo objavljeno veliko metod za obdelavo, analizo in razumevanje vizualne informacije. Nekatere so bile razvite kot splošno namenske in z njimi lahko obdelujemo široko množico slik, druge so specializirane za določeno področje uporabe v povezavi s slikami z vnaprej pričakovanimi lastnostmi, ker se naslanjajo na a priori znanje o njihovi vsebini. Pogosto poteka razvoj določene aplikacije računalniškega vida tako, da se že znane metode vzame kot izhodišče ter se jih prilagodi oz. optimira za specifičen namen uporabe. Na tem mestu podajamo kratek pregled postopkov obdelave digitalnih slik, ki so sorodni in vsaj delno uporabni pri obdelavi slikovnih vzorcev električnih števcev ter pojasnjujemo odločitve o njihovi izbiri za reševanje našega problema. V poglavju 3.1 nakažemo možnosti za uporabo postopkov predobdelave zajetih slik. Uporabo upragovljanja pri segmentaciji slike opisujemo v poglavju 3.2. Nazadnje omenjamo postopke optičnega razpoznavanja znakov (ang. OCR - optical character recognition), ki se uporabljajo pri razpoznavanju besedila ali odčitavanju serijskih številk in drugih oznak (poglavje 3.3). 3.1 Predobdelava digitalnih slikovnih vzorcev Večina aplikacij računalniškega vida uporablja ustaljeno shemo predobdelave vhodnih slik, ki so lahko zajete s kamero ali katerokoli drugo napravo za zajem (npr. scanner, rentgen, ...). Prva faza obdelave je obnavljanje zajete slike (poglavje 3.1.1), ki ga uporabljamo v primeru, ko poznamo matematični model popačenja, ki ga vnaša slikovni podsistem. Če temu ni tako oz. če ocenimo, da moramo slikovni vzorec nadalje izboljšati, uporabljamo postopke izboljšanja kakovosti (poglavje 3.1.2). 3.1.1 Obnavljanje zajete slike Prva faza obdelave je obnavljanje zajete slike, s katero skušamo zmanjšati popačenja, ki jih v vzorec vnese sistem senzorjev. Največkrat ga izvajamo, ko je vzorec geometrijsko popačen (npr. relativni premik objekta glede na kamero med zajemom, napake leč, ...). Obnavljanje temelji na poznavanju matematičnega modela popačenja in izvajanju temu inverzne operacije. Podrobni opis najdemo v [4], kjer sta podana tudi modela popačenja v primeru neostre slike (slikovna ravnina leži izven gorišča optičnega sistema) ter nejasne slike zaradi premika snemalne naprave med zajemom. Predvideni načini uporabe sistema za optično odčitavanje električnih števcev (poglavji 2.4 in 2.5) temeljijo na predpostavki, da je sistem pred uporabo izostren in da kamera med zajemom ne spreminja svoje lege glede na števec. Zato smatramo, da postopkov obnavljanja slike v osnovni izvedbi sistema ne potrebujemo. Če bi se izkazalo, da temu ni tako (npr. kamera bi se neprestano gibala med zajemi slik števcev na nosilcu), lahko to fazo obdelave naknadno dodamo sistemu pred ostale korake postopka odčitavanja (poglavje 5.2). 3.1.2 Izboljšanje kakovosti slike Postopki izboljšanja kakovosti ne potrebujejo natančnega matematičnega modela popačenja. Njihova paleta je široka [4]. Podmnožica teh postopkov je glajenje slike z množico filtrov, s katerimi zmanjšujemo šum na sliki, poudarjamo robove na njej, ali izboljšamo kako drugo globalno lastnost slike (sprememba kontrasta, izostritev, ...). Sistem optičnega odčitavanja električnih števcev uporablja od tega le najpreprostejše zmanjšanje šuma; pri izdelavi podvzorčene slike (poglavje 6.1) povprečimo področja 8x8 slikovnih elementov, kar deluje kot nizkopasovni filter. 3.2 Segmentacija slike Sliko električnega števca, zajeto z namenom odčitavanja vrednosti števnika, lahko opredelimo kot zapleten vzorec, ki ga kot takega ne moremo razpoznavati s prileganjem, t.j. s primerjanjem zajete (in predobdelane) slike z vnaprej naučenimi primeri slik (učno množico vzorcev) [4]. Odčitavanje vrednosti na tak način bi zahtevalo neobvladljivo veliko število predhodno zajetih slik števca. Obsežnost naloge zmanjšamo tako, da na sliki lociramo posamezne števke (poglavje 1), jih poravnamo, t.j. postavimo v normalno stanje (poglavje 1), ter jih razpoznavamo (jim določamo vrednosti) z eno od možnih izvedb prileganja. Slike posameznih števk torej obravnavamo kot preproste vzorce. Da bi posamezne števke lahko locirali, moramo izvesti segmentacijo slike. Poslužujemo se upragovljanja (postopek, kjer vse slikovne elemente s pomočjo praga osvetljenosti razvrstimo v dva razreda: temno in svetlo področje), saj je slikovni vzorec električnega števca zelo primeren za tako razčlenjevanje, v kar se lahko prepričamo s pogledom na sliko 7, str. 28. Vidimo, da so števke na sliki izrazito svetle, njihov okoliški prostor pa je temen. S pravilno postavitvijo praga lahko večino slikovnih elementov na področju števnika pravilno razvrstimo med števke in vmesni prostor (slika 24 desno, str. 50). Pri upragovljanju uporabljamo globalni prag (njegova vrednost je odvisna samo od svetilnosti slikovnih elementov), ker je časovno manj zahteven od lokalnega (ki je odvisen tudi od okolice slikovnega elementa) ali dinamičnega (ki je nadalje odvisen od prostorskih koordinat). Poskusi kažejo, da globalni prag zadostuje namenu uporabe, t.j. razčlenjevanju slike električnega števca. V [4] je podrobno opisan postopek določanja optimalnega praga s pomočjo histograma porazdelitve relativnih frekvenc sivih nivojev svetilnosti slike. Mi smo za naš sistem razvili nekoliko drugačen postopek (poglavje 6.2), ki je časovno manj zahteven in pri uporabi s splošnimi slikami daje slabše rezultate, ker ne določi optimalnega praga, ampak samo zadovoljiv približek, ki pa v našem primeru zadostuje (kar potrjujejo poskusi), saj so histogrami slik električnih števcev izrazito bimodalni z zelo majhnim številom slikovnih elementov med obema glavnima modusoma (sliki 13, str. 42 in 16, str. 45). S pomočjo binarizirane (in podvzorčene, poglavje 6.1) slike uspešno izvedemo detekcijo števnika (poglavje 1) ter lociramo posamezne števke (poglavje 1). 3.3 Razpoznavanje znakov s postopki OCR Postopki optičnega razpoznavanja znakov (ang. optical character recognition - OCR) [2, 3, 1] so se uveljavili v aplikacijah, ki so povezane z razpoznavanjem slikovnih vzorcev, na katerih so predstavljeni simboli (števke, znaki abecede in drugo). Tem slikam želimo prirediti oznake simbolov, ki so na njih narisane. Primeri takih aplikacij so razpoznavanje serijske številke električnega števca [1] in pretvorba besedil predstavljenih s pomočjo slike v ASCII obliko. Glede na namen uporabe in na cilje, ki jih aplikacije optičnega razpoznavanja znakov želijo doseči, lahko postopke OCR delimo na industrijske in neindustrijske [1]. Od industrijskega OCR zahtevamo veliko robustnost in zanesljivost odčitavanja. Izdani rezultat ne vsebuje samo prepoznanih simbolov, ampak tudi morebitna obvestila o verjetnosti napake. Neindustrijski OCR ima cilje drugače zastavljene. Razpoznati skuša čim večji odstotek znakov, četudi zaradi tega žrtvuje zanesljivost. Izvedb razpoznavanja znakov je veliko, skupna značilnost vseh postopkov pa je določanje značilk simbola na sliki (in s tem manjšanje redundantne informacije vhodnega vzorca) ter njihovo primerjanje z značilkami predhodno zapomnjenih primerov simbolov (vzorci učne množice). Rezultat postopka je oznaka simbola iz učne množice, katerega značilke se (po vnaprej določenem kriteriju) najbolje ujemajo z značilkami razponavanega simbola (oz. pri industrijskem OCR tudi podatek o napaki, če se razpoznavani simbol ne ujema dovolj z nobenim iz učne množice). Značilke, ki se uporabljajo v praksi, so precej občutljive na to, ali je razpoznavani znak na sliki viden v celoti, kar pomeni, da pri delno manjkajočih znakih uspešnost razpoznavanja močno upade. 4 Odčitavanje vrednosti Na tem mestu se bomo posvetili problematiki odčitavanja vrednosti števca ob predpostavki, da je njegova slika že zajeta in posamezne števke na njej uspešno locirane. Predstavili bomo glavne probleme, ki jih je za uspešno odčitavanje vrednosti števk potrebno rešiti, ter ustrezne rešitve tudi nakazali. V poglavju 4.1 bomo opisali problem odčitavanja vrednosti in podali utemeljitev, zakaj klasični postopki optičnega razpoznavanja znakov v našem primeru niso uporabni. Poglavje 4.2 formalno predpiše natančnost, ki jo mora sistem doseči. Postopek, ki dosega ustrezne karakteristike in ga predlagamo namesto uporabe OCR, je opisan v poglavju 4.3. 4.1 Problematika natančnega odčitavanja V uvodnem poglavju (1.4) smo že omenili, da pri odčitavanju vrednosti števca ne zadostuje razpoznati posameznih števk (jih opisati s simboli od 0 do 9) ter jih združiti v končni rezultat, temveč potrebujemo natančnejšo določitev vrednosti. Da bi omenjeno zahtevo lažje pojasnili, si oglejmo sliko 7, ki prikazuje števec, katerega vrednost moramo odčitati. Vidimo, da prikazujejo levi trije koleščki števnika števke, ki so vidne v celoti, zadnji dve pa se nahajata v vmesnih položajih. Prva tri mesta bi zato lahko razpoznali s postopki OCR, zadnjih dveh pa ne, saj OCR v splošnem ne deluje zadovoljivo, če znaki, ki jih razpoznavamo, niso vidni v celoti (poglavje 3.3). Poleg tega si s podatkom, da je vrednost zadnje števke 9 ali 0, ne moremo veliko pomagati, ker z njegovo pomočjo ne moremo izdati rezultata potrebne natančnosti. ■ ■ ■■_— Slika 7: Primer slike števca, ki mu moramo odčitati vrednost Vrednost, ki jo na podlagi prikazane slike želimo razpoznati, je 106 93 kWh ali 10694 kWh (pri tem smo upoštevali, da zadnje mesto števnika predstavlja desetinke merske enote). Pri uporabi postopkov OCR in ob predpostavki, da bi z njihovo pomočjo lahko pravilno določili simbole vsem števkam (tudi tistim, ki niso vidne v celoti), bi lahko izdali naslednje rezultate: 1069 kWh, 106 0 kWh, 1079 kWh ter 107 0 kWh. Ne samo, da noben od naštetih rezultatov ni zadosti natančen, tudi med seboj so si precej različni in brez dodatne informacije nimamo možnosti ugotoviti, kateri je najbližji dejanski vrednosti. Zaradi tega bi bila karakteristika odčitovalnika nezvezna, ponovljivost pa slaba v položajih koleščka, ki so blizu preskokov z ene vrednosti števke na drugo. Na tem mestu naj omenimo, da bo neodvisno od uporabljene metode odčitavanja vsaka karakteristika nezvezna že zaradi dejstva, da je ločljivost zajete slike omejena in zaradi tega lahko zaznamo samo končno število različnih položajev koleščka. Poleg tega je rezultat izdan v digitalni obliki, kar pomeni, da se je v postopku odčitavanja izvršila kvantizacija ustrezne analogne vrednosti. Pomembno pri karakteristiki je, da je njena nezveznost na vseh mestih manjša od dopustne napake odčitavanja (v našem primeru dovoljujemo absolutno napako sistema 0 01 kWh; poglavje 4.2), za kar ocenjujemo, da postopki OCR ne morejo doseči. 4.2 Zahtevana natančnost odčitavanja Zahtevana natančnost odčitka sledi neposredno iz graduacije zadnje števke, s katero je povezano število različnih položajev koleščka, ki jih nedvoumno lahko zaznamo s prostim očesom. Slika 8 prikazuje povečano sliko zadnjega koleščka v treh različnih položajih. Vidimo, da je vsaka števka razdeljena na deset razdelkov in vsaj toliko različnih položajev le-te lahko ločimo. Slika 8: Povečana slika števke z dobro vidno graduacijo decimalnega mesta Dejanska ločljivost je nekoliko večja, saj lahko zaznamo tudi položaje koleščka med dvema razdelkoma (na polovici, četrtini, ...), a različni odčitovalci si verjetno ne bi bili več enotni pri določanju odčitane vrednosti v teh primerih; zato smatramo, da je štetje razdelkov največ, kar lahko človeško oko objektivno in enolično oceni pri odčitavanju vrednosti. Absolutna napaka, ki jo sistem ne sme prekoračiti, je torej 001 kWh, kjer je upoštevano, da zadnja števka predstavlja desetinke merske enote. 4.3 Doseganje želene natančnosti Postopek odčitavanja, ki ga v praksi uporabljamo, je naslednji. Na sliki lociramo posamezne števke (poglavje 1) ter jih ločeno primerjamo s sliko raztegnjenega koleščka števnika, ki je prikazan na sliki 9 (obrnjen 90° protiurno). Slika 9: Primer traku, ki predstavlja raztegnjeno sliko koleščka Sliko posamezne števke pomikamo vzdolž traku ter za vsak položaj ugotovimo razdaljo med njima (razdaljo definiramo kot število točk, v katerih se sliki razlikujeta). Kjer je razdalja najmanjša, je slika števke najbolj podobna traku. Iz tega podatka lahko neposredno ugotovimo, v katerem položaju se kolešček na sliki nahaja in s tem kolikšna je njegova vrednost. V ustreznost te metode se lahko prepričamo s pomočjo slike 10, kjer so prikazane razdalje med sliko števke v vseh položajih koleščka in trakom preko njegove celotne dolžine. 200 Slika 10: Prikaz razdalj med sliko števke v vseh položajih koleščka in trakom preko njegove celotne dolžine Odmik na sliki vzdolž sprednje stranice podaja zasuk koleščka (njegovi položaji so oštevilčeni od 1 do 200, ker smo ga zajeli v prav toliko različnih pozicijah; pri vsakem polnem razdelku ter v položajih na njihovi polovici). Odmik vzdolž stranske stranice podaja položaj traku, pri kateri je izračunana razdalja med njim in sliko števke (položaji na traku so oštevilčeni od 1 do 400, ker smo izbrali tako velikost števk na njem, da smo imeli na voljo dvakrat več položajev traku kot zajetih pozicij koleščka). Razdalje so ponazorjene z višino funkcije, pri čemer je os usmerjena navzdol ter zaradi večje preglednosti vrednosti večje od 8000 popravljene na to vrednost. Na sliki jasno izstopa izredno strm greben po njeni sredini, ki kaže, da se števke v vseh položajih koleščka najbolje prilegajo traku na tistem mestu, ki je analogen koleščkovi poziciji. Formula za oceno vrednosti števke je naslednja: v = k (x - x0) kjer pomenijo oznake: • v vrednost števke na sliki, • k konstanta traku, • x oddaljenost mesta najboljšega ujemanja od začetka traku, • x0 začetek števke "0" na traku. Vidimo, da je v nasprotju s postopki OCR dobljena vrednost koleščka dosti bolj korelirana z njegovim zasukom in je natančnost določanja položaja omejena samo z ločljivostjo oz. kakovostjo zajete slike in traku, ki ga uporabljamo. Omenimo še, da tak postopek uporabljamo za vse števke na sliki (OCR ne uporabljamo niti za skrajno levo števko), ker se lahko zaradi prenosa med dekadami prav vsi koleščki nahajajo v kateremkoli vmesnem položaju. 5 Postopek odčitavanja vrednosti Primerjanje slik števk s trakom za določitev njihovih vrednosti (poglavji 4.3 in 1) je ključna faza odčitavanja števca, na kateri temelji celotna implementacija zamisli, sama zase pa še zdaleč ne reši celotnega problema. Kje na sliki se števke nahajajo? Koliko jih je? Ali je števec sploh prisoten na sliki? Na ta in na še precej drugih vprašanj moramo odgovoriti, preden lahko primerjavo s trakom sploh izvedemo. Nazadnje je potrebno dobljene vrednosti posameznih števk združiti v končni rezultat, kar je težja naloga, kot se na prvi pogled zdi. V tem poglavju si bomo ogledali izhodiščne kriterije, ki so ključno vplivali na zasnovo sistema ter nas usmerjali pri odločitvah med raziskavami (poglavje 5.1). Temu sledi generalni opis celotnega postopka odčitavanja (poglavje 5.2). 5.1 Zasnova sistema Sistem optičnega odčitavanja električnih števcev je bil razvit z namenom uporabe v industrijskem okolju in kot tak mora strogo izpolnjevati pogoje pravilnega delovanja. Gotovo je njegov najkompleksnejši del programska oprema, ki realizira odčitavanje. Doseganje brezhibnega delovanja programov pri velikosti izvorne kode reda polovice megabajta je težavno opravilo, ki pa ga lahko precej poenostavimo s pravilno zasnovo. Izpostavimo naj naslednja prijema: • modularna zasnova: postopek odčitavanja je zasnovan kot niz korakov (modulov), od katerih vsak izgleda kot črna škatla, ki z ostalimi moduli komunicira preko majhnega števila dobro definiranih mest; • uporaba odprte zanke: izogibali smo se zaprtim zankam, ob prisotnosti katerih se je dosti težje prepričati, da sistem pravilno deluje v vseh pogojih, na katere lahko naletimo. Zaradi modularne zasnove je določanje in lociranje napak bistveno lažje, saj lahko spremljamo potek izvajanja od modula do modula ter opazujemo, na katerem nivoju dobimo nepričakovane rezultate. Prav tako je delo olajšano v odsotnosti zaprtih zank, saj bi se napake lahko pojavile šele po večjem številu iteracij (večina pod zelo redkimi in specifičnimi pogoji), zato bi bilo njihovo odkrivanje bistveno težje in dolgotrajnejše. 5.2 Opis postopka Bločni diagram postopka odčitavanja je prikazan na sliki 11. Opazimo lahko, da je zasnovan po načelih, ki smo jih opisali v prejšnjem razdelku: posamezni koraki postopka dobijo rezultate samo od predhodnega nivoja ter pripravijo rezultate za naslednjega. Vloga posameznih korakov je naslednja: • zajem slike števca: korak, ki je specifičen načinu uporabe sistema (poglavja 2.1, 2.4, 2.5), ima nalogo ob pravem trenutku zajeti sliko ustrezne kvalitete. Ključno vlogo pri tem ima ustrezna strojna oprema (poglavje 2.2). Problematika zajema slike je tehnični problem, zato je v tem delu ne obravnavamo; Slika 11: Shematski prikaz postopka odčitavanja • analiza slike: začetna obdelava slike ter določanje njenih globalnih parametrov je prvi korak postopka odčitavanja. Kot rezultat nam vrne podvzorčeno in s tem podatkovno manj obsežno sliko (poglavje 6.1), ki jo uporabimo za hitrejše lociranje položajev števk. Tudi vrednost praga binarizacije (poglavje 6.2), ki ga potrebujemo pri nadaljnji obdelavi, se določi na tem nivoju; • lociranje števk: princip določanja vrednosti posameznim števkam na sliki, ki ima zadovoljivo natančnost, smo že opisali (poglavje 4.3). Njihova lokacija na sliki in samo število le-teh pa se od zajema do zajema spreminja, zato njihovih leg ne moremo vnaprej predvideti, ampak jih moramo s posebnim postopkom določiti pri vsakem odčitavanju posebej (poglavje 6); • poravnava števk: števk s trakom ne moremo primerjati takoj, ko določimo njihovo lokacijo, saj je števec lahko zajet pri drugačni povečavi, kot je bil ob izgradnji traku (ob učenju oblik števk; poglavje 10.1) in je lahko zavrten za nezanemarljiv kot (primer na sliki 7, str. 28, kjer je števec opazno zavrten v smeri ure). Z ustrezno poravnavo (poglavje 1) dosežemo, da slike števk izgledajo zadosti podobne traku oz. so zadovoljivo podobne števkam, ki bi jih zajeli pod enakimi pogoji, kot smo zajeli slike za izgradnjo traku; • primerjanje s trakom: vsaki števki se določi njena vrednost (poglavji 4.3 in 1). Števka ni opisana samo z ustreznim simbolom (od 0 do 9), ampak s precej natančnejšo vrednostjo, katero dobimo z linearno interpolacijo vrednosti števk, med katerima leži slika neznane števke (natančnost je omejena s kvaliteto traku in slike števke); • tvorjenje rezultata: vrednosti posameznih števk nas kot take ne zanimajo. Da bi ugotovili, katero vrednost števec kaže, moramo posamezne vrednosti števk združiti v končni rezultat. Vrednosti, dobljene v predhodnem koraku, ne moremo enostavno pomnožiti z dekadnimi utežmi posameznih mest in sešteti, ker je pri tem potrebno upoštevati mehanske prenose med koleščki ter paziti na nepretrgano in ponovljivo karakteristiko brez preskokov v vseh možnih položajih, v katerih se lahko posamezne števke nahajajo (poglavje 1); • izdaja odčitka: korak je specifičen načinu uporabe in odvisen od strojne opreme, ki jo v ta namen uporabljamo. V najpreprostejšem primeru (ročni odčitovalnik) sistem enostavno prikaže vrednost na ustreznem zaslonu ali drugi napravi, ki služi v ta namen. Pri končnem preizkusu v tovarni pa je stvar nekoliko težja. Realizirati moramo ustrezen protokol pošiljanja podatkov, ker hkrati lahko deluje več odčitovalnih mest, ki centralnemu računalniku sporočajo rezultate. Poleg tega moramo poskrbeti za preverjanje pravilnosti podatkov in detekcijo izpada omrežja. V nadaljevanju bomo posamezne faze odčitavanja podrobno opisali. 6 Začetna analiza slike Začetna analiza nam nudi prvi vpogled v zajeto sliko. Z njeno pomočjo opravimo nizkonivojsko obdelavo, kjer še ne razpoznavamo ali interpretiramo njene vsebine kot prepoznane ali izločene objekte, pač pa se operacije vršijo neodvisno od pomenske vsebine slike. Naloge, ki jih moramo na tem mestu opraviti, so filtriranje s ciljem, da zmanjšamo šum, prilagoditev na različne stopnje osvetljenosti ter začetna redukcija odvečne informacije. Prvi dve zahtevi nam povečata robustnost postopka, zadnja pa nam ga pohitri. Začetna analiza nam priskrbi podvzorčeno sliko (poglavje 6.1), ki je od prvotne precej manjša (vsebuje manj podatkov), zato jo z namenom pohitritve odčitavanja uporabljamo pri detekciji števnika namesto originalne; dobimo tudi vrednost praga binarizacije (poglavje 6.2), s katerim iščemo lokacije števk in robove števnika na sliki. 6.1 Tvorjenje podvzorčene slike Tvorjenje podvzorčene slike je v našem primeru preprost postopek. Pravokotnim področjem 8x8 točk priredimo na podvzorčeni sliki vrednost njihovega povprečja (natančneje navzdol zaokrožen celoštevilčni del aritmetične sredine). Pri tem smo predpostavili, da je število točk na sliki po horizontali in vertikali deljivo z osem (poglavje 2.2.3). Podvzorčeno sliko, prikazano preko levega zgornjega kota (nekoliko zatemnjene) originalne, si lahko ogledamo na sliki 12 levo. Zajeto sliko, ki je bila podlaga za tvorjenje podvzorčene slike, prikazuje slika 7, str. 28. 010 $ XI Slika 12: Prikaz podvzorčene slike v zgornjem levem kotu originalne (levo) ter podvzorčena slika, povečana na velikost originalne (desno) Že na prvi pogled vidimo, da je redukcija podatkov na tako dobljeni sliki velika (1:64). Povprečenje slikovnih elementov pa ne zreducira samo prvotne informacije, pač pa deluje tudi kot preprost nizkopasovni filter, zato je na podvzorčeni sliki šum zmanjšan in v nadaljevanju lahko uporabljamo postopke obdelave, ki so manj robustni in bolj občutljivi na šum, so pa zato hitrejši (to izkoriščamo pri detekciji števnika ter pri hitrem določanju področja, kjer iščemo vertikalne meje števca - poglavji 7.3 in 8.1). Slika 12 desno prikazuje podvzorčeno sliko, povečano na velikost originalne (v nadaljevanju bomo vse podvzorčene slike prikazovali pri tej povečavi). Velikost področja 8x8 slikovnih elementov smo izbrali na podlagi kvalitativne ocene rezultatov poskusov s področji velikosti 2x2, 4x4, 8x8, 16x16, 32x32 in 64x64 slikovnih elementov. Ocenjujemo, da manjša področja od 8x8 slikovnih elementov nezadovoljivo filtrirajo šum na podvzorčeni sliki, medtem ko večja lahko z nje zabrišejo pomembne detajle. Podvzorčeno sliko potrebujemo za grobo lociranje števnika in položajev posameznih števk na sliki (poglavje 7.3), zato njene ločljivosti ne smemo pretirano manjšati. Zlasti pri manjših povečavah zajema se lahko zgodi, da se ob uporabi večjih področij posamezni deli števk na podvzorčeni sliki sploh ne pojavijo, kar za reševanje našega problema ni sprejemljivo. Izbira velikosti področja je povezana z ločljivostjo zajete slike. Področja velikosti 8x8 slikovnih elementov so primerna za ločljivost, s katero smo v laboratoriju zajemali slike (768x576 slikovnih elementov). V primeru uporabe slikovnih sistemov, ki zajemajo slike pri drugačnih ločljivostih, priporočamo izgradnjo podvzorčenih slik s spremenjeno velikostjo področij. Pri izbiri velikosti je bistveno, da se razmerje dimenzij originalne in podvzorčene slike čim bolj ohrani (npr. pri ločljivosti 256x256 bi verjetno dobili boljše rezultate z uporabo področji velikosti 4x4 slikovnih elementov). Tudi omejitev na področja kvadratne oblike ni striktno nujna. Uporabljamo jo zato, ker omogoča pohitritev nekaterih postopkov. 6.2 Določanje praga binarizacije V literaturi [4, 5, 6, 7] obstaja veliko postopkov določanja optimalnega praga binarizacije (s pomočjo histograma porazdelitve relativnih frekvenc sivih nivojev svetilnosti slike, z detekcijo robov na gradientni sliki, z upoštevanjem sosednosti slikovnih elementov, s spremljanjem poteka osvetljenosti, ...) ter tudi različni tipi le-tega (globalni, lokalni, dinamični, ...). Vsak postopek je primeren za reševanje določenega tipa problemov ter ima svoje prednosti in slabosti (npr. večja časovna zahtevnost postopka, ki operira nad gradientno sliko v primerjavi s postopkom, ki uporablja samo histogram, zato pa so robovi področij na binarizirani sliki pravilnejši in šum binarizacije manjši). V našem primeru izbira postopka ni kritična, saj že bežen pogled na zajeto sliko električnega števca (slika 7, str. 28) razkrije, da je vzorec večinoma dvonivojski in zaradi tega njegov histogram izrazito bimodalen, kar lahko natančneje opazujemo na sliki 13. 0,14 m 0,12 o n e 0,10 v k (D 0,08 ro n 0,06 vit ro 0,04 le IZ 0,02 0,00 (R (S) . iS ocnooi-^cDin-^cocNT-ocnoo CNtomi-^cnT-comi-^cnT-cN-^ t-T-T-T-T-CNCNCN Osvetljenost slikovnih elementov Slika 13: Histogram zajetega slikovnega vzorca, na katerem so označena posamezna zanimiva področja (T označuje temno področje, R vsebuje slikovne elemente rdeče barve, S označuje svetlo področje) Opazimo, da na histogramu izstopata dve področji. Območje osvetljenosti slikovnih elementov od cca. 19 do 50 (področje na sliki označeno s črko T) predstavlja temna področja števnika, t.j. vmesne prostore med posameznimi števkami ter njihova ozadja. Na drugem koncu histograma pa opazimo področje, ki predstavlja bele površine čelne plošče (interval cca. od 200 do 255; označeno s črko S) in je precej bolj izrazito od temnega, ker čelna plošča predstavlja večji del celotne zajete slike. V območju osvetljenosti od 200 do 240 se nahajajo slikovni elementi števk, za katere se izkaže, da so v povprečju osvetljene rahlo šibkeje kot čelna plošča. Poleg tega so natisnjene na koleščke t.j. ukrivljene površine, zato je njihova osvetljenost prostorsko spremenljiva, kar rezultira v širšem področju histograma približno enakomerne osvetlitve. V intervalu od cca. 91 do 127 lahko opazimo še dokaj neizrazito področje, ki predstavlja rdečo barvo (označeno s črko R), ki obkroža zadnjo števko in s tem poudarja, da gre za decimalno mesto. Našteta področja oz. intervali niso stalni, ampak se spreminjajo v odvisnosti od tega, kako močno osvetlimo vzorec, ko ga zajemamo, ter od tipa čelne plošče (npr. nekatere sploh nimajo rdeče barve). V laboratoriju lahko vedno dosežemo tako osvetlitev, da se omenjena področja raztezajo preko celotnega območja (od 0 do 255), v praksi pa to ni vedno možno, zato tudi praga binarizacije ne moremo vnaprej določiti fiksno, ampak moramo njegovo vrednost ugotoviti za vsako sliko posebej (ali v primeru velike časovne zahtevnosti za celotno serijo slik, ki so zajete pod enakimi pogoji). 6.2.1 Postopek določanja praga binarizacije Prag binarizacije zajete slike bomo določili z analizo podvzorčene (slika 12 desno) zaradi večje hitrosti izvajanja postopka. Njen histogram si lahko ogledamo na sliki 14. 0,30 m 0,25 o nev 0,20 ro n vit le Cć 0,15 0,10 0,05 0,00 © (JjL cni-^mcot-cni-^mcot-cni-^mco T-comi-^cnocN-^cDoocnT-com t-T-T-T-T-T-CNCNCN Osvetljenost slikovnih elementov Slika 14: Histogram podvzorčene slike (T označuje temno področje, R vsebuje slikovne elemente rdeče barve, S označuje svetlo področje) Vidimo, da se histograma podvzorčene in prvotne slike (primerjava s sliko 13) po obliki ne razlikujeta dosti, le vrhovi posameznih področij so nekoliko manj izraziti. Podobnost oblik ne preseneča, saj podvzorčenje ne vpliva na distribucijo osvetljenosti slikovnih elementov (v mejah napake, ki jo le-to povzroči) in histogram podvzorčene slike predstavlja nepristransko oceno poteka histograma osnovne slike. Razlika, ki jo s prostim očesom skoraj ne moremo opaziti, lahko pa sklepamo nanjo, je rahlo nižji povprečni nivo osvetljenosti na novi sliki. Razlog je v tem, da smo povprečne vrednosti osvetljenosti posameznih področij 8x8 slikovnih elementov zaokrožili navzdol (zaradi hitrejše izvedbe podvzorčenja) in s tem povzročili majhno pristranskost njihovih ocen. Omenjeni pojav ne moti zaradi majhnega števila slikovnih elementov med obema glavnima modusoma histograma, s čimer praga binarizacije originalne slike (ki ga določamo preko podvzorčene) ni potrebno določiti zelo natančno. Prag binarizacije nam bo predstavljala srednja vrednost sivih nivojev: 255 SV = Z i • P i =0 kjer pomenijo oznake: • SV srednja vrednost histograma, • i sivi nivo slikovnih elementov, • p ocena verjetnosti slikovnega elementa s sivim nivojem i. Pri tem ne moremo uporabiti histograma celotne slike, ampak dobljenega tako, da bo vseboval samo relativne frekvence robnih točk. S tem bomo dosegli neobčutljivost postopka na različne povečave števnika, med katerimi se razmerje svetlih in temnih površin močno spreminja. Npr. ko sliko zajemamo z manjšo povečavo (števnik na sliki zavzema manjšo površino - slika 15 levo prikazuje zajem števca pri višini števnika 100 slikovnih elementov), na vzorcu močno prevladuje bela površina čelne plošče, ko pa povečavo večamo (na sliki 15 desno prikazan števnik zavzema po višini 150 slikovnih elementov), predstavljajo črna področja med števkami vedno večji delež slikovnih elementov in s tem se tudi močno spremenita deleža modusov na histogramih, ki sta prikazana na sliki 16. Istromzähler I 01C € e_oq/*i \l_* r\/r>rw a_ Slika 15: Primer dveh slik istega štev števnika sta od leve proti desni 100 in i, zajetih pri različnih povečavah (višini >0 slikovnih elementov) 0,06 <0 0,05 0 1 0,04 -o ^ 0,03 - CO ' C t 0,020 QZ 0,01 -0,00 - I P /s lf\k^ . . ... _____—< T-COLOI^OTOCN^CDCOOTT-COLO T-T-T-T-T-T-CNCNCN Osvetljenost slikovnih elementov 0,03 0,02 0,02 0,01 K 0,01 0,00 (T (S) i h Li 1 j f \ M i M \ \ _, J \ m co co m 22 Osvetljenost slikovnih elementov Slika 16: Histograma slik števca, zajetega pri različnih povečavah (levo višina števnika 100, desno 150 slikovnih elementov) Vidimo, da je pri manjši povečavi (slika 16 levo) razmerje temnega proti svetlemu področju (območje označeno s črko T proti območju označenem s črko S) ustrezno manjše v primerjavi z razmerjem pri večji povečavi (slika 16 desno). Ta pojav se seveda odraža tudi na podvzorčeni sliki (slika 17) in ima za posledico premik srednje vrednosti histograma tako originalne kot tudi podvzorčene slike (sliki 18 in 19). Podatki so številčno predstavljeni v tabeli 2. 0,14 0,12 0,10 0,08 0,06 0,04 0,02 0,00 -© 2 2 2 Osvetljenost slikovnih elementov 0,04 0,03 0,02 0,01 0,00 © T i 5 1 h 11 y * U r-LOco-^-a^r-Loco-^-OTr-Loco coLor-c^ocN^cococ^T-coLO t-T-T-T-T-T-CNCNCN Osvetljenost slikovnih elementov Slika 17: Histograma podvzorčenih slik števca, zajetega pri različnih povečavah (levo višina števnika 100, desno 150 slikovnih elementov) 0,06 0,05 0,04 0,03 0,02 0,01 Srednja vrednost -- 1 r \ CN CN CN Osvetljenost slikovnih elementov 0,03 S 0,02 0,02 0,01 o: 0,01 0,00 I lO CO T- CO IO 2 2 2 Osvetljenost slikovnih elementov Slika 18: Histograma slik števca, zajetega pri višini 100 (levo) in 150 (desno) slikovnih elementov z vrisanima srednjima vrednostima 0,14 0,12 ro § 0,10 v |> 0,08 2 0,06 vit I 0,04 0,02 0,00 en Srednja [i ^............... m co ctj m co ^r cd co en t- co m T- T- T- T- CM CM CM Osvetljenost slikovnih elementov 0,07 0,06 0,05 0,04 0,03 0,02 0,01 0,00 Srednja vrednost - I i lil J uir v . JJIIU u J CD CO CT) 2 2 2 Osvetljenost slikovnih elementov Slika 19: Histograma podvzorčenih slik števca, zajetega pri višini 100 (levo) in 150 (desno) slikovnih elementov z vrisanima srednjima vrednostima Povečava 100 s.e. Povečava 150 s.e. Zajeta Podvzorčena Zajeta Podvzorčena slika slika slika slika Površina temnega področja 0,235 0,190 0,372 0,343 Površina svetlega področja 0,674 0,629 0,564 0,523 Razmerje temnega proti svetlemu 0,349 0,302 0,660 0,656 Srednja vrednost histograma 169 167 149 146 Tabela 2: Pregled nekaterih karakteristik histogramov, zajete in podvzorčene slike pri dveh različnih povečavah S tabele 2 je razvidno, da se tiste lastnosti histograma originalne slike, ki nas zanimajo, ohranijo tudi na histogramu podvzorčene slike. Tako se deleža temnega in svetlega področja ter njihovo relativno razmerje pri podvzorčenju ne spremenita bistveno, prav tako se v večji meri ohranita srednji vrednosti histogramov. Vidimo pa, da se ti parametri precej spreminjajo v odvisnosti od povečave, kar je nezaželeno. Če bi prag binarizacije določali direktno s pomočjo srednje vrednosti histograma osnovne ali podvzorčene slike, bi bil naš postopek občutljiv na te spremembe parametrov. Namesto tega s pomočjo sobelovega operatorja določimo, kje na podvzorčeni sliki se nahajajo robne točke in samo te upoštevamo pri tvorjenju histograma. Sobelova slika in njen histogram sta prikazana na sliki 20. Slika 20: Rezultat sobelovega operatorja nad podvzorčeno sliko (levo) ter njegov histogram (desno) Slika 21 prikazuje histograma sobelove slike še za primera slik, ki sta zajeti pri različnih povečavah (originala sta prikazana na sliki 15). Histogram sobelove slike ima v primeru slike števnika zelo karakteristično obliko. Na samem začetku ima izrazit vrh, ki predstavlja točke, v okolici katerih so spremembe osvetljenosti zelo majhne. Vrednost sobelovega operatorja Vrednost sobelovega operatorja Slika 21: Histograma sobelovih slik števnikov, zajetih pri različnih povečavah (levo višina števnika 100, desno 150 slikovnih elementov) Vrh je izrazit, ker večji del slike zasedajo relativno velike ploskve skoraj konstantne osvetljenosti, in je posledica šuma, ki povzroča, da se vrednosti slikovnih elementov, ki prikazujejo homogene ploskve, nekoliko spreminjajo. Robne točke poiščemo tako, da določimo vrednost sobelovega operatorja, od katere naprej smatramo točke za robne, t.j. tiste, katerih osvetljenost se je spremenila zaradi prehoda iz enega območja slike v drugega in ne zaradi šuma. To storimo tako, da pregledujemo sobelov histogram od začetka, dokler mu vrednost pada v posamezni točki ali v katerikoli točki, ki je od trenutne oddaljena za določeno vrednost (poskuse smo izvajali z oddaljenostimi od 8 do 16; pri vseh vrednostih smo dobili zelo podobne rezultate). Ko upadanja ni več, smo dosegli rob začetnega hriba in s tem določili iskano vrednost praga sobelove slike (slika 22 levo). Vse točke, ki imajo vrednost sobelovega operatorja večjo od roba hriba, so robne točke podvzorčene slike (slika 22 desno), ki jih upoštevamo pri izgradnji histograma. Za primera števcev s slike 15 sta histograma prikazana na sliki 23. Kvalitativno in kvantitativno (tabela 3) lahko ocenimo, da smo precej zmanjšali vpliv različnih povečav. Histograma na sliki 23 imata bolj izenačena deleža temnega in svetlega področja kot histograma na sliki 17. S tako dobljenim histogramom lahko prag binarizacije podvzorčene in s tem tudi osnovne slike določimo z izračunom njegove srednje vrednosti. Podatki so prikazani v tabeli 3, kjer vidimo, da smo uspeli zmanjšati vpliv različne povečave na razmerje med temnim in svetlim področjem. Tudi srednja vrednost se manj premika in je postavljena bolj v središče med oba modusa histograma. 0,25 a 0,20 0 n e 1 0,i5 a I 0,10 ji (D o: 0,05 0,00 Prag sobelove slike Področje šuma Področje robov —AvA_ Vrednost sobelovega operatorja Slika 22: Sobelov diagram z vrisanim pragom (levo) ter prikaz robnih točk podvzorčene slike (desno) 0,03 0,02 m co ctj m co ^r cd co en t- co m T- T- T- T- CM CM CM Osvetljenost slikovnih elementov 0 0 0 0 Osvetljenost slikovnih elementov Slika 23: Histograma robnih točk slikovnega vzorca števca, zajetega pri višini števnika 100 (levo) in 150 (desno) slikovnih elementov Povečava 100 s.e. Povečava 150 s.e. Zajeta Podvzorčena Zajeta Podvzorčena slika slika slika slika Površina temnega področja 0,190 0,269 0,343 0,348 Površina svetlega področja 0,629 0,426 0,523 0,383 Razmerje temnega proti svetlemu 0,302 0,631 0,656 0,909 Srednja vrednost histograma 146 142 136 132 Tabela 3: Primerjava parametrov histograma robnih točk s histogramom podvzorčene slike V ustreznost dobljenega praga binarizacije se lahko prepričamo na sliki 24, kjer sta prikazani binarizirana podvzorčena ter osnovna slika. —" ""—--i i li_ Slika 24: Binarizirana podvzorčena (levo) ter originalna (desno) slika V zvezi z določanjem praga binarizacije pojasnimo še šum binarizacije, ki ga večkrat omenjamo v nadaljevanju. Pojem opisuje nezaželen pojav določenega števila izoliranih točk ali manjših področij bele barve na predhodno navidez homogeni črni podlagi ali obratno. Pojav praktično vedno spremlja binarizacijo z vpragovljanjem in je tem izrazitejši, čim manj poudarjene moduse ima histogram. V primeru slikovnega vzorca števnika pojav skoraj ni opazen, povsem odsoten pa tudi ni. Zato pri nadaljnji obdelavi osnovne slike uporabljamo postopke, ki so temu prilagojeni. S tem, ko smo generirali podvzorčeno sliko ter poiskali njen prag binarizacije, je začetna analiza slike končana. Oboje potrebujemo v nadaljnjih korakih odčitavanja števca. 7 Detekcija položaja števnika Kvalitetna in robustna detekcija števnika ter s tem povezano lociranje posameznih števk na zajeti sliki je brez dvoma ključni korak celotnega postopka odčitavanja vrednosti števcev. Poznavanje natančne lokacije števk je predpogoj za uspešno in smiselno primerjavo njihovih slik s trakom. Praktično vse aplikacije industrijskega vida nam lahko potrdijo, da je segmentacija s kamero zajete slike ter s tem povezano razpoznavanje zanimivih področij na njej najtežja faza celotnega postopka in če je izvedena zadovoljivo, deluje v večini primerov dobro tudi sistem kot celota [4]. V tem poglavju si bomo ogledali nekaj slik števcev, na katerih se števnik nahaja na različnih položajih znotraj slikovnega vzorca, ter z njihovo pomočjo predpisali, kako naj naš sistem na te situacije reagira (poglavji 7.1 in 7.2). V nadaljevanju bomo postopek, ki te zahteve izpolnjuje, tudi natančno opisali (poglavje 7.3). Nazadnje bomo v poglavju 7.4 pokazali primer števnika, kjer postopek odpove. 7.1 Števnik in njegov položaj na sliki Da se bolje seznanimo s problematiko detekcije števnika, si oglejmo sliko 25, kjer je isti števec zajet v različnih položajih, ki so zadovoljivi za odčitavanje. Opazimo lahko, da se med slikami ne spreminja samo lokacija števnika, ampak tudi njegova rotacija in povečava. Želimo, da postopek segmentacije pravilno prepozna števnik ter locira števke na njem kljub prisotnosti prikazanih razlik med posameznimi zajemi. Slika 25: Različni položaji števnika znotraj zajete slike Poudarimo naj, da se na število števk kot enega od parametrov števnika (oz. posameznega tipa števca), ki se ne spreminja, ne moremo zanesti in ga uporabiti pri detekciji prisotnosti števnika, saj so lahko števci zajeti pri tako veliki povečavi (slika 26), da vse števke na sliki niso vidne (na sliki 26 levo je uporabnih pet števk, ker skrajno leva ni vidna v celoti, na desni sliki pa so uporabne štiri; vseh števk na števniku je sedem, kar lahko vidimo na sliki 25). Slika 26: Primer dveh slik števca zajetega pri tako veliki povečavi, da nekatere števke niso vidne ali niso vidne v celoti To pride v poštev pri preciznih odčitavanjih, kjer želimo zajeti sliko pri večji ločljivosti, da lahko natančneje odčitamo vrednost. Fantomska obremenitev števcev med končnim preizkusom (poglavje 1.3) navadno ne traja dovolj dolgo, da bi se vsem števkam spremenila vrednost, zato skrajno leve ostanejo na vrednosti 0 (oz. na predhodni vrednosti). Rezultat odčitavanja (natančneje: razlika vrednosti po in pred obremenitvijo) se ne spremeni, če le-te na sliki niso vidne. V zvezi s tem naj omenimo še problem delno vidnih števk na levi strani, saj se pri delnem zajemu številčnice pogosto zgodi, da je skrajno leva števka vidna le delno (na sliki 26 sta oba primera taka). Takih števk ne moremo uporabiti pri primerjavi s trakom, saj lahko dobimo napačen rezultat. Postopek segmentacije mora te števke zavrniti kot neustrezne. Naslednje vprašanje, ki se postavlja, je, kdaj sliko števnika detektirati kot ustrezno. Slika 27 prikazuje dva položaja števca, kjer je števnik prisoten, opazimo pa, da se v vseh primerih vsaj delno dotika zgornjega ali spodnjega roba slike. Slika 27: Primer zajete slike števca, kjer se števnik dotika zgornjega (levo) ali spodnjega (desno) roba V takih primerih želimo, da postopek detekcije sliko zavrne kot neustrezno, saj ne moremo zanesljivo ugotoviti, kje se nahaja začetek števnika in s tem sredine števk, katere potrebujemo za določanje lokacij, na katerih se števke najbolje ujemajo s trakom (določimo lahko, kje se njihove slike najbolje ujemajo, vrednost, ki jo razpoznamo pa je različna od prave za toliko, kolikor vrednosti bi prispevala napaka ocene sredine števnika; poglavje 11.1). V nasprotju z vertikalnimi mejami pa za horizontalne ne postavljamo takih omejitev zaradi že omenjene možnosti zajema slik pri tako veliki povečavi, da števnik ni viden v celoti, s tem pa tudi ni vidna vsaj ena horizontalna meja. Izkaže se, da lahko števec uspešno odčitavamo tudi brez ene ali obeh vidnih horizontalnih mej. 7.2 Specifikacija zahtev za detekcijo V prejšnjem poglavju smo opisali razne situacije, na katere lahko naletimo pri zajemu slike števca. Na tem mestu bomo povedano strnili v seznam zahtev, katere naj bi postopek za detekcijo števnika zadovoljil. Zahteve so naslednje: 1. števnik želimo prepoznati ne glede na to, koliko števk je na sliki vidnih (postavljena je zahteva po minimalnem številu števk zaradi postopka detekcije, v naši implementaciji tri v celoti vidne števke; poglavje 7.3); 2. ne želimo biti odvisni od povečave oz. velikosti števnika na sliki. Določena je minimalna velikost (poglavje 7.3), pod katero nima smisla iti, ker bi bil rezultat odčitavanja nenatančen in nezanesljiv. Maksimalna velikost pa je predpisana s tem, da morajo biti vsaj tri števke vidne v celoti; 3. števnik je lahko za znaten kot zarotiran so- ali protiurno (nekaj primerov je prikazanih na sliki 25); 4. prepoznati moramo samo števke, ki so na sliki vidne v celoti; delno vidne moramo izločiti kot neustrezne; 5. vertikalne meje števnika morajo biti v celoti vidne (števnik se ne sme dotikati zgornjega ali spodnjega roba zajete slike), 6. vidne horizontalne meje števnika ne smejo biti pogoj za uspešno detekcijo; 7. pri detekciji se ne želimo naslanjati na same slike števk oz. pisavo in obliko, ker imamo tudi števce s posebnimi kodami na decimalnem mestu (slika 3, str. 8) in števce, kjer se namesto arabskih uporabljajo lokalne pisave (npr. števci, ki so namenjeni izvozu v islamske države). V nadaljevanju opisujemo postopek, ki izpolnjuje omenjene zahteve in ga lahko uspešno uporabljamo za detekcijo različnih tipov čelnih plošč (vendar ne vseh; poglavje 7.4). 7.3 Postopek detektiranja števnika Da bi uspešno in hitro detektirali števnik ob pogojih, ki smo jih navedli v prejšnjih dveh poglavjih, potrebujemo vsaj eno njegovo karakteristično lastnost, ki jo je relativno preprosto prepoznati. Izkaže se, da lahko v ta namen uporabimo zaporedje temnih področij med števkami. S slike 24 na str. 50 lahko človek brez problemov prepozna števnik samo z opazovanjem te njegove lastnosti, in to tako na originalni (desno) kot tudi na podvzorčeni sliki (levo). Postopek, s katerim lahko to opravi računalnik, je možno dokaj enostavno realizirati. V prvem koraku izdelamo sliko, ki izhaja iz binarizirane podvzorčene slike, kjer je za vsako temno točko določeno, koliko je oddaljena od najbližje svetle točke. Merilo oddaljenosti je najmanjše število točk, ki jih moramo prepotovati, preden pridemo do svetle točke. Pri tem lahko potujemo v vseh osmih smereh, torej tudi diagonalno. Rezultat si lahko ogledamo na sliki 28, kjer je večja oddaljenost temne točke od najbližje svetle prikazana grafično z različno intenziteto osvetljenosti (svetlejša točka pomeni večjo oddaljenost). Siva barva, ki prevladuje na sliki (zlasti na spodnjem delu), označuje svetle točke na binarizirani podvzorčeni sliki. Slika 28: Grafični prikaz odmika temnih točk od svetlih V nadaljevanju moramo najbolj oddaljene točke razširiti v pravokotna temna področja ter tako dobiti seznam pravokotnih temnih področij na sliki. Postopek je naslednji. Postopek izgradnje seznama pravokotnih temnih področij na sliki 1. inicializiramo seznam temnih področij; 2. na sliki poiščemo najbolj oddaljeno temno točko. Če je njena oddaljenost od najbližje svetle točke manjša od vnaprej predpisane vrednosti, postopek prekinemo, sicer nadaljujemo z naslednjim korakom. Če obstaja več točk z enako oddaljenostjo, izberemo tisto, katere vsota oddaljenosti njenih sosedov je največja. V primeru, da je tudi takih točk več, izberemo katerokoli izmed njih; 3. temno točko, izbrano v prejšnjem koraku, razširimo v pravokotno področje, ki ga dodamo na seznam temnih področij (kako to storimo, je opisano spodaj; "Postopek razširjanja izbrane točke v pravokotno regijo"); 4. vsem točkam v pravokotnem temnem področju s koraka 3 pripišemo oddaljenost 0, da preprečimo ponovno širjenje in s tem večkratno uvrščanje iste regije na seznam, ter se vrnemo na korak 2. Komentar postopka: • v koraku 2 želimo izbrati točko, ki se nahaja čim bližje sredini temnega področja, saj lahko na ta način njeno razširjanje vanj poenostavimo (postopek je opisan v nadaljevanju). S predlaganim načinom dobimo suboptimalno rešitev, ki se izkaže kot zadovoljiva, saj so temna področja števnika pravokotniki z omejenim intervalom razmerij med višino in širino (podrobna analiza sledi v nadaljevanju), torej lahko predvidimo, za koliko odstopajo od kvadrata in s tem vemo, da se vse točke z največjo oddaljenostjo nahajajo v bližini njihovih središč; • s tem ko predpišemo v koraku 2 najmanjšo oddaljenost temne točke, ki jo še razširimo v temno področje, smo določili najmanjšo povečavo, pri kateri števnik še prepoznamo, tako kot zahteva poglavje 7.2. Postopek razširjanja izbrane točke v pravokotno regijo 1. strukturo "temna regija" inicializiramo tako, da obsega izbrano točko; 2. "temno regijo" razširjamo vertikalno v obe smeri, dokler ni zaobjeta nobena svetla točka ali dokler ne dosežemo roba slike; 3. na vrednost DA postavimo logični spremenljivki "razširitev_v_levo" in "razši ritev_v_d esno"; 4. če ima spremenljivka "razširitev_v_levo" vrednost DA, skušamo "temno regijo" razširiti za en pixel v levo, tudi če jo moramo po višini ustrezno zmanjšati, da ne zaobjamemo nobene svetle točke. Razširitev obdržimo, če ima rezultirajoča regija večjo površino kot prejšnja, sicer jo prekličemo in spremenljivko "razširitev_v_levo" izbrišemo (postavimo na logično NE); 5. analogno storimo z razširitvijo v desno; 6. če ima vrednost DA katerakoli od spremenljivk "razširitev_v_levo" ali "razširitev_v_desno", se vrnemo na korak 4, sicer postopek prekinemo. Komentar postopka: • v koraku 2 razširimo začetno točko v regijo, ki je široka en slikovni element ter visoka, kolikor nam to dopušča okolica izbrane točke. V primeru temne regije števnika smo omejeni z njegovim zgornjim in spodnjim robom. Če bi točko razširjali horizontalno, bi se lahko zapletli v števke, kar bi imelo za posledico, da se temna regija ne bi raztezala po celotni višini števnika in postopek združevanja temnih regij (opisan v nadaljevanju) bi jo zaradi prevelike razlike v višini izločil; • v korakih 4 in 5 skušamo regijo razširiti, da bi se horizontalno raztezala od predhodne do naslednje števke. Preprost kriterij, da regijo razširjamo, dokler se njena površina veča, se izkaže za zadovoljivega. Postopek je ilustriran na sliki 29, kjer lahko opazujemo zaporedje korakov, ki nas pripeljejo od izbrane točke do temne regije. 1. Izbira točke na podlagi oddaljenosti 2. Inicializacija regije z izbrano točko 3. Razširitev regije po vertikali v obe smeri 4. Razširitev za eno točko v levo in desno . Zadnja razširitevje bila preklicana 7. Nadaljnja širitev in zmanjšanje površine 6. Nadaljnja širitev je dosegla števke 5. Nadaljnja širitev v levo in desno Slika 29: Potek razširjanja izbrane točke v temno regijo V posameznih korakih prikazanih na sliki 29 je dogajanje naslednje: 1. s pomočjo slike, ki prikazuje oddaljenosti vseh temnih točk od najbližje svetle točke, izberemo ustrezno točko, ki jo bomo razširili v temno regijo; 2. začetna temna regija je inicializirana tako, da zaobjema izbrano točko (na sliki je prikazana kot bela pika, ki je še dodatno označena s puščico); 3. začetno regijo razširimo vertikalno navzgor in navzdol, dokler ne zadenemo svetle točke (na sliki je prikazan primer, ko zadenemo meji števnika); 4. regijo razširimo v levo in desno za eno točko. Opazimo, da smo jo morali na spodnjem koncu skrčiti po višini, ker se je razširjala v črno zarezo, ki predstavlja decimalno vejico; 5. nadaljnja širitev v levo in desno ne zahteva zmanjšanja višine; 6. nadaljnja širitev je dosegla števki na obeh straneh (ni nujno, da se vedno zgodi istočasno); 7. ob nadaljnji širitvi regije v levo se mora njena površina zmanjšati, ker jo moramo drastično skrčiti po višini, da ne prekrijemo delov obeh števk na levi strani; 8. zaradi zmanjšanja površine je bila zadnja razširitev preklicana in rezultat je regija, ki smo jo dobili v koraku 6. Rezultat pravkar opisanih postopkov nad celotno sliko si lahko ogledamo na sliki 30, kjer so dobljena temna področja pobarvana s svetlo barvo. Slika 30: Temna področja na podvzorčeni sliki Opazimo, da smo na seznam temnih področij uvrstili vsa temna področja, ki pripadajo števniku (se nahajajo med števkami), t.j. tista področja, ki jih potrebujemo za njegovo detekcijo, poleg teh pa vsebuje seznam še polno nezaželenih področij, ki jih moramo v nadaljevanju odpraviti. Postopek izločanja poteka tako, da za vsako področje izračunamo razmerje med njegovo višino in širino. Če je to razmerje večje od vnaprej predpisane vrednosti (področje je previsoko glede na svojo širino) ali manjše od druge vrednosti (področje je preširoko glede na svojo višino), ga zavržemo. To pravilo temelji na dejstvu, da področja, ki se nahajajo med števkami, ne morejo biti neomejeno raztegnjena, saj so horizontalno omejena s števkami, vertikalno pa z mejami števnika, v kar se lahko prepričamo z analizo slike 30. Vidimo, da je večina ostalih področij precej bolj raztegnjenih (v primeru na sliki 30 je večina od njih precej širokih v primerjavi njihovo višino). Tabela 4 prikazuje nekaj temnih področij števnika, ki smo jih dobili z zajemom slike pri različnih povečavah (označenih od A do D) in rotacijah števnika. Podatki so znotraj posamezne povečave urejeni po naraščajočem razmerju V/Š. St. Širina Višina Površina Razmerje Razmerje Povečava rotacije področja področja področja Š/V V/Š A 1 8 13 104 0,62 1,63 A 2 8 14 112 0,57 1,75 A 3 7 13 91 0,54 1,86 A 4 7 14 98 0,50 2,00 A 5 7 15 105 0,47 2,14 A 6 6 14 84 0,43 2,33 A 7 6 15 90 0,40 2,50 A 8 5 14 70 0,36 2,80 A 9 5 15 75 0,33 3,00 A 10 4 14 56 0,29 3,50 B 1 9 15 135 0,60 1,67 B 2 9 16 144 0,56 1,78 B 3 8 15 120 0,53 1,88 B 4 8 16 128 0,50 2,00 B 5 8 17 136 0,47 2,13 B 6 7 16 112 0,44 2,29 B 7 7 17 119 0,41 2,43 B 8 6 16 96 0,38 2,67 B 9 6 17 102 0,35 2,83 B 10 5 17 85 0,29 3,40 B 11 4 16 64 0,25 4,00 C 1 10 19 190 0,53 1,90 C 2 10 20 200 0,50 2,00 C 3 9 19 171 0,47 2,11 C 4 9 20 180 0,45 2,22 C 5 8 20 160 0,40 2,50 C 6 7 20 140 0,35 2,86 C 7 6 20 120 0,30 3,33 C 8 5 20 100 0,25 4,00 D 1 10 19 190 0,53 1,90 D 2 10 20 200 0,50 2,00 D 3 9 19 171 0,47 2,11 D 4 9 20 180 0,45 2,22 D 5 8 20 160 0,40 2,50 D 6 7 20 140 0,35 2,86 D 7 6 20 120 0,30 3,33 D 8 5 20 100 0,25 4,00 Tabela 4: Temna področja ter njihovo razmerje med višino in širino pri različnih povečavah in kotih zasuka števnika na zajeti sliki S pregledom zadnjega stolpca tabele 4 se lahko prepričamo, da se razmerje med višino in širino temnih področij nahaja nekje med 1 6 in 40 ter je relativno invariantno na povečavo, s katero je števnik zajet. Tabela 5 in graf na sliki 31 nam prikazujeta povzetek teh podatkov. Številka povečave Minimalno razmerje Š/V Maksimalno razmerje Š/V Minimalno razmerje V/Š Maksimalno razmerje V/Š A 0,29 0,62 1,63 3,50 B 0,25 0,60 1,67 4,00 C 0,25 0,53 1,90 4,00 D 0,25 0,53 1,90 4,00 Vse 0,25 0,62 1,63 4,00 Tabela 5: Povzetek minimalnih in maksimalnih vrednosti razmerja med višino in širino temnih področij števnika 4,50 4,00 >to 3,50 > 3,00 2,50 £ 2,00 N 1,50 01 1,00 0,50 0,00 O O <0 <0 <0 Vzorci po posameznih povečavah Slika 31: Grafični prikaz razmerij med višino in širino temnih področij števnika po posameznih povečavah Eksperimentiranje z večjo množico vzorcev nam pokaže, da lahko vsa temna področja binarizirane podvzorčene slike izločimo kot neustrezna oz. tista, ki ne pripadajo števniku, če se njihovo razmerje med višino in širino ne nahaja v intervalu od 11 do 43. S tem izločimo večino odvečnih področij, ne pa vseh. Preostala področja med seboj primerjamo po velikosti in njihovih medsebojnih legah na sliki ter tako ugotovimo, katera pripadajo števniku in katera so za nas moteča. Postopek je naslednji. Postopek izločanja nezaželenih temnih področij 1. seznam temnih področij razvrstimo po višinah temnih področij od najvišjega do najnižjega; 2. če je število področij na seznamu manjše od vnaprej predpisane vrednosti (4), postopek prekinemo in ugotovimo, da na sliki ni števnika; 3. inicializiramo seznam "kandidati" ter nanj prenašamo temna področja po vrsti od začetka, dokler ne naletimo na tako, ki se po višini razlikuje od največjega več kot za vnaprej predpisano vrednost; 4. če je število področij na seznamu "kandidati" manjše od vnaprej predpisane vrednosti (enake kot v koraku 2), ga zavržemo in se vrnemo nazaj na korak 2; 5. seznam "kandidati" razvrstimo po horizontalni koordinati centrov področij od najmanjše do največje; 6. inicializiramo seznam "temna področja števnika". Prvo področje na seznamu "kandidati" vpišemo v spremenljivko "trenutni" ter ga uvrstimo na seznam "temna področja števnika" in izbrišemo s seznama "kandidati"; 7. naslednje področje na seznamu "kandidati" vpišemo v spremenljivko "naslednji" in ga izbrišemo s seznama "kandidati", če obstaja, sicer nadaljujemo s korakom 10; 8. če se vertikalna koordinata področja "naslednji" razlikuje po vrednosti od vertikalne koordinate področja "trenutni" za manj kot tretjino višine področja "trenutni", področje uvrstimo na seznam "temna področja števnika", sicer nadaljujemo na koraku 10; 9. spremenljivko "naslednji" prepišemo v spremenljivko "trenutni" in se vrnemo na korak 7; 10. če je število področij na seznamu "temna področja števnika" manjše od vnaprej predpisane vrednosti (enake kot v koraku 2), ga zavržemo in se vrnemo na korak 6 v primeru, da seznam "kandidati" ni prazen, v nasprotnem primeru postopek prekinemo. Komentar postopka: • v koraku 2 predpisano najmanjše število temnih regij na seznamu izhaja iz zahteve po treh v celoti vidnih števkah na sliki (poglavje 7.2), kar pomeni dve področji med njimi ter še po eno na vsaki strani; • v koraku 3 zgrajen seznam "kandidati" predstavlja tista temna področja, ki imajo dovolj podobne višine, da bi lahko pripadali istemu števniku. S pogledom na sliko 30 se lahko prepričamo, da imajo vsa temna področja števnika skoraj enako višino; • v koraku 4 zavržemo seznam "kandidati", če ne zadosti istemu pogoju kot seznam temnih področij v koraku 2, ker ne vsebuje področij števnika, ki bi zadostil zahtevanim pogojem (poglavje 7.2); • nadaljnji koraki skušajo ugotoviti, ali so temna področja krajevno ustrezno razporejena po sliki, da bi lahko pripadala istemu števniku. Na seznamu "temna področja števnika" se nahajajo temna področja med števkami razvrščena od leve proti desni. Rezultat si lahko ogledamo na sliki 32, kjer so temna področja števnika označena s sivo barvo. Slika 32: Temna področja števnika V primeru, da bi bil rezultat postopka prazen seznam, bi to pomenilo, da se na sliki števnik ne nahaja. Če bi se katerokoli temno področje dotikalo zgornjega ali spodnjega roba slike, bi vzorec razglasili za napačen, tako kot zahtevajo specifikacije v poglavju 7.2. S tem, ko smo dobili temna področja števnika, je njegova detekcija končana ter grobo določena tudi njegova lokacija. 7.4 Omejitve opisanega postopka Pravkar opisani postopek temelji na določenem številu predpostavk, ki morajo biti izpolnjene, sicer rezultati ne bodo uporabni. Njegov namen ni predvideti vseh mogočih situacij, predvsem ne takih, ki se ob načinu uporabe, za katerega je namenjen, ne morejo pojaviti. Npr. ker postopek temelji izključno na iskanju temnih področij med števkami, ne pregleduje samih števk (tako kot smo zahtevali v poglavju 7.2), zato pa bo detektiral števec, ki ima števke prelepljene z nalepkami, kot da ni nič narobe - situacija, ki se v normalnih okoliščinah ne more pojaviti. Ravno tako bi ga lahko zmedli, če bi na belo površino postavili tri ali več manjših pravokotnih temnih površin ter jih razporedili v vrsto. Te omejitve niso resne, ker se ob smotrnem načinu uporabe ne morejo pojaviti. Resnejša omejitev je zahteva, da je števnik dobro ločen od ostalega dela čelne plošče z belo površino, česar predvsem nekateri starejši števci ne izpolnjujejo. Tak primer si lahko ogledamo na sliki 33 levo, kjer vidimo, da se decimalna vejica, ki je narisana enostavno tako, da je črna barva, s katero je narisan rob števnika, prekinjena. Rezultat razvrščanja in izločanja temnih regij si lahko ogledamo na sliki 33 desno, kjer vidimo, da eno temno področje manjka, kar ima za posledico, da nadaljnji postopki analize ne uspejo zaznati zadnje števke (poglavje 1). ■ L3 r PITE m h i a H h d i i Slika 33: Primer čelne plošče, kjer postopek odpove (levo) ter rezultat razvrščanja in izločanja temnih področij števnika (desno) Opazimo, da se temna področja po višini ne končajo na istih mestih kot števke, kar pa ne moti, kot bomo videli v nadaljnjih poglavjih. Sklepamo lahko, da postopek uspešno detektira števnik ter pravilno prepozna vse njegove temne regije, če je le-ta z belim robom ločen od ostalega dela čelne plošče, kar si lahko ogledamo na sliki 34. V prvem primeru vidimo, da ne moti niti črna decimalna vejica, ki se dotika števnika. Moti samo bela, ki se razširja v notranjost črnih področij kot na sliki 33. Slika 34: Primeri čelnih plošč, ki jih opisani postopek pravilno detektira 8 Lociranje števk V prejšnjem poglavju smo detektirali števnik ter mu v grobem določili položaj na slikovnem vzorcu. Kot rezultat detekcije dobimo seznam temnih področij, ki se nahajajo med števkami. Ta področja v nadaljevanju uporabimo za določitev regij, kjer se nahajajo števke. To pa ni edina naloga, ki jo moramo na tem mestu opraviti. Da bi uspešno izvedli poravnavo števk za primerjavo s trakom (poglavje 1), moramo natančno poznati višino števnika na sliki ter njegovo rotacijo glede na horizontalno os. Z območij, kjer se nahajajo števke, moramo tudi odstraniti morebitne robove števnika, da jih med poravnavo ne bi pripisali samim števkam. V poglavju 8.1 bomo natančno določili vertikalne meje števnika (parametre premic, ki števnik obdajata na zgornjem in spodnjem robu), s čimer pridobimo tudi informacijo o njegovi višini ter rotaciji. Sledi detekcija prisotnosti števke pred prvo in za zadnjo temno regijo (poglavje 8.3), ker na teh mestih ne moremo vnaprej predpostaviti njunih prisotnosti oz. odsotnosti. V poglavju 8.4 tvorimo seznam regij s števkami. Nazadnje bomo še opisali, kako s področij števk odstranimo moteče robove števnika (poglavje 8.5). 8.1 Vertikalni meji števnika Vertikalni meji števnika sta fiktivni premici, ki števnik na zgornjem in spodnjem robu ločujeta od ostalega dela čelne plošče. Ti premici moramo sedaj poiskati. Postopek temelji na določitvi večjega števila robnih točk števnika ter iskanja regresijske premice skoznje. Seznam temnih področij števnika bomo uporabili kot osnovni napotek, kje iskati te točke, saj je v vmesnih prostorih med števkami najlažje določiti, kje ima števnik rob. Na sliki 35 levo vidimo primer slike števca, kjer si lahko brez težav predstavljamo, kje obe vertikalni meji števnika potekata. Na desni strani slike 35 pa lahko opazujemo pripadajoča temna področja števnika. cr Made in Slovenia Slika 35: Števnik z lepo predstavljivima vertikalnima mejama (levo) ter pripadajoča temna področja med števkami (desno) Vidimo, da so temna področja med števkami dober napotek za iskanje točk, ki se nahajajo na vertikalnih mejah števnika, saj te točke ležijo v bližini njihovega zgornjega in spodnjega roba. Področja, kjer se nahajajo števke, za detekcijo mej niso primerna, saj s preprostimi postopki preiskovanja slike ne moremo vedeti, kje se števka konča in kje se prične meja števnika v primeru, ko se števke nahajajo v takih položajih, da med njimi in robom števnika ni nobenega vmesnega prostora (na sliki 35 to velja vsaj za zadnje tri števke na zgornjem robu in za vse na spodnjem). 8.1.1 Izločanje neprimernih temnih področij za iskanje mej Kljub temu, da so temna področja skoraj idealna za iskanje mej, nam majhen problem predstavljajo čelne plošče, kjer je decimalno mesto od ostalih ločeno z decimalno vejico, ki je vrisana s črno barvo prav do samega roba števnika, kar lahko vidimo na sliki 36 levo. Pripadajoča temna področja so prikazana na isti sliki desno. Slika 36: Primer števnika z motečo decimalno vejico (levo) ter pripadajoča temna področja (desno) Opazimo, da je spodnji rob skrajno desnega temnega področja (na slikah poudarjen s krožnico) neprimeren za iskanje meje števnika, saj na mestu, kjer se nahaja decimalna vejica, ne moremo sklepati na njen potek z enostavnimi postopki preiskovanja slike. Temne regije moramo torej najprej pregledati, če so ustrezne za iskanje robnih točk. Preiskujemo samo njihov spodnji rob, saj se decimalna vejica nikoli ne pojavi na zgornji strani števnika. Testiranje poteka na naslednji način. Postopek testiranja ustreznosti temne regije 1. od spodnjega levega oglišča temne regije preiskujemo binarizirano podvzorčeno sliko vertikalno navzdol, dokler ne naletimo na svetlo točko (v veliki večini primerov je to kar prva točka, ki se nahaja neposredno pod ogliščno točko temne regije); 2. enako storimo tudi pod spodnjim desnim ogliščem; 3. zapomnimo si tisto od obeh dobljenih točk, ki je bolj oddaljena od zgornjega roba slike; 4. pri vseh ostalih točkah, ki pripadajo spodnjemu robu temne regije, postopamo enako; 5. temna regija ni primerna za iskanje robnih točk, če je katerakoli v koraku 4 dobljena točka za več kot en slikovni element bolj oddaljena od zgornjega roba slike kot točka zapomnjena v koraku 3. V nasprotnem primeru je regija primerna. Komentar postopka: • v korakih 1 in 2 smo s preiskovanjem binarizirane podvzorčene slike določili dve točki, skozi kateri poteka grobi približek premice, ki predstavlja vertikalno spodnjo mejo števnika; • v koraku 3 določimo vodoravno premico, ki se nahaja pod oz. se dotika premice, dobljene v korakih 1 in 2 v celotnem področju temne regije; • v korakih 4 in 5 testiramo, ali se pod spodnjim robom temne regije nahaja moteča decimalna zareza tako, da ugotavljamo, ali se na kateremkoli mestu temna regija števnika razširja v območje pod vodoravno premico; • v koraku 5 dopuščamo toleranco ene točke (testiramo, če je katerakoli dobljena točka oddaljena več kot za en slikovni element od zgornje meje) zaradi šuma binarizacije, ki je vedno prisoten pri tako enostavnem postopku binarizacije, kot ga mi izvajamo (poglavje 6.2). Na slikah 37 in 38 si lahko ogledamo rezultat preiskovanja temnih regij, kjer smo neustrezno tudi uspešno detektirali. Na sliki 37 smo z belo in pod njimi s sivo barvo označili preiskane točke. Prisotnost samo belih točk pomeni, da je regija ustrezna, vsaj ena siva točka pod belimi pa je dovolj, da regijo izločimo kot neustrezno. Izločeno temno regijo si lahko ogledamo na sliki 38, kjer je prikazana z belo barvo. Na isti sliki se lahko prepričamo tudi, da so vse preostale regije primerne za določanje točk na vertikalnih mejah števnika. 9 ti 3 S E Točke, ki se preveč razširjajo navzdol Točke, ki ustrezajo I Slika 37: Izločanje neustreznih temnih regij za določanje mej števnika (levo manjša, desno večja povečava) Slika 38: Izločena neustrezna temna regija za določanje mej števnika (levo manjša, desno večja povečava) 8.1.2 Iskanje točk na vertikalnih mejah števnika Točke, ki se nahajajo na obeh mejah števnika, iščemo v bližini zgornjega in spodnjega roba temnih regij, za katere smo v predhodnem poglavju ugotovili, da so primerne. Postopek je tak, da te regije najprej skrčimo za dva slikovna elementa na vsaki strani. To storimo zato, da ne dobimo prevelikega števila točk (horizontalna skrčitev) in da pričnemo preiskovanje zanesljivo znotraj števnika (vertikalna skrčitev). Točk na mejah števnika ne iščemo več na podvzorčeni sliki, ampak na originalni, zato moramo temne regije ustrezno preračunati na nove koordinate (zgornjo levo točko pomnožimo z osem, spodnjo desno pa pomnožimo z osem ter prištejemo sedem). Skrčena in preračunana temna področja so prikazana na sliki 39 kot beli pravokotniki z vrisanimi diagonalnimi križi. Slika 39: Področja, kjer bomo iskali točke na mejah števnika (levo manjša, desno večja povečava) Preiskovanje se prične v zgornji levi točki prve regije in poteka navzgor, dokler ne dosežemo slikovnega elementa, ki ima večjo osvetljenost od praga binarizacije, ali dokler ne dosežemo roba slike (v tem primeru postopek prekinemo, ker se števnik dotika roba slike; poglavje 7.2). Ker originalne slike nismo filtrirali, se moramo prepričati, da dobljena točka res pripada meji števnika in ni posledica šuma. V ta namen preiskovanje nadaljujemo še določeno število točk (v našem primeru 4) naprej in če so vse svetlejše od praga binarizacije, točko razglasimo za mejno in jo uvrstimo na seznam točk, ki pripadajo zgornji meji števnika. Postopek ponovimo za vsak tretji slikovni element (lahko bi za vsak ali vsak drugi, a izkaže se, da bi s tem dobili večje število točk, ki pa ne prispevajo dodatne informacijske vsebine, saj so premice dobljene z manjšim številom le-teh praktično identične), ki se nahaja na zgornjem robu skrčene temne regije. Nato pa enako še za spodnji rob, le da sliko preiskujemo navzdol in točke uvrščamo na seznam točk, ki pripadajo spodnji meji števnika. To ponavljamo za vsako primerno temno regijo. Rezultat postopka sta dva seznama točk (sliki 40 in 41), skozi katera lahko potegnemo regresijski premici, ki predstavljata vertikalni meji števnika (sliki 42 in 43). Slika 40: Točke, ki pripadajo vertikalnim mejam števnika (levo manjša, desno večja povečava) 9 Slika 41: Povečan prikaz točk, ki pripadajo vertikalnim mejam števnika (levo manjša, desno večja povečava) Slika 42: Prikaz vertikalnih mej števca (levo manjša, desno večja povečava) 9 9 u y 7 i 1 n ni Slika 43: Povečan prikaz vertikalnih mej števca (levo manjša, desno večja povečava) 8.2 Parametri števnika V parametrični obliki določeni vertikalni meji števnika nam omogočata natančno določitev dveh njegovih parametrov, ki ju potrebujemo pri poravnavi števk (poglavje 1). To sta zasuk glede na horizontalno os ter povečava, pri kateri smo števnik zajeli (oz. parameter, s katerim določimo relativno razmerje med povečavami različnih zajemov). Zasuk števnika glede na horizontalno os izračunamo kot povprečno vrednost zasukov obeh vertikalnih mej, povečavo pa kot razliko njunih svobodnih členov: R _ arctg(kl) + arctg(k2) p _ n _ n RŠ 2 Š n2 nj kjer pomenijo oznake: • RŠ rotacija števnika (v radianih), • kj, k 2 smerna koeficienta zgornje in spodnje vertikalne meje, • PŠ merilo povečave števnika, • nj, n2 svobodna člena zgornje in spodnje vertikalne meje. Povečava števnika se neposredno in linearno odraža v njegovi višini, t.j. isti števnik, ki je zajet pri dvakrat večji povečavi, bo na sliki zavzemal po višini dvakrat večje število slikovnih elementov. Ker se izhodišče koordinatnega sistema slikovnih elementov prične v zgornjem levem kotu slike, ima parameter nj manjšo vrednost kot n2 in je merilo povečave vedno pozitivno. 8.3 Detekcija prve in zadnje števke Natančno določeni vertikalni meji števnika sta predpogoj za določitev zgornjih in spodnjih mej območjem, na katerih se nahajajo števke. Brez njih bi bilo nemogoče ugotoviti, kje se števka konča ter prične rob števnika, zlasti v tistih položajih koleščka, kjer med njima ni nobenega temnega področja (zadnje tri števke na sliki 35, str. 72). S tem, ko smo uspeli določiti parametre fiktivnih premic, ki potekata po obeh vertikalnih mejah števnika, smo tudi določili, kje so vertikalni robovi območij s števkami. Naslednje vprašanje, na katerega moramo odgovoriti, je, koliko števk je na sliki prisotnih ter kje se nahajajo horizontalno znotraj področja števnika. S pogledom na sliko 34, str 69 lahko ugotovimo, da se med vsakima temnima področjema števnika nahaja po ena števka, torej lahko prisotnost in približni položaj večine števk določimo že na podvzorčeni sliki. Na ta način pa ne moremo določiti, kaj se nahaja pred prvim in za zadnjim temnim področjem števnika. Izkaže se, da se lahko na teh mestih števke nahajajo ali pa ne. Nekaj možnih situacij prikazuje slika 44. Slika 44: Različne situacije pred prvo in za zadnjo temno regijo števnika Zgornji levi primer na sliki 44 nam kaže situacijo, ko se pred prvim in za zadnjim temnim področjem nahaja dodatna števka. Zgornji desni primer je ravno nasproten; obe strani sta brez dodatnih števk. Spodaj levo vidimo situacijo, ko se dodatna števka nahaja samo na desni strani. Spodaj desno pa je števnik zajet tako, da na desni strani ne smemo prepoznati dodatne števke, ker ni vidna v celoti. Vidimo, da samo z analizo temnih področij ne moremo potrditi ali izključiti prisotnosti dodatnih števk. Odgovor moramo poiskati z analizo originalne slike na področju pred prvo in za zadnjo temno regijo. Postopamo na naslednji način. Postopek iskanja števke pred prvo temno regijo 1. določimo preiskovalno premico, ki je pravokotna na vertikalni meji števnika ter poteka skozi tisto oglišče levega roba prve temne regije, ki zagotavlja, da se noben del premice v območju med mejama števnika ne nahaja levo od levega roba regije (slika 45); 2. v območju med obema vertikalnima mejama števnika preiskujemo originalno sliko vzdolž preiskovalne premice s ciljem, da ugotovimo, ali se na njej nahaja vnaprej določeno število zaporednih točk, ki so svetlejše od praga binarizacije; 3. če smo v prejšnjem koraku ugotovili, da tako zaporedje točk obstaja, razglasimo položaj preiskovalne premice za začetek področja, kjer se lahko števka nahaja, in nadaljujemo s korakom 6; 4. preiskovalno premico premaknemo nekaj točk (3) v levo; 5. če preiskovalna premica v območju med vertikalnima mejama števnika ne pade izven slike, se vrnemo na korak 2, sicer ugotovimo, da se pred prvo temno regijo števka ne nahaja in postopek končamo; 6. preiskovalno premico premaknemo za eno točko v levo; 7. če preiskovalna premica v območju med vertikalnima mejama števnika pade vsaj delno izven slike, smatramo, da števka pred prvo regijo ni prisotna ali vidna v celoti, ter postopek prekinemo; 8. vzdolž preiskovalne premice iščemo zaporedje vnaprej določenega števila točk, ki so svetlejše od praga binarizacije; 9. če tako zaporedje obstaja, se vrnemo na korak 6, sicer smo pred prvim temnim področjem našli števko, ki je v celoti vidna. Slika 45: Princip določanja preiskovalnih premic Komentar postopka: • vse temne regije so preračunane na velikost originalne slike; • v koraku 2 in 8 iščemo zaporedje točk, ki so svetlejše od praga binarizacije, in ne ene same. Razlog je v tem, da originalna slika ni filtrirana in se na tak način izogibamo vplivu šuma binarizacije; • v koraku 4 premikamo preiskovalno premico po več točk naenkrat zaradi pohitritve izvajanja. Ker iščemo začetek morebitno prisotne števke in je najmanjša širina le-te cca. 30 točk, lahko to počnemo brez bojazni, da bi števko preskočili; • če smo pri izvajanju postopka dosegli korak 6, pomeni, da smo dobili možni začetek števke. Od tu naprej iščemo njen konec, zato moramo preiskovalno premico premikati po eno točko v levo, da pravilno detektiramo tudi števke, ki se nahajajo zelo blizu levega roba slike, t.j. so od njega oddaljne samo en slikovni element; • pri tem postopku predpostavljamo (in s tem delno kršimo pravilo 7 v poglavju 7.2), da noben simbol števke ni po vertikali pretrgan (t.j. ni sestavljen iz dveh po vertikali razmejenih delov). Analogno preiskujemo originalno sliko še za zadnjim temnim področjem števnika. Ko je postopek končan, poznamo lokacije vseh področij, kjer se števke nahajajo. 8.4 Tvorjenje seznama območij s števkami Območja števk, ki smo jih predhodno detektirali, hranimo kot seznam pravokotnih področij originalne slike. Področja niso poljubno orientirana, saj zahtevamo, da potekajo njihove stranice vzporedno oz. pravokotno z robovi slike (slika 46). Slika 46: Območja števk pri različnih rotacijah števnika (od leve proti desni: vodoravni položaj, zasuk protiurno, zasuk sourno) Na sliki 46 vidimo, da se pravokotna področja ne nahajajo več v isti vodoravni liniji, ko je števnik zarotiran (srednji in desni primer), so pa še vedno vsa orientirana v isto smer, t.j. njihovi zgornji in spodnji robovi so vzporedni z zgornjim in spodnjim robom slike, njihovi levi in desni pa z levim in desnim robom slike. Razlog je v tem, da so postopki obdelave takih področij hitrejši in preprostejši. Postopek določanja področij števk je različen za števke med temnima področjema števnika in za tiste, ki se nahajajo pred prvo oz. za zadnjo temno regijo (slika 47). Števka se nahaja med temnima regijama števnika 1. levi rob določimo tako, da desni rob predhodnega temnega področja premaknemo za osem slikovnih elementov v levo. Razlog je v tem, da so bila temna področja generirana z analizo podvzorčene slike, kar pomeni, da se lahko v najslabšem primeru na originalni sliki za toliko prekrivajo z območji števk; 2. desni rob določimo tako, da levi rob naslednjega temnega področja premaknemo v desno za osem slikovnih elementov; 3. zgornji rob poteka skozi eno od točk, kjer se levi ali desni rob števke seka z zgornjo vertikalno mejo števnika, in sicer tisto, ki je bližja zgornjemu robu slike (na sliki 47 se v točkah 1 in 2 sekata levi oz. desni rob z zgornjo mejo števnika; zgornja meja števke poteka skozi točko 1); 4. spodnji rob določimo povsem analogno z zgornjim; opazujemo spodnjo vertikalno mejo števnika in izberemo tisto točko, ki je bližja spodnjemu robu slike (na sliki 47 sta prikazani točki 3 in 4; rob števke poteka skozi točko 4). Števka se nahaja pred prvo oz. za zadnjo temno regijo števnika 1. levi rob določimo tako, da poiščemo točki, v katerih se preiskovalna premica na začetku števke seka z vertikalnima mejama števnika; levi rob števke poteka skozi točko, ki je bližja levemu robu slike (na sliki 47 sta taki točki 5 in 6; levi rob poteka skozi točko 6); 2. desni rob lociramo z analognim postopkom. Določimo točki, v katerih se preiskovalna premica na koncu števke seka z vertikalnima mejama števnika; desni rob števke poteka skozi točko, ki je bližja desnemu robu slike (na sliki 47 sta taki točki 7 in 8; desni rob poteka skozi točko 7); 3. zgornji rob poteka skozi tisto ob obeh točk, v kateri levi in desni rob sekata zgornjo vertikalno mejo števnika, ki je bližja zgornjemu robu slike (na sliki 47 sta taki točki 5 in 7; zgornji rob poteka skozi točko 5); 4. spodnji rob poteka skozi tisto od obeh točk, v kateri levi in desni rob sekata spodnjo vertikalno mejo števnika, ki je bližja spodnjemu robu slike (na sliki 47 sta taki točki 6 in 8; spodnji rob poteka skozi točko 8). Slika 47: Princip določanja področij s števkami (levo: števka se nahaja med temnima področjema števnika, desno: števka se nahaja pred prvim temnim področjem) Postopek izvedemo za vsako števko, ki smo jo predhodno detektirali. Rezultat je seznam pravokotnih področij na sliki, kjer se števke nahajajo. Prikazana so na sliki 46. 8.5 Odstranjevanje motečih robov števnika Težava, ki se pojavi zaradi zahteve po vzporednosti stranic področij s slikovnimi, je, da področja števk vsebujejo tudi robove števnika. Na sliki 48 smo s sivo barvo prikazali območja, kjer se nezaželen efekt lahko pojavi. Zaradi slabe vidljivosti (območja so majhna) smo na sliki 49 nekatere števke prikazali povečano. Slika 48: Moteči robovi števnika ' 9 0 JOJJII999 Slika 49: Povečan prikaz motečih robov števnika Vidimo, da se pri števkah, ki se nahajajo znotraj temnih področij števnika, motnja pojavi samo na zgornjem in spodnjem robu, pri skrajno levi in desni števki pa se lahko pojavi tudi na levi oz. desni strani (slika 50). Te motnje moramo odstraniti, da nam pozneje ne bodo kvarile poteka primerjave s trakom (poglavje 11.1). Vse, kar moramo storiti, je z originalne slike pobrisati trikotna področja med zgornjo mejo števnika in zgornjo mejo območij posameznih števk. Podobno na spodnji strani pobrišemo trikotna območja med spodnjo mejo števnika in spodnjo mejo območij, kjer se nahajajo števke (na slika 50 levo sta ti področji označeni s puščicami). Števki, ki se nahaja pred prvo temno regijo števnika (če obstaja), moramo še dodatno pobrisati trikotno območje med levo mejo regije in zadnjo preiskovalno premico (slika 50 v sredini). Podobno tudi števki za zadnjo temno regijo (slika 50 desno) pobrišemo območje med zadnjo preiskovalno premico in desnim robom njenega območja. Rezultat si lahko ogledamo na sliki 51. Slika 50: Moteči robovi števnika (levo: števka se nahaja med temnima področjema števnika, sredina in desno: števka se nahaja pred prvim oz. za zadnjim temnim področjem) Slika 51: Odstranjeni moteči robovi števnika S tem je postopek lociranja števk končan. Števke, ki so na sliki vidne v celoti, smo popisali z nizom območij, kjer se le-te nahajajo, ter s teh območij odstranili vse elemente števnika, ki bi s števkami lahko interferirali v postopku poravnave (poglavje 1). 9 Poravnava števk V prejšnjem poglavju smo števkam določili položaje na sliki z namenom, da jim bomo v nadaljevanju pripisali numerične vrednosti. Postopek, ki je bil nakazan v poglavju 4.3, temelji na primerjavi bitnih kart števk s sliko raztegnjenaga koleščka števnika. Direktna primerjava pa je možna le v primeru, da so števke za izgradnjo traku (poglavje 1) zajete pod enakimi pogoji, kot se vrši odčitavanje vrednosti števnika. To je v nekaterih primerih možno zagotoviti (npr. zajem za izgradnjo traku in tudi vsi zajemi za odčitavanje vrednosti so opravljeni s števci, pritrjenimi na istem togem nosilcu). V splošnem pa ocenjujemo, da je taka zahteva moteča, nepraktična in bi skrčila možne načine uporabe sistema (npr. ročni odčitovalnik bi bil povsem neuporaben, saj od operaterja ne moremo pričakovati, da bo napravo za zajem poravnal s prosto roko na manj kot eno kotno stopinjo natančno). Problem rešujemo tako, da števke poravnamo, preden jim določimo vrednosti; njihove slike skušamo prilagoditi (normirati) tako, da bi bile čim bolj podobne slikam, ki bi jih zajeli pod vnaprej določenimi pogoji. V tem poglavju se bomo seznanili s problematiko poravnave števk (poglavje 9.1), predstavili naš pristop k njenemu reševanju (poglavje 9.2) ter implementirani postopek tudi podrobno opisali (poglavje 9.3). Nazadnje bomo v poglavju 9.4 prikazali, na kakšen način poravnavo uporabljamo. 9.1 Problematika poravnave števk V zadnjih treh poglavjih smo opisali postopke analize slikovnih vzorcev, ki smo jih namenoma zasnovali tako, da delujejo v širokem območju pogojev, pod katerimi lahko slike števcev zajamemo. Tako smo s postopki začetne analize slike (poglavje 1) uspeli delno odpraviti vplive, katerim so slike podvržene zaradi sprememb osvetlitve števcev pri različnih zajemih. Postopka detekcije števnika (poglavje 1) in lociranja števk (poglavje 1) sta zasnovana tako, da nalogo opravita kljub različnim povečavam in rotacijam števca na sliki. Neobčutljivost na te parametre želimo ohraniti skozi celoten postopek odčitavanja vrednosti. Pripomnimo naj, da je neobčutljivost na spremenjeno osvetlitev vzorca zagotovljena s pravilno postavitvijo praga binarizacije skozi vse faze postopka; občutljivosti na rotacijo in povečavo pa nismo mogli odpraviti že s tem, da smo detekcijo zasnovali neobčutljivo nanju. To nalogo moramo rešiti s postopkom poravnave števk. Moteči vpliv rotacije in spremenjene povečave števnika je prikazan na sliki 52, kjer lahko opazujemo njun učinek na sliko zadnje (skrajno desne) števke števnika. Zgornji levi okvirček prikazuje referenčno sliko števca ter števko, s katero bomo primerjali ostale. Drugi primeri v zgornji vrsti so zajeti pri enaki povečavi in spremenjenem zasuku (od leve proti desni: zasuka ni, števec je zarotiran so- in protiurno). Spodnja vrsta prikazuje zajeme pri manjši povečavi ter z enakimi zasuki. Pod slikami števnikov sta prikazani neporavnana in poravnana (po postopku, ki ga opisujemo v nadaljevanju) slika zadnje števke, pod njima pa lahko vidimo izključujočo disjunkcijo (ang. exclusive or) med njima in referenčno števko. Vidimo, da pride ob spremenjeni rotaciji in še posebej povečavi do znatnih odstopanj neporavnanih števk od referenčne. Postopek poravnave pa je v vseh primerih uspel njihove slike uskladiti, tako da lahko opazimo manjša odstopanja samo na robovih. Slika 52: Vpliv rotacije in povečave števca na slike števk ter učinek poravnave 9.2 Klasičen in naš pristop k poravnavi števk Poravnavo števk bi lahko izvedli s klasičnimi postopki transformacije slikovnih vzorcev, t.j. s preprosto izvedbo rotacije in povečave slike števke za ustrezen kot in faktor povečave [4, 6]. Prednost takega pristopa bi bila preprosta in lahko razumljiva izvedba postopka, slabost pa večja časovna zahtevnost, saj na ta način ne bi mogli izkoristiti a priori znanja o vsebini slike. Vseeno si ta postopek oglejmo, da ga bomo lahko primerjali z našim. 9.2.1 Klasičen postopek transformacije slike Klasična izvedba rotacije in povečave slike je taka, da najprej inicializiramo novo sliko ustrezne velikosti, ki bo vsebovala rezultat transformacije. Nato se za vsak slikovni element nove slike izračuna (inverzna transformacija k tisti, ki jo izvajamo), na katero mesto originalne slike se preslika. Ker se to mesto v splošnem ne ujema natančno z nobenim njenim slikovnim elementom (slikovni elementi imajo celoštevilske koordinate, rezultati transformacije pa imajo tudi decimalni del), vrednost slikovnega elementa na novi sliki določimo z interpolacijo vrednosti večih slikovnih elementov originalne slike. Pri tem največkrat uporabljamo bilinearno interpolacijo (slika 53), v nekaterih primerih pa tudi interpolacije višjega reda. Podroben opis postopka najdemo v [1]. Iz povedanega sledi, da moramo za vsak slikovni element nove slike izračunati njegovo inverzno transformacijo (v primeru dvodimenzionalne rotacije in povečave to pomeni štiri množenja in dve seštevanji) po naslednji enačbi: xl' cos(^) - sin(^) X o - x sin(^) cos(^) _0 _ y _ Sx C0s(^> - Sy sin(^> Sx sm(^) Sy cos(0) kjer pomenijo oznake: • x, y koordinati slikovnega elementa, ki ga transformiramo, • Xj, x2 transformirani koordinati slikovnega elementa, • p kot rotacije, • Sx, Sy faktorja povečave po x in y osi. Ker sta rotacija in povečava konstantni za vse slikovne elemente, ki jih transformiramo, je transformacijska matrika konstantna in jo lahko izračunamo pred začetkom transformacije. Enačbe za bilinearno interpolacijo, ki jo moramo ravno tako izvesti za vsak transformiran slikovni element, so naslednje (ilustracija na sliki 53): V (A) = V (X2,(X.) - V (x„y,) X - X) + V (X, y) (X2 - X1) V (B) = V (x2.^2) - V (Xi, y2).(X - X,) + V (X,, >,) (X2 X1 ) V(X,,) = fM!> •(,-y,) (y - yi) kjer pomenijo oznake: • X, y koordinati točke, kateri določamo vrednost, • X;, y; i = 1,2 koordinate slikovnih elementov, ki so točki najbližji, • V (A), V (B) vmesna rezultata interpolacije v eni smeri, • V (X, y) interpolirana vrednost slikovnega elementa, ki jo iščemo. Slika 53: Ilustracija bilinearne interpolacije To pomeni dodatnih devet seštevanj, tri deljenja in tri množenja. Za izvedbo izračunov moramo tudi prebrati vrednosti štirih slikovnih elementov originalne slike. Pripomnimo naj, da število slikovnih elementov originalne slike narašča kvadratno s povečavo (natančneje z višino števk na sliki), pri kateri števec zajemamo. Zaključimo lahko, da je klasičen postopek poravnave časovno potraten, zato smo razvili svojega, ki je specializiran za poravnavo števk in ga ni možno uporabiti za transformacijo splošnih slik. 9.2.2 Naš pristop k transformaciji slike števke Postopek, ki smo ga razvili, osnovne slike ne transformira, pač pa neporavnano sliko števke uporabi kot navodilo za sintezo nove. Glavna pohitritev v primerjavi s predhodno opisanim postopkom je v tem, da transformiramo samo robove števk na sliki, medtem ko ostale dele njihovih površin zapolnimo s poplavljanjem področij. Manjša časovna zahtevnost takega pristopa izhaja iz tega, da večine slikovnih elementov na sliki ni potrebno transformirati (nobenega, ki se nahaja izven ali v notranjosti števke); poleg tega vrednosti na novi sliki ne računamo z bilinearno interpolacijo. Število robnih točk, ki jih transformiramo, pa narašča linearno s povečavo števca oz. višino števke. 9.3 Implementirani postopek poravnave Omenili smo že, da naš postopek temelji na transformaciji robov ter poplavljanju površin števk. Zato v prvem koraku označimo na sliki, katere točke so robne in katere pripadajo notranjosti števk. Postopek je naslednji. Postopek označevanja robnih in notranjih točk števke 1. originalno sliko preiskujemo v območju števke po vrsticah od leve proti desni, dokler ne naletimo na slikovni element, ki ima večjo osvetljenost od praga binarizacije; 2. točko označimo kot robno; 3. nadaljujemo preiskovanje originalne slike, dokler ne naletimo na točko, ki ima osvetljenost manjšo od praga binarizacije, ali dokler ne naletimo na rob območja števke; 4. točko, ki se nahaja levo od dobljene točke, označimo kot robno; 5. vse točke med obema robnima točkama označimo kot notranje točke; 6. vračamo se na korak 1, dokler ne pregledamo celotnega področja števke, nato nadaljujemo s korakom 7; 7. originalno sliko preiskujemo v območju števke po stolpcih od zgoraj navzdol, dokler ne naletimo na slikovni element, ki je označen kot robni ali notranji; 8. če je slikovni element označen kot notranji, ga spremenimo v robnega; 9. nadaljujemo preiskovanje originalne slike, dokler ne naletimo na točko, ki ni označena niti kot notranja niti kot robna, oz. dokler ne naletimo na rob slike; 10. če točka nad točko, dobljeno v koraku 9, ni označena kot robna, jo spremenimo v njo; 11. vračamo se na korak 7, dokler ne pregledamo celotnega področja števke. Slika 54 prikazuje vmesni in končni rezultat označevanja točk na sliki. Slika 54: Označevanje točk na sliki kot robne in notranje (od leve proti desni: začetno stanje, rezultat horizontalnega preiskovanja, končni rezultat) Na levi risbi slike 54 se nahaja namišljeno začetno stanje. Slikovni elementi, ki so svetlejši od praga binarizacije, so prikazani sivo, ostali so beli. Srednja risba prikazuje vmesni rezultat izvajanja korakov od 1 do 6. S črno barvo so označene točke, ki pripadajo robu območja, s sivo pa notranje. Opazimo, da ta del postopka detektira vse točke, ki pripadajo levim in desnim robovom območja; točke, ki pripadajo zgornjim in spodnjim, pa so označene kot notranje. Pomankljivost odpravimo z izvajanjem korakov od 7 do 11. Rezultat vidimo na desni risbi, kjer so novo dobljene točke označene s temnejšo sivo barvo (zaradi nazornosti; dejansko sta obe skupini točk označeni kot robni in jih ne ločujemo med sabo). Rezultat postopka nad realistično sliko si lahko ogledamo na sliki 55, kjer smo postopek izvedli za vsako števko posebej. Robne točke števk so označene z belo, notranje pa s sivo barvo. Okoli števk smo tudi narisali pravokotnike, ki predstavljajo dejanska področja, v katerih se števke nahajajo. Dobili smo jih tako, da smo si med izvajanjem postopka zapomnili skrajno levo, desno, zgornjo in spodnjo točko, ki smo jo razglasili za robno. Natančno poznavanje teh področij, nam postopek dodatno pohitri, ker nam večjega dela območij izven števk ni potrebno več preiskovati. Slika 55: Prikaz robnih in notranjih točk števk (levo so vidne vse števke na sliki, desno sta zadnji dve prikazani povečano) Naslednji korak poravnave je transformacija robov. Naloge ne moremo rešiti tako, da vse robne točke, ki smo jih dobili v prejšnjem koraku, preslikamo s pomočjo transformacijske enačbe. Težava takega pristopa se pojavi pri slikah, ki so glede na original povečane. V takem primeru bi dobili pretrgane krivulje robov (princip je prikazan na sliki 56). To za nas ni sprejemljivo, saj bomo notranjosti števk poplavljali, zato morajo biti robovi sklenjene krivulje, sicer bi hkrati poplavili tudi zunanjosti števk in s tem njihove slike povsem pokvarili. Slika 56: Pretrganje roba pri veliki povečavi slike Postopek preslikave modificiramo tako, da preslikane točke na novi sliki povezujemo med seboj, če se njihovi originali dotikajo oz. so si sosednji (tudi diagonalno). S tem zagotovimo, da so preslikani obrisi števk nepretrgane konture. Rezultat preslikave robov si lahko ogledamo na slikah 57 in 58. Slika 57: Transformirani robovi števk (od leve proti desni: višine izločenih števk so 100, 150 in 200 slikovnih elementov) Slika 58: Povečan prikaz transformiranih robov števk (od leve proti desni: višine izločenih števk so 100, 150 in 200 slikovnih elementov) Konture števk na slikah 57 in 58 smo dobili tako, da smo rotacijo določili kot nasprotno vrednost rotacije števnika (poglavje 8.2), faktorje povečave pa smo izbrali tako, da so transformirane števke visoke 100, 150 in 200 slikovnih elementov. Vidimo, da so števke postavljene pokončno, kljub temu da so na originalni sliki zarotirane skupaj s števnikom. Pri večjih povečavah opazimo tudi nazobčanost robov, ki so posledica tega, da smo slike sosednjih točk povezovali med seboj z ravno črto in ne s krivuljo višjega reda. Izkaže se, da ta slabost postopka ni moteča za odčitavanje vrednosti in je le lepotna napaka. Števke na poravnani sliki moramo še poplaviti, da bo rezultat preslikave tak, kot si ga želimo. V ta namen moramo določiti točke, kjer poplavljanje začnemo. Da zagotovimo robustnost postopka, moramo začetne točke izbrati čim bolj v notranjosti področij števk, da se začetna točka poplavljanja ne bi preslikala v zunanjost števke (to je zlasti nevarno pri velikih pomanjšavah, kjer bi točka v bližini roba števke lahko bila preslikana na njen rob), s čimer bi povzročila poplavljanje napačnih področij. Točke, ki so za pričetek poplavljanja najbolj ustrezne, poiščemo tako, da vsaki točki določimo, koliko je oddaljena od roba števke, ter izberemo tisto, ki je oddaljena najbolj. Če je takih točk več, izberemo tisto, katere vsota oddaljenosti sosedov je največja; povsem enako, kot smo v poglavju 7.3 določali točke, ki smo jih razširjali v temne regije. Števke pričnemo poplavljati na tistih mestih, kamor se te točke transformirajo po enaki formuli, kot smo jo uporabili za transformacijo robov. Postopek je naslednji. Postopek zapolnjevanja transformiranih robov števke 1. Na originalni sliki določimo vsaki notranji točki njeno oddaljenost od prve robne točke. Razdalja je definirana kot najmanjše število notranjih točk, ki jih moramo prepotovati, da pridemo do robne točke; pri tem lahko potujemo v vseh osmih smereh, torej tudi diagonalno (sliki 59 in 60); 2. poiščemo točko z največjo oddaljenostjo. Če je takih točk več, izberemo tisto, katere vsota oddaljenosti sosedov je največja. Če je tudi takih točk več, izberemo katerokoli; 3. poplavimo originalno sliko s pričetkom v izbrani točki; 4. izbrano točko transformiramo in poplavimo poravnano sliko s pričetkom v transformirani točki; 5. dokler so na sliki točke z dovolj veliko oddaljenostjo, se vračamo na korak 2, sicer prekinemo. Komentar postopka: • V koraku 3 poplavljamo originalno sliko s pričetkom v izbrani točki, da bi videli, kolikšen del transformirane slike bomo z njo poplavili. Celotno področje, ki je poplavljeno, ne pride več v poštev pri izbiri naslednje točke. Na ta način zagotovimo poplavljanje cele števke ne glede na to, iz koliko pretrganih območij je sestavljena z najmanjšim številom poplavljanj, ter preprečimo neskončno zanko, ki bi neprestano izbirala isto točko. 0 1 0 Ö /t - n n i n c\ ■ i» Slika 59: Oddaljenost notranjih točk števk od njihovih robov (večja osvetljenost točke ponazarja večjo oddaljenost) in optimalne točke poplavljanja (prikazani s temnimi križci) števk (levo je prikazana zajeta slika v celoti, desno vidimo povečane zadnje tri števke) Slika 60: Močno povečan in za 90° zarotiran prikaz optimalnih izvorov Rezultat postopka si lahko ogledamo na slikah 61 in 62, kjer vidimo, da smo konture s slik 57 in 58 uspešno zapolnili. S tem je kalibracija števk končana. Slika 61: Poravnane števke (od leve proti desni: njihove višine so 100, 150 in 200 slikovnih elementov) Slika 62: Povečan prikaz poravnanih števk (od leve proti desni: njihove višine so 100, 150 in 200 slikovnih elementov) 9.4 Način uporabe poravnave Možnost spremeniti zasuk in povečavo števk sama po sebi ni zadosten pogoj za uspešno izvedbo poravnave. Pomembna je tudi izbira pravih vrednosti teh parametrov. Na tem mestu si bomo ogledali, kako postopamo pri poravnavi, ko pripravljamo slike števk za izgradnjo traku (poglavje 1), ter pri določanju števkinih vrednosti (poglavje 1). V obeh primerih izberemo vrednost zasuka števke kot nasprotno vrednost rotacije števnika. S tem dosežemo, da so poravnane števke postavljene pokončno ne glede na to, kakšen je zasuk števnika na sliki. Pri izgradnji traku izberemo vrednost povečave manjšo ali enako ena (slike števk pomanjšamo ali pustimo enake velikosti, pri keterih smo jih zajeli). Vrednosti, večje od ena, ne priporočamo uporabljati, saj s tem postane trak večji, določanje vrednosti z njegovo pomočjo pa dolgotrajnejše, ker je čas računanja razdalje med njim in števko večji. Ob tem pa se informacija, ki jo trak vsebuje ne poveča, saj bi morali števec zajeti pri večji povečavi, če bi hoteli imeti na njem več detajlov in s tem natančnejše odčitavanje. Pomanjševanje števk pri izgradnji pa je smiselno, saj imamo s tem možnost izbirati med večjo hitrostjo odčitavanja ali natančnejšim odčitkom (poglavje 1). Ko števec odčitavamo, je izbira povečave preprosta. Zagotoviti moramo enako velikost števk, kot smo jo izbrali pri izgradnji traku. Faktor povečave je torej razmerje med višino zajete števke in višino števk na traku. 10 Izgradnja traku V poglavju 4.3 smo nakazali princip določanja vrednosti števke. Gre za primerjavo njene slike s trakom, ki predstavlja raztegnjeno sliko koleščka števnika. V predhodnih poglavjih opisani postopki nam locirajo posamezne števke na slikovnem vzorcu ter njihove slike ustrezno poravnajo, tako da so primerne za neposredno primerjavo s trakom. Da bi posameznim števkam določili vrednosti, potrebujemo samo še ustrezen trak. Izgradnji le-tega pravimo faza učenja določenega tipa števca. Potrebno jo je izvršiti samo enkrat za posamezni tip aparata, nato lahko izvedemo poljubno število odčitavanj njegovih vrednosti. Da bi trak uspešno zgradili, potrebujemo določeno število slik koleščka v različnih položajih (zasukih okoli svoje osi). Od načina zajema teh slik je odvisno, ali bo izdelava traku praktična in enostavna, t.j. ali jo bodo lahko izvajali operaterji v proizvodnji. V poglavju 10.1 bomo opisali način zajemanja slik za izgradnjo traku. Postopek, ki iz njih sestavi trak, bomo predstavili v poglavju 10.2. 10.1 Zajem slik za izgradnjo traku Trak lahko sestavljamo na različne načine. Prva možnost, ki se nam odpira, je počasno vrtenje koleščka okoli njegove osi ter zajem ozkih odsekov slike, katere vertikalno združujemo v sliko celotnega traku. Kljub preprosti ideji je ta postopek v praksi težko izvedljiv. Zajeti moramo veliko število vzorcev koleščka (če so pasovi, ki jih zajemamo široki en razdelek, moramo zajeti sto slik), ki mora biti ob tem zelo natančno pozicioniran, ker bi se majhne napake pri vsakokratni poziciji akumulirale preko celotnega obrata, kar bi trak po vertikali deformiralo. Napaka v izgradnji bi se direktno odražala pri odčitavanju vrednosti števk (poglavje 11.1). Postopek lahko izboljšamo tako, da ugotavljamo medsebojno odvisnost v sekvenci zajetih slik. Ker se rotacija koleščka ne spreminja veliko med posameznimi zajemi, bodo večji deli zajetih slik redundantni (nosili isto informacijo). To lahko izkoristimo za relativno natančno izgradnjo traku tudi v primeru slabo pozicioniranega koleščka, saj lahko iščemo medsebojne položaje zaporedno zajetih slik na mestih, kjer se le-te najbolje prilegajo med sabo. Trak torej ne sestavljamo po vertikali uniformirano, pač pa slike nanj nanašamo tako, da so med seboj skladne. Poskusi kažejo, da lahko trakove, ki jih dobimo na tak način, uspešno uporabimo za natančno določanje vrednosti števk (poglavje 1). Naslednje vprašanje, ki se zastavlja, je, koliko slik potrebujemo, t.j. kolikšen del koleščka lahko verodostojno prenesemo na trak z eno zajeto sliko. Naš postopek trak uspešno zgradi z dvajsetimi zajetimi slikami. Prvih deset prikazuje cele števke, ostale pa vmesne položaje med njimi. Primera slik sta prikazana na slikah 63 in 64. Prva slika prikazuje odseke koleščka, ki ima natisnjene arabske števke, s pomočjo katerih prikazuje izmerjeno vrednost. Na drugi smo zajeli odseke koleščka, ki ima števke zakodirane s posebnimi vzorci (primer takega števca si lahko ogledamo na sliki 3, str. 8) Z drugimi števili slik nismo eksperimentirali. Večje število smatramo za nepotrebno, saj rezultati kažejo, da so z našim postopkom zgrajeni trakovi dovolj kvalitetni (poglavje 1). 0MlAHa3B 4E smmim Slika 63: Primer zajetih slik koleščka za izgradnjo traku l£l ran tAl Id M lil d Li m lol ig a mIbIcti BI m n M Slika 64: Primer zajetih slik za izgradnjo traku pri uporabi koleščka, ki prikazuje vrednosti s pomočjo posebnih kod namesto števk Teoretično najmanjše število slik je deset, kjer so števke zajete tako, da so vidne v celoti, pri čemer med slikami ni nobene redundantne informacije, ki bi omogočala odpravljanje napak v položajih koleščka ob zajemu. Tudi samo širino razmaka med števkami s tako majhnim številom slik ne moremo določiti, zato sklepamo, da je v praksi potrebnih vsaj dvanajst do štirinajst slik. Naš postopek jih uporablja nekaj več in si s tem zagotovi dovolj veliko redundanco informacije, da lahko trak sestavi tudi pri večjih odstopanjih položajev koleščka od idealnih. Za vse trakove, ki smo jih do sedaj zgradili, smo kolešček ročno nastavljali na ustrezne položaje, kar pomeni, da tega nismo opravili precizno. Kljub temu so zgrajeni trakovi ustrezni za nalogo, ki jo opravljajo. 10.2 Postopek izgradnje traku Jedro postopka predstavlja prileganje slik dvajsetih odsekov traku (sliki 63 in 64) med seboj ter njihov vnos na trak. Žal se izkaže, da moramo postopek večkrat ponavljati. Razlog je v tem, da običajno ne moremo kompenzirati rotacijske napake v enem prehodu. Podatek o rotaciji števke na zajeti sliki dobimo s pomočjo vertikalnih mej števnika (poglavje 8.1), kar je zadosti natančno za poravnavo posamezne števke, katere vrednost iščemo z že narejenim trakom. Za samo izgradnjo pa je natančnost premajhna, ker se drobne napake vzdolž traku seštevajo in rezultat je tak, da je celotni trak za opazen kot zarotiran oz. odmaknjen od idealne pokončne oblike (slika 65). Slika 65: Primer traku, ki nima kompenzirane rotacijske napake Podrobna proučitev izvora napake nam je pokazala, da je vzrok v nenatančni izvedbi števnika, zaradi česar vertikalne osi števk niso povsem pravokotne na njegove vertikalne meje. Napako zmanjšamo tako, da trak zgradimo večkrat. Vsakič ocenimo, za kakšen kot je zarotiran in na podlagi ocene spremenimo kot rotacije, s katerim poravnamo slike za naslednjo izgradnjo. Končni rezultat je trak, ki je natančnejši, čeprav na njem še vedno lahko opazimo zasuk, ki pa pri določanju vrednosti števk ne moti. Celoten postopek izgradnje je torej naslednji. Postopek izgradnje traku iz dvajset zajetih slik koleščka števnika 1. Inicializacija postopka: spremenljivko "Število_preostalihjzgradenj" postavimo na 3, spremenljivki "Zadnja_kompenzacija" in "Celotna_ kompenzacija" postavimo na 0; 2. poravnava posameznih slik za izgradnjo z izbrano povečavo in rotacijo, ki je vsota nasprotne vrednosti zasuka števnika in "Zadnje_ kompenzacije"; 3. prileganje posameznih parov slik med seboj (primer poteka med vmesnim položajem števk tri in štiri ter sliko cele števke štiri je prikazan na sliki 66, rezultat poravnave vseh parov pa si lahko ogledamo na slikah 67 in 68); 4. poravnane slike vnesemo na trak tako, da na začetku pustimo prazen prostor približno v velikosti ene števke, nato vrišemo sliko števke 9 (t.j. predzadnjo in zadnjo zajeto sliko; sliki 63 in 64), nato slike števk od 0 do 9 (zajete slike od prve do predzadnje) ter še eno sliko števk 0 in 1 (zadnja in prva zajeta slika); 5. določimo rotacijsko napako traku po postopku, opisanem v nadaljevanju ("Postopek ocenjevanja rotacijske napake traku"); 6. če je to prvi prehod, si napako zapomnimo v spremenljivki "Najmanjša_napaka" ter shranimo kopijo dobljenega traku v strukturi "Zgrajen_trak". "Zadnjo_kompenzacijo" in "Celotno_kompenzacijo" nastavimo na nasprotno vrednost ocenjene napake in nadaljujemo s korakom 2; 7. če je ocenjena napaka po absolutni vrednosti manjša od "Najmanjše_napake", dobljeni trak shranimo v "Zgrajen_trak", "Število_preostalih_izgradenj" nastavimo na 3, "Zadnjo_kompenzacijo" nastavimo na preostalo napako, "Celotni_kompenzaciji" preostalo napako prištejemo ter nadaljujemo s korakom 2; 8. zmanjšamo "Število_preostalih_izgradenj" za 1 in če doseže vrednost 0, postopek prekinemo; 9. "Zadnjo_kompenzacijo" delimo z dva ter njeno vrednost odštejemo od "Celotne_kompenzacije". Nadaljujemo s korakom 2. Slika 66: Potek prileganja dveh sosednjih slik za izgradnjo traku (zgoraj levo: izhodiščni položaj prileganja; po vrsticah sledijo od leve proti desni vmesni položaji; spodaj desno: končni položaj, kjer se sliki najbolje ujemata) i 11 IOIz.IT i ^^ i i i | VIuITI/Io /lolol"!/ ulol/lnlu Slika 67: Paroma prilagojene slike za izgradnjo traku (izključujoča disjunkcija) Slika 68: Paroma prilagojene slike za izgradnjo traku (navadna disjunkcija) Komentar postopka: • v prvem koraku inicializirana spremenljivka "Število_preostalihjzgradenj" predstavlja oceno, kolikokrat bomo postopek izgradnje še ponovili. V koraku 8 to spremenljivko zmanjšamo za ena v primeru, da ponovni preizkus ni dal boljših rezultatov, sicer je ne manjšamo. Na ta način ponavljamo postopek, dokler se rezultat izboljšuje. Spremenljivka "Celotna_kompenzacija" ima vrednost kota zasuka, ki ga prištejemo k rotaciji števnika v trenutnem koraku. V prvem poskusu ima vrednost 0, ker še nimamo informacije o tem, za koliko moramo zasuk popraviti. V spremenljivko "Zadnja_kompenzacija" shranimo spremembo "Celotne_kompenzacije" ob zadnji izgradnji. Uporabimo jo v koraku 9 v primeru, ko je novi rezultat slabši od starega, da poskusimo kompenzirati s polovično vrednostjo; • v koraku 4 sestavimo trak. Nanj dodamo tri redundantne števke: na začetku 9, na koncu pa 0 in 1. S tem smo dosegli navidez krožno in nepretrgano obliko traku, ki poenostavi postopek določanja vrednosti števk (poglavje 11.1). Rotacijsko napako traku bomo ocenili s primerjavo odmikov obeh slik, ki predstavljata števko 0 od levega roba traku. Ta metoda je ugodna, ker se ne opira na oblike števk, ampak samo ugotavlja, koliko je zgornja slika zamaknjena v primerjavi s spodnjo (slika 69). Pri tem izkoriščamo redundantno informacijo, ki je na traku prisotna zaradi večkratnega vrisa nekaterih števk na začetek in konec. Če tega ne bi bilo, bi morali iskani odmik določati s pomočjo a priori znanja o oblikah števk. Postopek je naslednji. Postopek ocenjevanja rotacijske napake traku 1. določimo odmik levega roba zgornje števke 0 od levega roba traku (označimo z Lx); 2. določimo odmik levega roba spodnje števke 0 od levega roba traku (označimo z L2). Količino (Lj - L2) označimo s H 3. določimo višino traku med obema ničlama kot razliko spodnjega roba spodnje in zgornjega roba zgornje ničle (označimo z V); 4. izračunamo zasuk traku po naslednji formuli: Z = arctg((Lj - L2)/ V). Komentar postopka: • če trak ne bi imel rotacijske napake, bi bila leva robova obeh ničel enako oddaljena od levega roba traku, zato je količina (Lj - L2) = H lahko merilo za napako rotacije. Njen predznak govori tudi o tem, v katero smer je trak zasukan (pozitivno, če je zasuk souren); • da dobimo napako izraženo v radianih, kar potrebujemo za določanje parametrov poravnave števk ob naslednji izgradnji, moramo določiti še višino traku ter izračunati arcus tangens razmerja H / V. Slika 69: Ocenjevanje rotacijske napake traku (od leve proti desni: trak brez napake, rotacija sourno, rotacija protiurno) Rezultate posameznih prehodov z različnimi kompenzacijami rotacijske napake pri izgradnji traku s slikami kod si lahko ogledamo na sliki 70. Slika 71 prikazuje končni rezultat izgradnje traku s slikami števk in kodirnih vzorcev. Bggiaiiag^aE Slika 70: Potek kompenziranja rotacijske napake traku (od zgoraj navzdol: nekompenziran trak, vmesni rezultati in kompenziran trak) Implementirani postopek določanja vrednosti števk potrebuje tudi položaje posameznih števk na traku (za vsako od njih lokacije vseh štirih robov ter njihovo sredino v vertikalni smeri). Postopek, s katerim določimo te podatke, je naslednji. Postopek določanja položaja posameznih števk na traku 1. inicializiramo seznam zgornjih, spodnjih, levih in desnih robov števk ter njihovih sredin. Prvo vrstico traku označimo kot naslednjo, ki jo preiskujemo; 2. trak preiskujemo od naslednje vrstice navzdol, dokler ne naletimo na svetlo točko (trak je binarna slika, torej iščemo točko, ki je različna od 0); 3. vrstico (označimo jo z ZR) damo na seznam zgornjih robov števk; 4. trak preiskujemo od naslednje vrstice navzdol, dokler ne naletimo na tako, ki nima nobene svetle točke; 5. vrstico pred njo (označimo jo s SR) damo na seznam spodnjih robov števk; 6. vrstico, ki se nahaja v sredini obeh pravkar dobljenih robov števk ZR + SR (SŠ =-), damo na seznam sredin števk; 2 7. v območju med ZR in SR vrstico preiskujemo trak po stolpcih od leve proti desni, dokler ne naletimo na svetlo točko; 8. dobljeni stolpec damo na seznam levih robov števk; 9. v območju med ZR in SR vrstico preiskujemo trak po stolpcih od desne proti levi, dokler ne naletimo na svetlo točko; 10. dobljeni stolpec damo na seznam desnih robov števk; 11. korake od 2 do 10 ponavljamo za vse števke vrisane na trak; 12. inicializiramo seznam sredine praznih prostorov med števkami; 13. sredine praznih prostorov med dvema sosednjima števkama izračunamo kot aritmetično sredino med spodnjim robom prve ter zgornjim robom naslednje. Vrednosti vpišemo na seznam sredin praznih prostorov. Rezultat postopka je šest seznamov, na katerih se nahajajo vsi štirje robovi števk, njihove sredine ter sredine praznih prostorov med njimi. Grafično so prikazani na sliki 70, kjer smo dobljene robove vrisali na trak. Slika 71: Končni rezultat postopka izgradnje traku, prikazan brez in z vrisanimi lokacijami posameznih števk (levo: trak s števkami, desno: trak s kodami) 11 Določanje vrednosti števkam Primerjava števk s trakom ter določanje njihovih vrednosti je osrednji korak celotnega postopka odčitavanja vrednosti števca. Vsi dosedaj opisani postopki so samo večali robustnost in uporabnost sistema s tem, da so omogočali njegovo uporabo v širšem območju okoliških parametrov. V strogo predpisanih pogojih bi bilo mogoče implementirati sistem tudi brez začetne analize slike ter lociranja števk (pri dobro definirani osvetljenosti, položaju in lokaciji števnika na sliki bi bili ti postopki odvečni), določanju vrednosti števkam pa se ne moremo izogniti. V tem poglavju bomo opisali postopek določanja vrednosti števk, ki temelji na primerjavi njihove poravnane slike s trakom (poglavje 11.1). Uporabo te metode smo utemeljili v poglavju 4.3, kjer smo za naš primer uporabe pokazali njene prednosti v primerjavi z industrijskimi OCR postopki. 11.1 Primerjava števke s trakom Vhodna podatka postopka primerjave sta slika števke, kateri določamo vrednost, in ustrezen trak skupaj s seznamom lokacij števk na njem (slika 72). Najpreprostejša izvedba določanja vrednosti števke bi bila primerjava njene slike po celi dolžini traku. Položaj najboljšega ujemanja slike s trakom oz. njegov odmik od začetka prve števke nič je direktno koreliran z iskano vrednostjo (poglavje 4.3). V praksi uporabljamo nekoliko spremenjeno metodo določanja vrednosti, ki je hitrejša, zmanjša vpliv netočnosti pri izgradnji in s tem poveča natančnost odčitavanja. Slika 72: Neznana števka ter ustrezen trak, ki vstopata v postopek primerjave Implementirani postopek najprej pregleda sliko števke ter ugotovi, ali je na njej prikazan položaj koleščka, kjer se vidi določena števka v celoti, ali pa gre za vmesni položaj med dvema števkama (slika 73). Slika 73: Primeri slik, kjer so števke vidne v celoti (zgornja vrsta) in vmesnih položajev med njimi (spodnja vrsta) Ker položaje posameznih števk na traku poznamo (poglavje 10.2), lahko določimo tudi, kje se nahajajo vmesni položaji med njimi. Trak torej pregledujemo samo na mestih, kjer se nahajajo števke v celoti, če se na sliki nahaja cela števka oz. samo v vmesnih položajih, če je na sliki vmesni položaj med dvema števkama (slika 74). Slika 74: Območja na traku, ki jih pregledujemo v primeru slike cele števke (zgoraj) ter vmesnega položaja med dvema števkama (spodaj) V vsakem položaju si zapomnimo lokacijo na traku, kamor pade sredina primerjalne slike, ter razdaljo med njo in trakom. Merilo razdalje je število slikovnih elementov, v katerih se slika razlikuje s trakom na mestu, kjer ju primerjamo. Na mestu, kjer je dobljena razdalja najmanjša, se slika števke najbolje prilega traku. S pomočjo tega podatka lahko določimo vrednost števke na sliki. Seznam sredin števk na traku (zgradili smo ga v poglavju 10.2 skupaj s trakom) preiščemo in ugotovimo, med sredini katerih dveh števk pade sredina slike neznane števke (slika 75). Sredina prve števke 4*0 Sredina položaja najboljšega ujemanja Sredina druge števke ^Ol Slika 75: Ujemanje neznane števke s trakom ter sredini sosednjih števk Neznano vrednost števke določimo z linearno interpolacijo vrednosti obeh števk, med katerima se slika nahaja. Izraz je naslednji: vš = V2 - V S 2 - S1 (S - S1) + V kjer pomenijo oznake: • VŠ vrednost števke, ki jo iščemo, • V1,V2 vrednosti števk, med kateri pade sredina neznane slike, • S13 S2 sredini števk na traku, med kateri pade sredina neznane slike, • S sredina neznane števke na mestu, kjer se s trakom najbolje prilega. S tem, da ne uporabljamo interpolacijskega intervala preko celotnega traku, ampak samo med dvema števkama, smo povečali natančnost določanja vrednosti neznane števke. Vertikalne deformacije traku izven tega območja ne vplivajo na dobljeni rezultat. Nanj vplivajo samo netočnosti traku med števkama, kamor pade neznana slika. Če bi vrednost števke interpolirali preko celotnega traku, bi se posamezne deformacije traku med števkami seštevale in končni odčitek bi bil manj natančen zlasti v območju sredine traku. 12 Končni odčitek števca Vrednosti posameznih števk nam same zase ne pomagajo dosti. Šele s pravilno interpretacijo in združitvijo njihovih vrednosti v končni rezultat smo dosegli zastavljeni cilj. Naivno bi bilo misliti, da lahko odčitek števca tvorimo tako, da seštejemo vrednosti posameznih števk, pomnožene z njihovimi dekadnimi utežmi (desetinke, enice, desetice, ...). Tako ravnanje bi imelo za posledico napačne vrednosti odčitkov ter v nekaterih položajih števca nezvezno karakteristiko. V tem poglavju se bomo seznanili s problemom, ki nam otežuje tvorjenje rezultata in je posledica neidealne mehanske izvedbe števnika ter neizbežne negotovosti pri določanju vrednosti števk (poglavje 12.1). Predlagali bomo rešitev, ki se težavi uspešno izogne (poglavje 12.2). 12.1 Težava pri tvorjenju rezultata Morebitna napaka se pojavi izključno kot posledica slabo pogojenega prehoda vrednosti števke z 999 na vrednost 0 00, t.j. v bližini polnega obrata koleščka, kjer vrednost posamezne števke nezvezno preskoči nazaj na nič. Zaradi neidealnih razmer ne moremo pričakovati, da se bo vrednost vseh dekad spremenila natanko ob istem času. Delno je to oteženo zaradi mehanske izvedbe števca, kjer so dekade povezane med seboj z zobniškimi prenosi, ki imajo določene tolerance oz. karakteristike, ki odstopajo od idealnih. Drugi razlog je samo odčitavanje vrednosti s pomočjo traku (težava bi obstajala pri kakršnemkoli načinu odčitavanja, ker nobene meritve, razen štetja, ne moremo izvesti povsem natančno [8]), kjer lahko števko v neposredni bližini vrednosti nič prepoznamo kot 0 00 ali 999. Posledica tega se kaže na naslednji način. Npr.: desetinke imajo vrednost 0 00, enice pa vrednost 2 00. Obstaja nevarnost, da to odčitamo na štiri različne načine. Prva možnost je vrednost 2 00, kar tudi želimo razbrati. Ostale možnosti so naslednje. V primeru, da bi naš postopek zaradi neidealnih razmer določil enicam vrednost 1 99 ter tvoril rezultat z odstranjevanjem decimalnega dela pri vseh razen pri zadnji dekadi (vsak kolešček razen zadnjega prispeva samo celoštevilski del, ker so decimalke vsebovane v dekadah desno od njega), bi dobili odčitek 1 00. Podobno bi z vrednostjo desetink 999 odčitali vrednost 299 ali 1 99. Zaključimo, da lahko v primeru najnižje utežene števke, ki se nahaja blizu ničle, dobimo dva različna rezultata. Če se višje dekade nahajajo v bližini celoštevilske vrednosti (npr. 0 00, 0 99, 100, 199, ...), se število možnosti še dodatno poveča. Da bo sistem pravilno in ponovljivo odčitaval vrednosti števcev, moramo težavo odpraviti. 12.2 Preprečevanje preskokov Problem lahko rešimo tako, da vrednosti števk ne interpretiramo izolirano, ampak upoštevamo njihove medsebojne odvisnosti, t.j. mehanski prenos med koleščki. S primerjavo vrednosti sosednjih števk lahko brez težav ugotovimo, kdaj je prišlo do prezgodnjega preskoka vrednosti. Če ima npr. števka vrednost 999 in naslednja levo od nje vrednost 5 00, vemo, da predhodna vrednost zaostaja, saj se v idealnih razmerah ne more zgoditi, da bi se druga dekada obračala hitreje od prve, ker slednja potiska drugo naprej in ne obratno. Postopek, ki to upošteva, pravilno odčitava vrednosti kljub preskokom in zagotavlja zvezno in ponovljivo karakteristiko. Opisan je v nadaljevanju. Kot vhod sprejme seznam vrednosti posameznih števk, ki smo jih dobili v predhodnem poglavju, njegov rezultat pa je odčitek števca. Postopek združevanja vrednosti posameznih števk v končni rezultat 1. Inicializacija postopka: spremenljivko "Utež_števke" nastavimo na 01, logično spremenljivko "Prenos" nastavimo na DA, celoštevilsko "Delni_prenos" pa na 0; 2. vrednost skrajno desne števke (kolešček z najmanjšo utežjo) prepišemo v spremenljivko "Trenutna_števka"; 3. spremenljivki "Trenutna_števka" določimo celoštevilčni in decimalni del ter ju vpišemo v spremenljivki "Celi_del" in "Decimalni_del"; 4. če je to prva (t.j. skrajno desna) števka, jo pomnožimo s spremenljivko "Utež_števke" ter vpišemo v spremenljivko "Rezultat_odčitka". Nadaljujemo s korakom 19; 5. če ima spremenljivka "Prenos" vrednost NE, nadaljujemo s korakom 16; 6. če je "Delni_prenos" večji od 0, ga zmanjšamo za 1; 7. če je vrednost spremenljivke "Zadnja_števka" manjša od 9 7 in "Delni_prenos" enak 0, nadaljujemo s korakom 12; 8. če je "Decimalni_del" večji ali enak od 03, nadaljujemo s korakom 18; 9. "Celi_del" zmanjšamo za 1; 10. če je "Celi_del" manjši od 0, ga nastavimo na 9 in postavimo "Delni_prenos" na vrednost 2; 11. nadaljujemo s korakom 18; 12. če je vrednost spremenljivke "Zadnja_števka" večja od 93, nadaljujemo s korakom 18; 13. če je "Decimalni_del" manjši ali enak 0 7 ali ima "Polovični_prenos" vrednost različno od 0, nadaljujemo s korakom 18; 14. "Celi_del" povečamo za ena in če ima potem vrednost večjo od 9, ga nastavimo na 0; 15. nadaljujemo s korakom 18; 16. če je "Decimalni_del" manjši od 05, nadaljujemo s korakom 18; 17. "Celi_del" povečamo za ena; če je njegova vrednost večja od 9, ga nastavimo na 0; 18. spremenljivko "Rezultat_odčitka" povečamo za produkt med spremenljivkama "Vrednost_števke" in "Celi_del"; 19. spremenljivko "Vrednost_števke" pomnožimo z 10; 20. če ima spremenljivka "Trenutna_števka" vrednost manjšo od 90 in ima "Polovični_prenos" vrednost 0, nastavimo spremenljivko "Prenos" na NE; 21. vrednost "Trenutna_števka" prepišemo v spremenljivko "Zadnja_števka"; 22. če je na seznamu še kaka števka, katere nismo upoštevali, vrednost naslednje števke vpišemo v spremenljivko "Trenutna_števka" in se vrnemo na korak 3. Komentar postopka: • v koraku 3 razbijemo vrednost posamezne števke na celi in decimalni del. Prvi prispeva vrednost h končnemu rezultatu (razen v primeru zadnje števke, ki prispeva svojo celotno vrednost), drugi pa nam pove, ali moramo vrednost števke prilagoditi zaradi preskoka oz. prezgodnjega prenosa; • spremenljivka "Prenos" se na začetku postopka nastavi na DA in ostane v tem stanju, dokler se ne pojavi prva števka, ki se ne nahaja v bližini vrednosti nič (to se testira v koraku 20). Do takrat moramo mehanske prenose upoštevati, od tu naprej pa ne več; • spremenljivka "Delni_prenos" indicira stanje, ko je vrednost predhodne števke večja od 97 in vrednost trenutne manjša ali enaka 03, t.j., ko je trenutna števka preskočila naprej. V primeru take situacije se delni prenos nastavi na 2 in z vsako števko zmanjša za 1, ker se mora vpliv preskoka upoštevati tudi pri naslednji dekadi, saj bi morala trenutna števka imeti vrednost, večjo od 97, če do prenosa ne bi prišlo. "Delni_prenos" upoštevamo samo v primeru, da ima "Prenos" vrednost DA, saj v nasprotnem primeru prenosa ni potrebno upoštevati, ker smo vmes imeli dekado, ki se ni nahajala v bližini ničle; Rezultat postopka je odčitek števca, ki je robusten in neobčutljiv na neidealno mehansko izvedbo števnika in katerega lahko brez nadaljnjih modifikacij uporabimo kot končni rezultat celotnega postopka odčitavanja. 13 Merilne karakteristike V predhodnih poglavjih smo opisali postopek optičnega odčitavanja električnih števcev. Na tem mestu pa nas zanimajo merilne karakteristike sistema, zlasti natančnost in hitrost odčitavanja. Poznavanje teh parametrov je nujno potrebno za uspešno rabo v industrijskem okolju, saj brez njih ne moremo ustrezno načrtovati integracije sistema v proizvodni proces. V tem poglavju bomo opisali naš pristop k izvajanju meritev (poglavje 13.1) in določanju karakteristik sistema (poglavje 13.2) ter s pomočjo rezultatov meritev (poglavje 13.3) ocenili točnost odčitkov ter hitrost odčitavanja (poglavje 13.4). 13.1 Izvajanje meritev Najvažnejši parameter sistema, kateremu smo namenili tudi največ pozornosti, je natančnost odčitavanja. Ocenjevanje le-tega je potekalo na dva načina. Najprej smo se prepričali, da je izhod sistema zvezna funkcija vrednosti števnika (poglavje 13.1.1) in je pogrešek odčitka manjši od enega razdelka (kar smo si v poglavju 4.2 zadali kot cilj). Kljub temu, da smo že na tej stopnji ugotovili zadovoljivo delovanje sistema, smo skušali natančneje določiti, kakšen je dejanski pogrešek odčitka ter kako nanj vplivajo različni pogoji, pod katerimi lahko odčitavanje izvajamo (poglavje 13.1.2). 13.1.1 Meritve s števnikom, nastavljanim s koračnim motorjem Natančnost odčitavanja smo v grobem ocenili tako, da smo števniku (katerega začetno stanje smo poznali, t.j. odčitali s prostim očesom) s pomočjo koračnega motorja počasi spreminjali vrednost ter spremljali rezultate merjenja z našim sistemom. Mehanski prenos med koračnim motorjem in števnikom nam je zagotavljal petindvajset korakov za vsak razdelek, kar bi v idealnih razmerah zadostovalo za zadovoljivo določitev točnostnega razreda sistema. Neidealna izvedba števnika pa ima za posledico relativno velike napake nastavitve zadnjega koleščka, predvsem zato, ker se koračni motor obrača sunkovito in se kolešček odbija ter se znotraj praznega hoda zobnikov, ki ga poganjajo, nastavlja nepredvidljivo (slika 76). Slika 76: Sekvenca nastavljanja koleščka s pomočjo koračnega motorja Na sliki 76 vidimo zaporedje petih korakov, ki si kronološko sledijo z leve proti desni. Na drugi in zadnji sliki lahko opazimo, da se je kolešček premaknil nazaj glede na predhodni položaj. Na podlagi kvalitativnih opazovanj ocenjujemo, da največja netočnost nastavitve ne presega polovico razdelka, zato zaključujemo, da je izvedba pozicioniranja števnika s pomočjo koračnega motorja zadovoljiva za grobo oceno točnosti sistema. Sistem smo testirali tako, da smo s tako izvedeno nastavitvijo števnika opravili nekaj milijonov odčitkov v zaporedju (kar je enakovredno cca. tisoč obratom zadnjega koleščka) ter rezultate primerjali s pričakovanimi vrednostmi. Primerjali smo celotni rezultat odčitka in ne samo vrednost zadnjega koleščka, ker smo se želeli prepričati tudi v ustreznost združevanja vrednosti posameznih števk v končni rezultat (poglavje 1). Nezvezno in nepredvidljivo nastavljanje koleščkov števnika je bilo kot nalašč za ta namen, saj so sunki koračnega motorja nezvezno premikali več koleščkov hkrati in s tem ustvarili večje preskoke (poglavje 12.1), kot se tipično pojavljajo v praksi. Nobena meritev v sekvenci ni odstopala od pričakovane vrednosti za razdelek ali več, iz česar sklepamo, da sistem izpolnjuje zahtevo po točnosti, kot smo jo opredelili v poglavju 4.2. 13.1.2 Meritve s fantomsko obremenjenim števcem Večjo točnost nastavljanja števnika smo skušali doseči z uporabo števca, ki je bil fantomsko obremenjen. Pri enakomerni obremenitvi števca se njegova kotva enakomerno vrti ter s tem počasi in v idealnih razmerah zvezno spreminja zasuk števnika. Kvalitativna opazovanja so potrdila domnevo, da je nastavljanje koleščka s fantomsko obremenitvijo precej natančneje kot s koračnim motorjem, čeprav kaže manjše nezvezne preskoke zaradi trenja in prostega hoda. Kvalitativno ocenjujemo, da ne presegajo velikostnega reda petine razdelka. Meritve smo izvajali tako, da smo nastavili zadnji kolešček števnika na vrednost nič (položaj smo določili kvalitativno s pomočjo povečane slike koleščka), nato pa števec fantomsko obremenili in izvajali meritve, dokler se zadnji kolešček ni zasukal za celoten obrat (končni položaj smo zopet določili kvalitativno). Vmes smo predpostavili enakomerno kotno hitrost koleščka (kar ni čisto res, ker se hitrost spreminja zaradi nihanja omrežne napetosti ter segrevanja in ohlajanja pomožnih uporov, katere smo uporabljali v tokokrogu) ter z linearno interpolacijo določili pričakovano vrednost koleščka, katero smo primerjali z dobljenimi rezultati meritev. Primerjali smo samo vrednost zadnje števke, saj natančnost, s katero jo odčitamo, določa razred točnosti celotnega sistema (ob predpostavki, da se vrednosti ostalih števk pravilno združujejo v končni rezultat, kar smo preverili tako, kot je opisano v predhodnem poglavju). Povprečen čas, ki ga porabimo za izvedbo posameznega odčitka smo ocenili tako, da smo čas celotnega zasuka koleščka delili s številom meritev, ki smo jih med tem izvedli. Meritve smo ponavljali pod različnimi pogoji zajema slike števca ter trakovi z različnimi višinami števk na njih, kot bo opisano v nadaljevanju. 13.2 Ocenjevanje karakteristik sistema Določanje merilnih karakteristik sistema je obsežen problem, saj je število parametrov, pod katerimi bi morali sistem testirati, veliko. Tako lahko spreminjamo povečavo števca, rotacijo števnika, velikost števk na traku in povečavo števnika, pri kateri zajemamo števke za izgradnjo traku. Natančnost sistema je v splošnem funkcija vseh štirih veličin, ki med seboj niso neodvisne. To pomeni, da bi morali izvesti veliko število meritev, če bi hoteli ugotoviti celotno karakteristiko sistema. Npr. pri štirih različnih povečavah, petih rotacijah, sedmih velikostih števk na traku ter štirih povečavah, pod katerimi zajemamo števke za izgradnjo traku, bi morali izvesti petstošestdeset različnih meritev. Da zmanjšamo kompleksnost naloge, smo testirali samo manjšo podmnožico možnosti, za katere pričakujemo, da se bodo v praksi uporabljale najpogosteje. To so štiri različne povečave števca, pri katerih znaša višina števnika (poglavje 8.2) 170, 150, 130 in 110 slikovnih elementov (slika 77). Pri teh povečavah zajamemo slike za izgradnjo traku ter nato tudi odčitavamo vrednosti. Zajemi pri teh velikostih so najbolj tipični in pokrivajo široko področje uporabe, saj že pri višini števnika 170 slikovnih elementov ne moremo zajeti več kot štiri v celoti vidne števke; višina števnika 110 slikovnih elementov pa nam omogoča števnik s šestimi dekadami zajeti v celoti. Potreba po delovanju sistema izven tega intervala povečav je malo verjetna. Slika 77: Testirane povečave števnika (višine: 170, 150, 130 in 110 slik. elem.) Nadalje naredimo pri vseh štirih povečavah trakove z velikostjo števk 50, 70, 90, 110, 130, 150 in 170 slikovnih elementov ter z njimi izvajamo meritve. Na ta način skušamo ugotoviti, kako zmanjšanje traku vpliva na točnost meritev in na hitrost odčitavanja. Manjši trakovi pospešijo meritve, ker je ugotavljanje vrednosti števk (poglavje 1) hitrejše zaradi manjših slik in s tem hitrejšega računanja razdalj med njimi. Pričakujemo pa manj natančne odčitke, ker manjši trakovi manj verodostojno reproducirajo sliko koleščka. Na slikah od 108 do 111 v dodatku A si lahko ogledamo trakove vseh omenjenih velikosti, ki smo jih dobili s pomočjo števk, zajetih pri štirih testnih povečavah. Opazimo, da kvaliteta trakov ne upada izrazito z manjšanjem velikosti števnika ob zajemu slik za izgradnjo. Počasno manjšanje kvalitete lahko zaznamo s podrobnim opazovanjem posameznih števk na traku. Tako je npr. števka "ena" prvega traku na sliki 108 zelo lepa in ima skoraj povsem gladek rob. Na slikah od 109 do 111 pa lahko opazujemo postopno upadanje kvalitete ter večanje netočnosti oblike in nazobčanosti robov. Z manjšanjem višine števk na traku se količina podatkov, ki jih trak vsebuje, močno zmanjša in precej detajlov izpade. Kljub temu pa so vsi trakovi na slikah od 108 do 111 uporabni za odčitavanje vrednosti, kot bomo videli v nadaljevanju. Slike od 112 do 115 prikazujejo iste trakove razporejene po posameznih slikah glede na višino števk na traku. Trakovi so neodvisno od njihove dejanske višine povečani tako, da zasedajo celotno stran. S teh slik lahko opazujemo zmanjšanje kvalitete trakov v odvisnosti od višine števk na njih. Vidimo, da so števke na traku čedalje manj natančne, kljub temu pa dobro ohranjajo topologijo koleščka (vidimo, da se meje posameznih števk na traku ne spreminjajo dosti; ta lastnost je zelo pomembna pri natančnem določanju vrednosti števk - poglavje 11.1). Posledica tega je, da so tudi trakovi z manjšo višino številčnice povsem uporabni za odčitavanje vrednosti, čeprav so odčitki nekoliko manj natančni (poglavje 13.4). Meritve pri različnih velikostih števk na traku izvajamo samo pri zasuku števnika (poglavje 8.2) nič stopinj (slika 77). Sistem smo testirali tudi pri zasukih -5°, -25°, +25° in +5° (sliki 78 in 79), pri čemer pomeni negativni predznak zasuk sourno, pozitiven pa protiurno. Pri vsakem zasuku smo zajeli števec pri enakih testnih povečavah, kot smo izvajali predhodne meritve, pri tem pa je bila velikost števk na traku vedno enaka velikosti števk na zajeti sliki. S temi meritvami skušamo ugotoviti, koliko na odčitek števca vpliva rotacija števnika na sliki. Slika 78: Zajemi števnika pri zasuku sourno 5° (zgoraj) in 2'5° (spodaj) Slika 79: Zajemi števnika pri zasuku protiurno 5° (zgoraj) in 2'5° (spodaj) 13.3 Rezultati meritev Na tem mestu pojasnjujemo rezultate meritev, ki smo jih izvedli pod predhodno opisanimi pogoji in jih podajamo v dodatku B. Za vsako meritev tabelarično podajamo njene glavne parametre, nato pa še grafični potek treh karakteristik v odvisnosti od položaja koleščka: odčitane vrednosti zadnje števke, potek napake ter odstotek ujemanja kalibrirane slike števke s trakom, vse v odvisnosti od pričakovane oz. interpolirane vrednosti zadnje števke (poglavje 13.1.2). Podani parametri so naslednji (v enačbah, ki parametre pojasnjujejo, pomeni Vp pričakovano, V pa izmerjeno vrednost): • št. meritev (N): število odčitkov, ki smo jih izvedli med odčitavanjem celotnega obrata zadnjega koleščka števnika; • celotni čas (T): čas, ki ga je kolešček potreboval, da se je v celoti zavrtel okoli svoje osi. Vrednost se nekoliko spreminja med posameznimi meritvami zaradi nestabilizirane fantomske obremenitve ter ne povsem natančnega določanja začetka in konca meritve s prostim očesom; • povpr. čas (P): kvocient med celotnim časom meritve in številom odčitkov: P = T/N. Uporabljamo ga za oceno povprečnega časa trajanja posameznega odčitka; • maks. neg. odstop. (NO): maksimalno odstopanje odčitane vrednosti od pričakovane v negativno smer: NO = - min(Vp - V); V(Vp - V) < 0; • maks. poz. odstop. (PO): maksimalno odstopanje odčitane vrednosti od pričakovane v pozitivno smer: PO = max(Vp - Vi); V(Vp - Vi) > 0; • maks. napaka (AN): največje odstopanje odčitane vrednosti od pričakovane (absolutna napaka odčitka): AN = max(NO, PO); • min. % ujemanja (U): odstotek točk, v katerih sta se števka in trak razlikovala v položaju najboljšega ujemanja. 13.4 Ocenjene karakteristike sistema S pomočjo rezultatov meritev, ki jih podajamo v dodatku B, bomo sedaj ocenili merilne karakteristike našega sistema. Kot smo že omenili, se bomo omejili na natančnost in hitrost odčitavanja električnega števca, zajetega pod različnimi pogoji in z različno visokimi slikami števk na traku. Povzetek karakteristik podajamo s pomočjo tabel in grafov, ki prikazujejo spreminjanje parametrov sistema v primeru zajema števca pri različnih povečavah in velikostih števk na traku ter rotaciji števnika nič stopinj (poglavje 13.4.1). Vpliv rotacije na meritve podajamo v poglavju 13.4.2. 13.4.1 Merilne karakteristike sistema pri rotaciji števnika nič stopinj V tabelah od 6 do 9 so prikazane merilne karakteristike sistema pri zajemih števnika z višinami 170, 150, 130 in 110 slikovnih elementov. Posamezni stolpci kažejo vrednosti parametrov v odvisnosti od višine števk na traku. Pomen posameznih parametrov je naslednji: • maks. abs. napaka (MAN): največja absolutna napaka pri celotnem obratu odčitavanja vrednosti koleščka: MAN = max(AN). Napaka, ki je enaka ali večja od 001 kWh, pomeni prekoračitev zahtev, specificiranih v poglavju 4.2; • rezerva do ene črtice % (RR): odstotek, za kolikor bi napaka morala biti večja, da sistem ne bi izpolnjeval zahtev o natančnosti odčitavanja (poglavje 4.2): RR = 001-MAN. 100 ; 0'01 • min % ujemanja števke s trakom (MU): najmanjši odstotek ujemanja slike zadnje števke s sliko traku pri odčitavanju vrednosti preko celotnega obrata koleščka: MU = min(U); povprečni čas odčitka (P): ocena časa, ki ga sistem potrebuje za posamezni odčitek. Izračunali smo ga kot kvocient med časom, ki ga je kolešček števnika potreboval za polni obrat, in številom meritev: P = T/N; povprečni čas normiran z VT (NP): povprečni čas, ki smo ga normirali z višino števk na traku ter skalirali tako, da je enak 1 pri višini 50 slikovnih elementov: P 50 NP =----, pri čemer pomeni P50 povprečni čas odčitka s trakom višine P50 Š števk 50 slikovnih elementov (najmanjši trak, ki ga uporabljamo), Š pa je dejanska višina števk na traku. Iste podatke prikazujemo tudi grafično na slikah od 80 do 95. Grafom smo dodali funkcijo linerarnega trenda, s katero smo skušali nazorneje prikazati, ali določen parameter kaže koreliranost s spreminjanjem višine števk na traku. Ocenjujemo, da sistem v vseh testiranih pogojih izpolnjuje zahteve po točnosti iz poglavja 4.2. Največja napaka, ki smo jo ugotovili, je znašala 0 0071 kWh oz. 71% razdelka. Pojavila se je pri višini števnika 150 slikovnih elementov in s trakom z višino števk 50 slikovnih elementov. Pri večjih in s tem preciznejših trakovih so bile napake manjše. Najmanjša napaka se je pojavila pri višini števnika in števk na traku 170 slikovnih elementov. Tu smo izmerili največjo napako 0 0018 kWh, kar je več kot petkrat bolje od zastavljenega cilja. Pri tem moramo imeti v mislih, da je povečava 170 slikovnih elementov zelo velika in z njo ne moremo odčitavati celotnega števca oz. zajeti vseh dekad. Zato je ta pogoj obratovanja primeren le za končni preizkus števcev v proizvodnji, kjer je potrebno zajeti samo tri do štiri števke. Pri zajemu celotnega števca z manjšo povečavo, kjer je števnik visok 110 slikovnih elementov, lahko dosežemo zadovoljivo natančnost, če traku pretirano ne manjšamo. Tako lahko s trakovi od 70 do 170 slikovnih elementov dosežemo vsaj natančnost polovice razdelka (0 005 kWh). Iz prikazanih karakteristik vidimo, da je bolje uporabljati večje trakove, ki natančneje reproducirajo sliko raztegnjenega koleščka, kar je pri natančnem odčitavanju vrednosti zelo pomembno. S tem pa manjšamo hitrost odčitavanja, kar je z grafov ravno tako razvidno. Največjo hitrost odčitavanja smo dosegli pri zajemu števnika 110 slikovnih elementov in višini števk na traku 50 slikovnih elementov, torej pri kombinaciji parametrov, ki omogoča najmanj natančno odčitavanje. Dosegli smo čas odčitavanja manjši od 03 sekunde. Sistem je pri enaki povečavi zajema ter višini traku 170 slikovnih elementov potreboval največ časa 063 s, kar je več kot pri števniku in traku višine 170 slikovnih elementov. Razlog je v tem, da smo pri večji povečavi zajeli samo štiri števke, pri manjši pa vseh šest in proporcionalno temu se je moralo izvršiti tudi več primerjanj slik s trakom. Pri uporabi sistema lahko pričakujemo, da bo čas odčitavanja krajši od ene sekunde. Višina števk na traku (slikovni elementi) 50 70 90 110 130 150 170 Maks. abs. napaka Rezerva do ene črtice % 0,0052 48,0 0,0045 55,0 0,0046 54,0 0,0037 63,0 0,0030 70,0 0,0036 64,0 0,0018 82,0 Min. % ujemanja števke s trakom 81,654 92,125 91,686 91,158 93,136 93,284 93,966 Povprečni čas odčitka (s) Povprečni čas normiran z VT 0,322 1,000 0,349 0,774 0,367 0,633 0,413 0,583 0,447 0,534 0,504 0,522 0,567 0,518 Tabela 6: Karakteristike sistema pri višini števnika 170 slikovnih elementov 0,006 0,005 n 0,004 S £ 0,003 c $ 0,002 2 ž 0,001 0,000 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Slika 80: Največja napaka pri višini števnika 170 slikovnih elementov s 100,00 e kvet 95,00 tš o "i® ? 90,00 o 'U m ok a 85,00 >8 r t 80,00 nam 75,00 I 70,00 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 0,60 - In jg 0,50 - ig 0,40 o J 0,30 ! 0,20 6 f> 0,10 -£ 0,00 - Višina števk na traku (slikovni elementi) Slika 82: Povprečno trajanje posameznega odčitka pri višini števnika 170 slikovnih elementov 1,20 n 0,00 -I-1-1-1-1-1-1- 50 70 90 110 130 150 170 Višina števk na traku (slikovni elementi) Slika 83: Povprečno trajanje posameznega odčitka, normirano z višino števk na traku pri višini števnika 170 slikovnih elementov Višina števk na traku (slikovni elementi) 50 70 90 110 130 150 170 Maks. abs. napaka Rezerva do ene črtice % 0,0071 29,0 0,0047 53,0 0,0047 53,0 0,0034 66,0 0,0041 59,0 0,0030 70,0 0,0032 68,0 Min. % ujemanja števke s trakom 81,912 88,331 90,351 91,190 92,869 93,056 93,287 Povprečni čas odčitka (s) Povprečni čas normiran z VT 0,296 1,000 0,320 0,772 0,329 0,617 0,349 0,536 0,369 0,479 0,409 0,461 0,429 0,426 Tabela 7: Karakteristike sistema pri višini števnika 150 slikovnih elementov 0,008 0,007 0,006 0,005 0,004 n 0,003 ><7 g 0,002 0,001 0,000 J! ä n c ž 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Slika 84: Največja napaka pri višini števnika 150 slikovnih elementov s ekve vetš ) e) u ar >8 ~ nam I 100,00 95,00 90,00 85,00 80,00 75,00 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Ü >ö u 0 J C >o e 1 0,50 0,45 0,40 0,35 0,30 0,25 0,20 0,15 0,10 0,05 0,00 50 70 90 110 130 150 170 Višina števk na traku (slikovni elementi) Slika 86: Povprečno trajanje posameznega odčitka pri višini števnika 150 slikovnih elementov 1,20 n 0,00 -I-1-1-1-1-1-1- 50 70 90 110 130 150 170 Višina števk na traku (slikovni elementi) Slika 87: Povprečno trajanje posameznega odčitka, normirano z višino števk na traku pri višini števnika 150 slikovnih elementov Višina števk na traku (slikovni elementi) 50 70 90 110 130 150 170 Maks. abs. napaka Rezerva do ene črtice % 0,0070 30,0 0,0050 50,0 0,0076 24,0 0,0046 54,0 0,0049 51,0 0,0050 50,0 0,0056 44,0 Min. % ujemanja števke s trakom 81,975 87,806 92,086 91,694 91,755 92,313 89,084 Povprečni čas odčitka (s) Povprečni čas normiran z VT 0,281 1,000 0,323 0,821 0,356 0,704 0,376 0,608 0,460 0,630 0,538 0,638 0,478 0,500 Tabela 8: Karakteristike sistema pri višini števnika 130 slikovnih elementov 0,008 0,007 0,006 0,005 0,004 n 0,003 ><7 g 0,002 0,001 0,000 J! ä n c ž 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Slika 88: Največja napaka pri višini števnika 130 slikovnih elementov s ekve vetš o n .o J i? m ok kar I 94,00 92,00 90,00 88,00 86,00 84,00 82,00 80,00 78,00 76,00 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 0,60 - In jg 0,50 - ig 0,40 o J 0,30 ! 0,20 6 f> 0,10 -£ 0,00 - Višina števk na traku (slikovni elementi) Slika 90: Povprečno trajanje posameznega odčitka pri višini števnika 130 slikovnih elementov 1,20 n 0,00 -I-1-1-1-1-1-1- 50 70 90 110 130 150 170 Višina števk na traku (slikovni elementi) Slika 91: Povprečno trajanje posameznega odčitka, normirano z višino števk na traku pri višini števnika 130 slikovnih elementov Višina števk na traku (slikovni elementi) 50 70 90 110 130 150 170 Maks. abs. napaka Rezerva do ene črtice % 0,0054 46,0 0,0046 54,0 0,0039 61,0 0,0048 52,0 0,0029 71,0 0,0032 68,0 0,0034 66,0 Min. % ujemanja števke s trakom 74,638 87,492 89,697 90,477 90,463 91,720 90,552 Povprečni čas odčitka (s) Povprečni čas normiran z VT 0,255 1,000 0,276 0,773 0,319 0,695 0,370 0,660 0,466 0,703 0,501 0,655 0,629 0,725 Tabela 9: Karakteristike sistema pri višini števnika 110 slikovnih elementov 0,006 0,005 n 0,004 S £ 0,003 c $ 0,002 2 ž 0,001 0,000 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Slika 92: Največja napaka pri višini števnika 110 slikovnih elementov s 100,00 e kvet 95,00 tš o "i® ? 90,00 o 'U m ok a 85,00 >8 r t 80,00 nam 75,00 I 70,00 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Slika 94: Povprečno trajanje posameznega odčitka pri višini števnika 110 slikovnih elementov 1,20 akt ti ekve e 1,00 >o u o t š o 0,80 s ni >8 iš iv 0,60 in N >o 6 $ n ari 0,40 £ mro 0,20 n 0,00 50 70 90 110 130 150 Višina števk na traku (slikovni elementi) 170 Slika 95: Povprečno trajanje posameznega odčitka, normirano z višino števk na traku pri višini števnika 110 slikovnih elementov 13.4.2 Merilne karakteristike sistema pri različnih rotacijah števnika Podobno kot smo v prejšnjem poglavju prikazali karakteristike pri zajemih števca brez zasuka števnika, na tem mestu podajamo merilne lastnosti sistema v odvisnosti od rotacije števnika ob zajemu. Podatki so prikazani v tabelah od 10 do 13 ter grafično na slikah od 96 do 107. Vidimo, da se ob prisotnosti zasuka števnika napake odčitkov v večini primerov nekoliko povečajo, kar smo pričakovali, saj to predstavlja dodatno spremembo slik števk, ki jo postopek poravnave (poglavje 1) ne more v celoti izničiti. V nekaterih primerih pa so bili rezultati celo boljši ob prisotnosti majhnih zasukov (višina števnika 130 slikovnih elementov in rotacija -25°). Sklepamo, da je to posledica neidealne izvedbe števnika, kjer koleščki niso povsem pravokotni na vertikalne meje števca (ta pojav smo že omenili pri izgradnji traku v poglavju 1). Posledica tega je, da so števke že pri zajemu za izgradnjo traku nekoliko zasukane in ko zasukamo števnik pri odčitavanju vrednosti za podoben kot, se natančnost odčitavanja poveča. Iz tabel in grafov lahko vidimo, da zmanjšanje natančnosti odčitavanja ni usodno, saj nismo pri nobeni meritvi zaznali prekoračitve zahtevane natančnosti; smo pa pri višini števnika 130 slikovnih elementov in zasuku -5° dopustno mejo skoraj dosegli. Zato pri preciznih odčitavanjih števnika priporočamo pogoje obratovanja, kjer je zasuk le-tega čim manjši. Povprečni čas odčitka se ne spremeni bistveno v odvisnosti od rotacije. Čas, potreben za posamezni odčitek, kaže v večini primerov trend zmanjševanja za nekaj odstotkov ob prisotnosti rotacije. Razlog je v tem, da se z rotacijo pospeši detekcija vertikalnih mej števnika (poglavje 8.1), saj se ob prisotnosti zasuka zmanjšajo temna področja med števkami in s tem število točk, skozi katere računamo regresijsko premico. Sklepamo, da se ob prisotnosti rotacije hitrost odčitavanja poveča kvečjemu za nekaj odstotkov (višina števnika 150 slikovnih elementov, rotacija števnika +5°). Rotacija števnika (kotne stopinje) -5 -2'5 0 +2'5 +5 Maks. abs. napaka 0,0058 0,0047 0,0018 0,0057 0,0035 Rezerva do ene črtice % 42,0 53,0 82,0 43,0 65,0 Min. % ujemanja števke s trakom 90,051 93,729 93,966 89,776 89,134 Povprečni čas odčitka (s) 0,426 0,396 0,567 0,379 0,401 Tabela 10: Karakteristike sistema pri višini števnika 170 slikovnih elementov 0,007 0,006 0,005 0,004 0,003 ® 0,002 > z 0,001 0,000 -5 -2'5 0 +2'5 Rotacija števnika (kotne stopinje) +5 Slika 96: Največja napaka pri višini števnika 170 slikovnih elementov m o > o 100,00 95,00 3 ra o £ > '5T 0,008 0,007 0,006 0,005 0,004 0,003 0,002 0,001 0,000 -2'5 0 +2'5 Rotacija števnika (kotne stopinje) +5 5 m o > o >m 'Ig o o 3 ra o £ > 'Š? 0,002 0,000 -2'5 0 +2'5 Rotacija števnika (kotne stopinje) +5 5 Slika 102: Največja napaka pri višini števnika 130 slikovnih elementov s 100,00 e k v e t 95,00 š ej jn a E ej # 90,00 E ok 85,00 D' e šj 2 80,00 n a £ 75,00 ja z 70,00 -5 -2'5 0 +2'5 Rotacija števnika (kotne stopinje) +5 Slika 103: Najmanjše ujemanje slike zadnje števke s trakom v odstotkih pri višini števnika 130 slikovnih elementov Slika 104: Povprečno trajanje posameznega odčitka pri višini števnika 130 slikovnih elementov Rotacija števnika (kotne stopinje) -5 -2'5 0 +2'5 +5 Maks. abs. napaka 0,0057 0,0036 0,0048 0,0067 0,0045 Rezerva do ene črtice % 43,0 64,0 52,0 33,0 55,0 Min. % ujemanja števke s trakom 87,582 88,318 90,477 89,974 87,953 Povprečni čas odčitka (s) 0,322 0,349 0,367 0,413 0,374 Tabela 13: Karakteristike sistema pri višini števnika 110 slikovnih elementov ä ra c rc o > '5T 0,008 0,007 0,006 0,005 0,004 0,003 0,002 0,001 0,000 -2'5 0 +2'5 Rotacija števnika (kotne stopinje) +5 5 m o > o >m * § o o 3 ra o £ >. il____LL .ILLU11 lILkk i MM " WW . Mflik, iHiiiiitaL^ i p se f» Pričakovana vrednost števke Literatura 1. Peter Rogelj: Odčitavanje serijske številke električnih števcev - diplomska naloga, Ljubljana, 1998. 2. Shunji Mori, Ching Y. Suen, Kazuhiko Yamamoto: Historical Review of OCR Research and Development, IEEE, Vol. 80, No. 7, July 1992. 3. V. K. Govindan, A. P. Shivaprasad, Character Recognition - a review, Pattern Recognition, Vol. 23, No. 7, June 1989. 4. Nikola Pavešić: Razpoznavanje vzorcev, Ljubljana, 1992. 5. John C. Russ: The Image Processing Handbook - 2nd edition, CRC Press, 1994. 6. Rafael C. Gonzalez, Richard E. Woods: Digital Image Processing, Addison-Wesley, 1992. 7. C. A. Glasbey, G. W. Horgan: Image Analysis for the Biological Sciences, John Wiley & Sons Ltd., 1994. 8. Anton Pozne: Električna merilna tehnika I. del, Ljubljana, 1985. Izjava Izjavljam, da sem magistrsko nalogo izdelal samostojno pod strokovnim vodstvom mentorja prof. dr. Stanislava Kovačiča, dipl. ing. Izkazano pomoč drugih sodelavcev sem v celoti navedel v zahvali. Boštjan Murovec Strokovni življenjepis avtorja Boštjan Murovec se je rodil 22.06.1971 v Šempetru pri Novi Gorici. Po končani osnovni šoli France Bevk v Tolminu se je vpisal na Pedagoško srednjo šolo v Tolminu, kjer si je pridobil poklic učitelj naravoslovno-matematične smeri. Na Fakulteto za elektrotehniko in računalništvo Univerze v Ljubljani se je vpisal leta 1990. Izbral je študijsko smer elektrotehnika-avtomatika-procesna informatika. Diplomiral je julija 1996 in se istega leta vpisal na podiplomski študij Fakultete za elektrotehniko v Ljubljani. Področje njegovega raziskovalnega dela v času magistrskega študija je obsegalo umetni vid ter digitalno obdelavo, analizo in razumevanje slikovnih vzorcev. Objavljena dela 1. MUROVEC, Boštjan, KNIEWALD, Matej, KOVAČIČ, Stanislav. Optično odčitavanje električnega števca. Elektrotehniški vestnik, 1997, let. 64, št. 2/3, str. 78-86. 2. MUROVEC, Boštjan, KNIEWALD, Matej, KOVAČIČ, Stanislav. Optical reading of electricity meters. V: GENGLER, Manfred (ur.), PRINZ, Michael (ur.), SCHUSTER, Ernst (ur.). Pattern recognition and medical computer vision 1998 : 22nd Workshop of the Austrian Association for Pattern Recognition (ÖAGM / AAPR), Illmitz, May 14th - 15th, 1998, (Schriftenreihe der Österreichischen Computer Gesellschaft, Bd. 106). Wien: Österreichische Computer Gesellschaft, cop. 1998, str. 255-263. 3. MUROVEC, Boštjan, KOVAČIČ, Stanislav. Optično odčitavanje električnih števcev. V: Zbornik sedme Elektrotehniške in računalniške konference ERK'98, 24. - 26. september 1998, Portorož, Slovenija / uredil Baldomir Zajc. - Ljubljana: IEEE Region 8, Slovenska sekcija IEEE, 1998. - Zv. B, str. 297-300. Kazalo ZAHVALA..............................................................................................................................1 POVZETEK............................................................................................................................3 1 UVOD.................................................................................................................................5 1.1 Električni Stevci in prikaz vrednosti.........................................................................................6 1.2 Čelna ploSča električnega Stevca...........................................................................................7 1.3 Končni preizkus električnih Stevcev.........................................................................................9 1.4 Slabosti ročnega odčitavanja................................................................................................10 1.5 Prednosti avtomatskega odčitavanja....................................................................................11 1.6 Specifikacija zahtev sistema....................................................................................................11 2 SPLOSNO O ZASNOVI SISTEMA...................................................................................13 2.1 Makroskopski opis sistema.......................................................................................................14 2.2 Strojna oprema.........................................................................................................................16 2.2.1 Osebni računalnik................................................................................................................16 2.2.2 Kamera za zajem slike.........................................................................................................16 2.2.3 Kartica za zajem slike..........................................................................................................17 2.3 Nekaj hitrostnih testov............................................................................................................17 2.4 Uporaba sistema za končni preizkus........................................................................................18 2.5 Drugi načini uporabe.................................................................................................................19 3 IZBIRA METOD OBDELAVE SLIK...................................................................................21 3.1 Predobdelava digitalnih slikovnih vzorcev............................................................................21 3.1.1 Obnavljanje zajete slike........................................................................................................22 3.1.2 Izboljšanje kakovosti slike....................................................................................................22 3.2 Segmentacija slike....................................................................................................................23 3.3 Razpoznavanje znakov s postopki OCR..................................................................................24 4 ODČITAVANJE VREDNOSTI...........................................................................................27 4.1 Problematika natančnega odčitavanja..................................................................................27 4.2 Zahtevana natančnost odčitavanja........................................................................................29 4.3 Doseganje želene natančnosti................................................................................................29 5 POSTOPEK ODČITAVANJA VREDNOSTI......................................................................33 5.1 Zasnova sistema.........................................................................................................................33 5.2 Opis postopka.............................................................................................................................34 6 ZAČETNA ANALIZA SLIKE.............................................................................................39 6.1 Tvorjenje podvzorčene slike...................................................................................................39 6.2 Določanje praga binarizacije..................................................................................................41 6.2.1 Postopek določanja praga binarizacije.................................................................................43 7 DETEKCIJA POLOŽAJA STEVNIKA...............................................................................53 7.1 Stevnik in njegov položaj na sliki............................................................................................53 7.2 Specifikacija zahtev za detekcijo............................................................................................57 7.3 Postopek detektiranja števnika..............................................................................................58 7.4 Omejitve opisanega postopka..................................................................................................67 8 LOCIRANJE ŠTEVK.........................................................................................................71 8.1 Vertikalni meji števnika............................................................................................................71 8.1.1 Izločanje neprimernih temnih področij za iskanje mej.........................................................72 8.1.2 Iskanje točk na vertikalnih mejah števnika...........................................................................75 8.2 Parametri števnika....................................................................................................................79 8.3 Detekcija prve in zadnje števke...............................................................................................80 8.4 Tvorjenje seznama območij s števkami...................................................................................83 8.5 Odstranjevanje motečih robov števnika................................................................................85 9 PORAVNAVA ŠTEVK......................................................................................................89 9.1 Problematika poravnave števk...............................................................................................90 9.2 Klasičen in naš pristop k poravnavi števk..............................................................................92 9.2.1 Klasičen postopek transformacije slike................................................................................92 9.2.2 Naš pristop k transformaciji slike števke..............................................................................94 9.3 Implementirani postopek poravnave........................................................................................95 9.4 Način uporabe poravnave.......................................................................................................101 10 IZGRADNJA TRAKU....................................................................................................103 10.1 Zajem slik za izgradnjo traku..............................................................................................103 10.2 Postopek izgradnje traku....................................................................................................106 11 DOLOČANJE VREDNOSTI ŠTEVKAM........................................................................117 11.1 Primerjava števke s trakom.................................................................................................117 12 KONČNI ODČITEK STEVCA........................................................................................121 12.1 Težava pri tvorjenju rezultata...........................................................................................121 12.2 Preprečevanje preskokov....................................................................................................122 13 MERILNE KARAKTERISTIKE......................................................................................125 13.1 Izvajanje meritev...................................................................................................................125 13.1.1 Meritve s števnikom, nastavljanim s koračnim motorjem.................................................125 13.1.2 Meritve s fantomsko obremenjenim števcem...................................................................127 13.2 Ocenjevanje karakteristik sistema.....................................................................................128 13.3 Rezultati meritev...................................................................................................................133 13.4 Ocenjene karakteristike sistema.........................................................................................134 13.4.1 Merilne karakteristike sistema pri rotaciji števnika nič stopinj..........................................134 13.4.2 Merilne karakteristike sistema pri različnih rotacijah števnika.........................................145 14 ZAKLJUČEK................................................................................................................153 DODATEK A: SLIKE TRAKOV.........................................................................................157 DODATEK B: REZULTATI MERITEV...............................................................................167 B.1 Meritve pri velikosti Stevnika 170 slikovnih elementov......................................................168 B.1.1 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: 0°.............................168 B.1.2 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: 0°.............................169 B.1.3 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: 0°.............................170 B.1.4 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: 0°.............................171 B.1.5 Velikost števk na traku: 90 slikovnih elementov, rotacija števnika: 0°...............................172 B.1.6 Velikost števk na traku: 70 slikovnih elementov, rotacija števnika: 0°...............................173 B.1.7 Velikost števk na traku: 50 slikovnih elementov, rotacija števnika: 0°...............................174 B.1.8 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: +5°...........................175 B.1.9 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: +25°........................176 B.1.10 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: -2 5°......................177 B.1.11 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: -5°.........................178 B.2 Meritve pri velikosti Stevnika 150 slikovnih elementov.....................................................179 B.2.1 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: 0°.............................179 B.2.2 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: 0°.............................180 B.2.3 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: 0°.............................181 B.2.4 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: 0°.............................182 B.2.5 Velikost števk na traku: 90 slikovnih elementov, rotacija števnika: 0°...............................183 B.2.6 Velikost števk na traku: 70 slikovnih elementov, rotacija števnika: 0°...............................184 B.2.7 Velikost števk na traku: 50 slikovnih elementov, rotacija števnika: 0°...............................185 B.2.8 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: +5°...........................186 B.2.9 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: +25°.......................187 B.2.10 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: -25°......................188 B.2.11 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: -5°.........................189 B.3 Meritve pri velikosti Stevnika 130 slikovnih elementov.....................................................190 B.3.1 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: 0°.............................190 B.3.2 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: 0°.............................191 B.3.3 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: 0°.............................192 B.3.4 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: 0°.............................193 B.3.5 Velikost števk na traku: 90 slikovnih elementov, rotacija števnika: 0°...............................194 B.3.6 Velikost števk na traku: 70 slikovnih elementov, rotacija števnika: 0°...............................195 B.3.7 Velikost števk na traku: 50 slikovnih elementov, rotacija števnika: 0°...............................196 B.3.8 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: +5°...........................197 B.3.9 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: +25°.......................198 B.3.10 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: -25°......................199 B.3.11 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: -5°.........................200 B.4 Meritve pri velikosti Stevnika 110 slikovnih elementov.....................................................201 B.4.1 Velikost števk na traku: 170 slikovnih elementov, rotacija števnika: 0°.............................201 B.4.2 Velikost števk na traku: 150 slikovnih elementov, rotacija števnika: 0°.............................202 B.4.3 Velikost števk na traku: 130 slikovnih elementov, rotacija števnika: 0°.............................203 B.4.4 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: 0°.............................204 B.4.5 Velikost števk na traku: 90 slikovnih elementov, rotacija števnika: 0°...............................205 B.4.6 Velikost števk na traku: 70 slikovnih elementov, rotacija števnika: 0°...............................206 B.4.7 Velikost števk na traku: 50 slikovnih elementov, rotacija števnika: 0°...............................207 B.4.8 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: +5°...........................208 B.4.9 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: +25°........................209 B.4.10 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: -25°......................210 B.4.11 Velikost števk na traku: 110 slikovnih elementov, rotacija števnika: -5°..........................211 LITERATURA....................................................................................................................213 IZJAVA..............................................................................................................................215 STROKOVNI ŽIVLJENJEPIS AVTORJA..........................................................................217 Objavljena dela............................................................................................................................218