ˇ ´ VYSOKE ´ UCEN ˇ ´I TECHNICKE ´ V PRAZE CESK E Fakulta elektrotechnick´a
´ RSK ˇ ´ PRACE ´ BAKALA A Optick´a ˇcteˇcka
Praha, 2012
Autor: Tom´ aˇ s Reichl
i
Podˇ ekov´ an´ı Dˇekuji pˇredevˇs´ım vedouc´ımu bakal´aˇrsk´e pr´ace prof. Ing. Pavlu Zahradn´ıkovi, CSc. za cenn´e pˇripom´ınky a rady pˇri ˇreˇsen´ı bakal´aˇrsk´e pr´ace. D´ale bych chtˇel podˇekovat sv´e rodinˇe za podporu bˇehem dosavadn´ıho studia.
ii
Abstrakt Tato pr´ace se zab´ yv´a n´avrhem algoritm˚ u a n´aslednˇe vytvoˇren´ım softwaru v programovac´ım jazyce C, kter´ y by byl schopen v dan´em hardwaru a za pomoci kamery, rozpoznat sedmisegmentov´e znaky na mˇeˇric´ıch pˇr´ıstroj´ıch. V t´eto pr´aci jsou d´ale pops´any z´akladn´ı pojmy a metody pro poˇc´ıtaˇcov´e vidˇen´ı a strojov´e rozpozn´av´an´ı. Pro n´avrh a ladˇen´ı algoritmu je pouˇzito v´ yvojov´e prostˇred´ı Matlab. V posledn´ı ˇca´sti je probr´ana implementace algoritmu do sign´alov´eho procesoru TMS320DM6437 firmy Texas Instruments a dosaˇzen´e v´ ysledky pˇri rozpozn´av´an´ı.
iii
Abstract This work deals with design algorithms and create software in programming language C, which would be capable of camera-based recognizing the seven-segment characters on measuring instruments. This paper also describes the basic concepts and methods for computer vision and machine recognition. For the design and debugging algorithm is used the Matlab environment. The last section discussed the implementation of the algorithm to the signal processor Texas Instruments TMS320DM6437 and the results achieved in the recognition.
iv
v
Obsah Seznam obr´ azk˚ u
ix
Seznam tabulek
x
´ 1 Uvod 1.1 Poˇc´ıtaˇcov´e vidˇen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 C´ıle pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
2 Z´ akladn´ı pojmy poˇ c´ıtaˇ cov´ eho vidˇ en´ı 2.1 Reprezentace obrazu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Z´akladn´ı postup pˇri rozpozn´av´an´ı . . . . . . . . . . . . . . . . . . . . . . .
3 3 6
3 N´ avrh algoritmu 3.1 Sn´ım´an´ı obrazu . . . . . . . . . . . . . . . . 3.2 Pˇredzpracov´an´ı . . . . . . . . . . . . . . . . 3.3 Segmentace obrazu . . . . . . . . . . . . . . 3.3.1 Prahov´an´ı . . . . . . . . . . . . . . . 3.3.2 Adaptivn´ı prahov´an´ı . . . . . . . . . 3.3.3 Segmentace zaloˇzen´a na detekci hran 3.3.4 Filtrace bin´arn´ıho ˇsumu . . . . . . . 3.3.5 Identifikace objekt˚ u. . . . . . . . . . 3.4 Lokalizace sedmisegmentov´ ych znak˚ u . . . . 3.4.1 Odstranˇen´ı nevhodn´ ych objekt˚ u . . . 3.4.2 Sjednocen´ı objekt˚ u . . . . . . . . . . 3.4.3 Nalezen´ı znak˚ u . . . . . . . . . . . . 3.4.4 Detekce desetinn´e teˇcky . . . . . . . 3.5 Klasifikace objekt˚ u . . . . . . . . . . . . . . vi
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
8 8 9 11 11 13 13 15 15 17 17 18 20 21 22
3.6
V´ ysledky n´avrhu v Matlabu . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4 Implementace 4.1 Sezn´amen´ı s procesorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Pˇrepis k´odu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˇ 4.3 Casov´ a optimalizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 26 27 29
5 Experiment´ aln´ı v´ ysledky
32
6 Z´ avˇ er
35
Literatura
36
A Seznam pouˇ zit´ eho software
I
vii
Seznam obr´ azk˚ u 1.1
Vzor sedmisegmentov´eho znaku . . . . . . . . . . . . . . . . . . . . . . . .
2
2.1 2.2 2.3 2.4 2.5
ˇ Ctvercov´ a (vlevo) a hexagon´aln´ı (vpravo) mˇr´ıˇzka . . . . . . . . . . . . . . . Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-sousedstv´ı (vlevo) a 8-sousedstv´ı (vpravo) . . . . . . . . . . . . . . . . . Pˇr´ıklad oblasti v 4-sousedstv´ı (vlevo) a 8-sousedstv´ı (vpravo) . . . . . . . . Transformace jasov´e stupnice - transformace pro zv´ yˇsen´ı kontrastu (ˇcervenˇe), prahov´an´ı (ˇcernˇe) a negativ (modˇre) . . . . . . . . . . . . . . . . . . . . .
4 4 5 5
Pˇr´ıklad sejmut´eho obrazu . . . . . . . . . . . . . . . . . . . . . . . . . . . V´ ychoz´ı obraz s n´ızk´ ym kontrastem (vlevo) a obraz s ekvalizovan´ ym histogramem (vpravo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Histogram obrazu s n´ızk´ ym kontrastem (vlevo) a ekvalizovan´ y histogram (vpravo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 V´ ysledek prahov´an´ı s n´ızk´ ym prahem (vlevo), se spr´avnˇe nastaven´ ym prahem (uprostˇred) a s vysok´ ym prahem (vpravo) . . . . . . . . . . . . . . . . 3.5 Urˇcen´ı hodnoty prahu z histogramu . . . . . . . . . . . . . . . . . . . . . . 3.6 V´ ysledek prahov´an´ı Niblackovou metodou pro lok´aln´ı okol´ı 11×11 (vlevo) a 21×21 (vpravo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Cannyho hranov´ y detektor . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 Filtraˇcn´ı maska (vlevo), pˇr´ıklad stavu splˇ nuj´ıc´ı (uprostˇred) a nesplˇ nuj´ıc´ı (vpravo) podm´ınku 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9 V´ ysledek filtrov´an´ı ˇsumu - vlevo origin´al, vpravo v´ ystupn´ı obraz . . . . . . 3.10 Maska pro barven´ı ve 4-sousednosti (vlevo) a 8-sousednosti (vpravo) . . . . 3.11 Algoritmus barven´ı pro 4-sousedstv´ı - v´ ychoz´ı obraz (vlevo), obraz po prvn´ım pr˚ uchodu (uprostˇred), obraz po druh´em pr˚ uchodu (vpravo) . . . . . . . . . 3.12 Odstranˇen´ı nevhodn´ ych objekt˚ u - vlevo origin´al, vpravo v´ ystupn´ı obraz . .
9
3.1 3.2
viii
6
10 11 12 12 14 15 16 16 17 17 19
3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21
Proch´azen´ı hranice objekt˚ u (ˇcervenˇe) . . . . . . . . . . . . . . . . . . . . . Sjednocen´ı objekt˚ u - vlevo origin´al, vpravo v´ ystupn´ı obraz . . . . . . . . . Nalezen´ı pozice znak˚ u (ˇcervenˇe) . . . . . . . . . . . . . . . . . . . . . . . . Pˇredpokl´adan´e oblasti desetinn´e teˇcky (zelenˇe) . . . . . . . . . . . . . . . . Klasifikaˇcn´ı tˇr´ıdy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Detekce segment˚ u ve znaku . . . . . . . . . . . . . . . . . . . . . . . . . . Pˇr´ıklad spr´avnˇe rozpoznan´eho sn´ımku - rozpoznan´a hodnota 155.7 . . . . . Pˇr´ıklad spr´avnˇe rozpoznan´eho sn´ımku - rozpoznan´a hodnota 608.0 . . . . . Pˇr´ıklad ˇspatnˇe rozpoznan´eho sn´ımku - nenalezen druh´ y znak vlivem odrazu pˇredmˇetu v displeji, rozpoznan´a hodnota 11.4 . . . . . . . . . . . . . . . . 3.22 Pˇr´ıklad ˇspatnˇe rozpoznan´eho sn´ımku - nespr´avnˇe detekovan´a desetinn´a teˇcka, rozpoznan´a hodnota 1.401 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.23 Pˇr´ıklad ˇspatnˇe rozpoznan´eho sn´ımku - chybn´a klasifikace tˇret´ıho znaku vlivem n´ızk´eho kontrastu, rozpoznan´a hodnota 17X.0 . . . . . . . . . . . . .
19 20 21 21 22 22 24 24 25 25 25
4.1 4.2
V´ yvojov´ y modul TMS320DM6437 EVM . . . . . . . . . . . . . . . . . . . 26 Blokov´e sch´ema v´ yvojov´eho modulu TMS320DM6437 EVM (pˇrevzato z [11]) 27
5.1
V´ ysledek rozpozn´av´an´ı zobrazen´ y na v´ ychoz´ım obrazu (vlevo) a na obrazu po segmentaci (vpravo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V´ ysledek rozpozn´av´an´ı zobrazen´ y na v´ ychoz´ım obrazu (vlevo) a na obrazu po segmentaci (vpravo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2
ix
34 34
Seznam tabulek 3.1 3.2
Nastaven´ı parametr˚ u objekt˚ u . . . . . . . . . . . . . . . . . . . . . . . . . V´ ysledky rozpozn´av´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18 23
4.1 4.2 4.3
V´ ypoˇcetn´ı doba algoritmu pˇred optimalizac´ı . . . . . . . . . . . . . . . . . V´ ypoˇcetn´ı doba algoritmu po optimalizaci . . . . . . . . . . . . . . . . . . Srovn´an´ı v´ ypoˇcetn´ı doby algoritmu pˇred a po optimalizaci . . . . . . . . .
30 30 30
5.1 5.2 5.3
V´ ysledky rozpozn´av´an´ı pro mˇeˇric´ı pˇr´ıstroj Voltcraft VC220 . . . . . . . . . V´ ysledky rozpozn´av´an´ı pro mˇeˇric´ı pˇr´ıstroj Solid RE830D . . . . . . . . . . Shrnut´ı v´ ysledk˚ u rozpozn´av´an´ı . . . . . . . . . . . . . . . . . . . . . . . . .
33 33 33
x
Kapitola 1 ´ Uvod 1.1
Poˇ c´ıtaˇ cov´ e vidˇ en´ı
S rozvojem v´ ypoˇcetn´ı techniky se zrodil nov´ y perspektivn´ı obor - poˇc´ıtaˇcov´e vidˇen´ı, kter´ y si klade za c´ıl vytv´aˇret a zpracov´avat informace ze zachycen´eho digitalizovan´eho obrazu. Metody poˇc´ıtaˇcov´eho vidˇen´ı maj´ı uplatnˇen´ı v mnoha oborech jako robotika, doprava nebo medic´ına. Jednou z u ´loh poˇc´ıtaˇcov´eho vidˇen´ı je nalezen´ı a urˇcen´ı alfanumerick´ ych znak˚ u z naskenovan´eho nebo nasn´ıman´eho obrazu naz´ yvan´e optick´e rozpozn´av´an´ı znak˚ u (Optical Character Recognition). Optick´e rozpozn´av´an´ı znak˚ u je zaloˇzen´e na detekci a klasifikaci objekt˚ u, kter´e sv´ ym charakterem nejv´ıce odpov´ıdaj´ı hledan´ ym znak˚ um. Je tˇreba podotknout, ˇze samotn´ y probl´em zpracov´an´ı obrazu je velice sloˇzit´ y, protoˇze kaˇzd´ y obraz je zat´ıˇzen ˇsumem a chybou vzniklou digitalizac´ı obrazu. Proces optick´eho rozpozn´av´an´ı znak˚ u nen´ı nikdy naprosto bezchybn´ y, ale je jen v´ıce ˇci m´enˇe pˇresn´ y.
1.2
C´ıle pr´ ace
C´ılem t´eto pr´ace je navrhnout algoritmy a realizovat zaˇr´ızen´ı pro rozpozn´av´an´ı sedmisegmentov´ ych ˇc´ıseln´ ych u ´daj˚ u na mˇeˇr´ıc´ıch pˇr´ıstroj´ıch. Zamˇeˇr´ıme se na mˇeˇric´ı pˇr´ıstroje s LCD displejem, na kter´em jsou u ´daje prezentov´any tmavou barvou na svˇetl´em pozad´ı. Ke sn´ım´an´ı obrazu pouˇzijeme polovodiˇcov´ y obrazov´ y sn´ımaˇc. N´avrh, ladˇen´ı a testov´an´ı algoritmu provedeme v prostˇred´ı Matlab, kter´e poskytuje potˇrebnou podporu obrazov´eho zpracov´an´ı. N´aslednˇe pˇrevedeme zdrojov´ y k´od do jazyka C a implementujeme do vhodn´eho mikroprocesoru. V´ ysledn´e zaˇr´ızen´ı se bude skl´adat z obrazov´eho sn´ımaˇce, mikroprocesoru 1
´ KAPITOLA 1. UVOD a v´ ystupu pro pˇripojen´ı k dalˇs´ımu zaˇr´ızen´ı. Toto zaˇr´ızen´ı by mohlo naj´ıt uplatnˇen´ı napˇr. pro zapisov´an´ı mˇeˇren´e veliˇciny z pˇr´ıstroje, kter´ y nedisponuje digit´aln´ım v´ ystupem nebo pro kalibraci mˇeˇr´ıc´ıch pˇr´ıstroj˚ u. Zadan´a u ´loha je podobn´a u ´loze optick´eho rozpozn´av´an´ı znak˚ u, ale je tˇreba upozornit na nˇekter´e odliˇsnosti. 1. Hledan´e sedmisegmentov´e znaky nejsou spojitˇe spojeny, ale skl´adaj´ı se z jednotliv´ ych segment˚ u, kter´e mohou b´ yt po segmentaci obrazu rozdˇeleny do v´ıce objekt˚ u. Vzor sedmisegmentov´eho znaku je vidˇet na obr´azku 1.1. Pˇri hled´an´ı objekt˚ u, kter´e odpov´ıdaj´ı sedmisegmentov´ ym znak˚ um je proto tˇreba s t´ımto omezen´ım poˇc´ıtat. Tento probl´em je pops´an v kapitole 3.4. 2. Pˇri sn´ım´an´ı mˇeˇr´ıc´ıch pˇr´ıstroj˚ u doch´az´ı velmi ˇcasto ke sn´ıˇzen´ı kontrastu ˇc´ıseln´ ych u ´daj˚ u, vlivem nedostateˇcn´eho osvˇetlen´ı LCD displeje. Je proto nutn´e navrhnout robustn´ı segmentaˇcn´ı metody, pˇr´ıpadnˇe pouˇz´ıt vhodnou jasovou transformaci. T´ımto probl´emem se zab´ yv´a kapitola 3.3.
Obr´azek 1.1: Vzor sedmisegmentov´eho znaku
2
Kapitola 2 Z´ akladn´ı pojmy poˇ c´ıtaˇ cov´ eho vidˇ en´ı V t´eto kapitole vysvˇetl´ıme z´akladn´ı pojmy a metody poˇc´ıtaˇcov´eho vidˇen´ı, kter´e budeme v t´eto pr´aci pouˇz´ıvat. V´ıce informac´ı o poˇc´ıtaˇcov´em vidˇen´ı je moˇzno naj´ıt napˇr. v [1].
2.1
Reprezentace obrazu
Abychom mohli s obrazem pracovat, mus´ıme nejdˇr´ıve spojit´ y sign´al pˇrev´est do digit´aln´ı podoby. Digitalizace obrazu je dosaˇzeno vzorkov´an´ım obrazu do koneˇcn´eho mnoˇzstv´ı obrazov´ ych bod˚ u, kter´e oznaˇcujeme jako obrazov´e elementy a kvantov´an´ım jasu do nˇekolika diskr´etn´ıch hladin. Velmi d˚ uleˇzit´a je volba mnoˇzstv´ı obrazov´ ych element˚ u a velikosti vzorˇ kovac´ıho intervalu. C´ım vˇetˇs´ı bude poˇcet obrazov´ ych element˚ u a menˇs´ı vzorkovac´ı interval, t´ım vˇerohodnˇeji bude obraz reprezentovat origin´aln´ı obraz. Digitalizace obrazu je nejˇcastˇeji souˇc´ast´ı samotn´eho sn´ımac´ıho zaˇr´ızen´ı, a proto se touto problematikou nebudeme bl´ıˇze zab´ yvat. U barevn´ ych digit´aln´ıch obraz˚ u mus´ı kaˇzd´ y obrazov´ y element nav´ıc obsahovat informaci o barevn´e sloˇzce. To, jak´ ym zp˚ usobem je informace o jasu a barvˇe v obrazov´em elementu uloˇzena, urˇcuje tzv. barevn´ y model. V t´eto pr´aci budeme pracovat s dvˇema barevn´ ymi modely – RGB a YCbCr. RGB model je aditivn´ı model zaloˇzen´ y na zastoupen´ı ˇcerven´e, zelen´e a modr´e sloˇzky. M´ıch´an´ım tˇechto sloˇzek vznik´a v´ ysledn´a barva a intenzita barevn´ ych sloˇzek urˇcuje jas. U YCbCr modelu pˇredstavuje sloˇzka Y jas a kombinace sloˇzek Cb, Cr ud´avaj´ı barvu. D˚ uleˇzit´ ym pojmem reprezentace obrazu je vzorkovac´ı mˇr´ıˇzka. Vzorkovac´ı mˇr´ıˇzka definuje uspoˇr´ad´an´ı jednotliv´ ych obrazov´ ych element˚ u. Nejˇcastˇeji pouˇz´ıv´ame mˇr´ıˇzky ˇctvercov´e ˇ a mˇr´ıˇzky hexagon´aln´ı. Ctvercov´ a mˇr´ıˇzka je velmi snadno realizovateln´a a vych´az´ı z kon3
´ ´I POJMY POC ˇ ´ITACOV ˇ ´ ˇ ´I KAPITOLA 2. ZAKLADN EHO VIDEN
strukce sn´ımac´ıch zaˇr´ızen´ı. V´ yhodou hexagon´aln´ı mˇr´ıˇzky je symetriˇcnost vzhledem k okoln´ım obrazov´ ym element˚ um. Tvar obou vzorkovac´ıch mˇr´ıˇzek je zn´azornˇen na obr´azku 2.1. V naˇsem pˇr´ıpadˇe budeme pouˇz´ıvat mˇr´ıˇzku ˇctvercovou.
ˇ Obr´azek 2.1: Ctvercov´ a (vlevo) a hexagon´aln´ı (vpravo) mˇr´ıˇzka
Histogram Grafick´e zn´azornˇen´ı zastoupen´ı jednotliv´ ych jasov´ ych hladin v obrazu vyjadˇruje histogram. Histogram je graf, kter´ y na vodorovn´e ose vyznaˇcuje jasov´e hladiny a na svisl´e ose ˇcetnosti jednotliv´ ych jasov´ ych hladin v cel´em obrazu. Histogram je d˚ uleˇzit´ ym prostˇredkem pro jasov´e transformace a korekce v obrazu. Pˇr´ıklad histogramu m˚ uˇzeme vidˇet na obr´azku 2.2.
Obr´azek 2.2: Histogram
Oblasti Pro obrazov´ y element definujeme jeho souseda jako element, kter´ y patˇr´ı do jeho sousedstv´ı. Pro ˇctvercov´e vzorkovac´ı mˇr´ıˇzky uvaˇzujeme nejˇcastˇeji 4-sousedstv´ı a 8-sousedstv´ı 4
´ ´I POJMY POC ˇ ´ITACOV ˇ ´ ˇ ´I KAPITOLA 2. ZAKLADN EHO VIDEN
(obr 2.3). Mnoˇzinu obrazov´ ych element˚ u v bin´arn´ım obraze, kter´e jsou vz´ajemnˇe sousedy v dan´em sousedstv´ı a maj´ı spoleˇcnou hodnotu, budeme oznaˇcovat jako oblast. Na obr´azku 2.4 jsou zn´azornˇeny pˇr´ıklady oblast´ı ve 4-sousedstv´ı a v 8-sousedstv´ı. Oblasti v obraze, kter´e odpov´ıdaj´ı pˇredmˇet˚ um v re´aln´em prostˇred´ı interpretujeme jako objekty. Tyto pojmy budeme ˇcasto pouˇz´ıvat pro segmentaˇcn´ı techniky.
Obr´azek 2.3: 4-sousedstv´ı (vlevo) a 8-sousedstv´ı (vpravo)
Obr´azek 2.4: Pˇr´ıklad oblasti v 4-sousedstv´ı (vlevo) a 8-sousedstv´ı (vpravo)
Transformace jasov´ e stupnice C´ılem transformace jasov´e stupnice je pˇriˇradit vˇsem jasov´ ym hodnot´am novou hodnotu jasu. Je stejn´a pro vˇsechny obrazov´e elementy v obraze. Transformace stupnice jasu q na novou stupnici p je d´ana vztahem (vztah pˇrevzat z [1]) q = T (p)
(2.1)
Transformace rozdˇelujeme na line´arn´ı a neline´arn´ı. Line´arn´ı transformace umoˇzn ˇuje zpˇetn´e pˇreveden´ı na v´ ychoz´ı stupnici. Mezi z´akladn´ı transformace jasov´e stupnice ˇrad´ıme trans-
5
´ ´I POJMY POC ˇ ´ITACOV ˇ ´ ˇ ´I KAPITOLA 2. ZAKLADN EHO VIDEN
formaci pro zv´ yˇsen´ı kontrastu, prahov´an´ı a negativ (obr´azek 2.5). Speci´aln´ım typem transformace je ekvalizace histogramu.
Obr´azek 2.5: Transformace jasov´e stupnice - transformace pro zv´ yˇsen´ı kontrastu (ˇcervenˇe), prahov´an´ı (ˇcernˇe) a negativ (modˇre)
2.2
Z´ akladn´ı postup pˇ ri rozpozn´ av´ an´ı
Z´akladn´ı postup pˇri rozpozn´av´an´ı obrazu m˚ uˇzeme rozdˇelit do n´asleduj´ıc´ıch krok˚ u • Sn´ım´an´ı a digitalizace obrazu • Pˇredzpracov´an´ı • Segmentace obrazu • Popis objekt˚ u • Klasifikace Poznamenejme, ˇze pouˇzit´e rozdˇelen´ı nen´ı jednoznaˇcn´e, protoˇze v r˚ uzn´ ych literatur´ach se m˚ uˇzeme setkat s jin´ ym dˇelen´ım. Volba jednotliv´ ych krok˚ u je z´avisl´a na konkr´etn´ı u ´loze a potˇreb´ach autora.
Sn´ım´ an´ı a digitalizace obrazu Nejd˚ uleˇzitˇejˇs´ım krokem je vlastn´ı z´ısk´an´ı obrazu. Sn´ım´an´ım obrazu rozum´ıme pˇrevod vstupn´ı optick´e veliˇciny na elektrick´ y sign´al. Abychom mohli obraz uloˇzit a n´aslednˇe ho 6
´ ´I POJMY POC ˇ ´ITACOV ˇ ´ ˇ ´I KAPITOLA 2. ZAKLADN EHO VIDEN
zpracovat, mus´ıme jeho spojit´ y vstupn´ı sign´al digitalizovat. Digitalizac´ı jsme se zab´ yvali v kapitole 2.1. K zachycen´ı obrazu nejˇcastˇeji pouˇz´ıv´ame kameru, scanner nebo jin´e sn´ımac´ı zaˇr´ızen´ı.
Pˇ redzpracov´ an´ı Z´ıskan´ y obraz m˚ uˇze b´ yt zkreslen a zat´ıˇzen ˇsumem vlivem zp˚ usobu sn´ım´an´ı a digitalizace nebo ˇspatn´ ych optick´ ych podm´ınek. C´ılem pˇredzpracov´an´ı je toto zkreslen´ı odstranit nebo alespoˇ n ˇca´steˇcnˇe potlaˇcit. Dalˇs´ım u ´kolem pˇredzpracov´an´ı m˚ uˇze b´ yt zv´ yraznˇen´ı urˇcit´ ych rys˚ u v obraze nebo jin´a u ´prava obrazu pro snadnˇejˇs´ı zpracov´an´ı. Tento krok b´ yv´a ˇcasto vynech´an a z´aleˇz´ı na kvalitˇe sejmut´eho obrazu a naˇsich potˇreb´ach.
Segmentace Nejtˇeˇzˇs´ım krokem v procesu rozpozn´av´an´ı je segmentace obrazu na jednotliv´e objekty. Segmentace se snaˇz´ı oddˇelit objekty od pozad´ı. Za objekty zde budeme povaˇzovat ty ˇca´sti obrazu, kter´e odpov´ıdaj´ı pˇredmˇet˚ um v re´aln´em prostˇred´ı. Jen ve velmi ojedinˇel´ ych pˇr´ıpadech je moˇzn´e dos´ahnout kompletn´ı segmentace, a proto se vˇetˇsinou snaˇz´ıme o co nejlepˇs´ı ˇca´steˇcnou segmentaci, kter´a nalezne alespoˇ n nejv´ yraznˇejˇs´ı objekty. V´ ystupem segmentace ˇcasto b´ yv´a bin´arn´ı obraz, kde oblasti s hodnotou jedna odpov´ıdaj´ı objekt˚ um a oblasti s nulovou hodnotou pˇredstavuj´ı pozad´ı.
Popis objekt˚ u Abychom mohli v segmentovan´em obraze naj´ıt objekty, kter´e n´as zaj´ımaj´ı, mus´ıme je vhodn´ ym zp˚ usobem popsat. Zp˚ usob popisu by mˇel b´ yt zvolen tak, aby co nejl´epe charakterizoval tvar objektu. Nejˇcastˇeji objekty popisujeme pomoc´ı souboru ˇc´ıseln´ ych charakteristik. Tyto ˇc´ıseln´e u ´daje oznaˇcujeme jako pˇr´ıznaky. Pˇr´ıkladem velmi jednoduch´eho popisu objektu m˚ uˇze b´ yt velikost jeho v´ yˇsky, ˇs´ıˇrky nebo plochy.
Klasifikace Fin´aln´ım krokem je klasifikace nalezen´ ych objekt˚ u. Pˇri klasifikaci se snaˇz´ıme nalezen´e pˇredmˇety zaˇradit do pˇredem definovan´ ych tˇr´ıd. Testovan´ y objekt zaˇrad´ıme do takov´e tˇr´ıdy, kter´a sv´ ym popisem nejl´epe odpov´ıd´a popisu testovan´eho objektu. Existuje cel´a ˇrada metod pro klasifikaci objekt˚ u a jsou pops´any napˇr. v [7]. 7
Kapitola 3 N´ avrh algoritmu V t´eto kapitole pop´ıˇseme navrhnut´ y postup rozpozn´av´an´ı v Matlabu a vysvˇetl´ıme pouˇzit´e metody. Cel´ y proces rozpozn´av´an´ı je rozdˇelen do nˇekolika krok˚ u, kter´e popisuj´ı jednotliv´e podkapitoly.
3.1
Sn´ım´ an´ı obrazu
Ke sn´ım´an´ı obrazu pouˇzijeme barevnou webovou kameru Trust WB-1400T s USB v´ ystupem, rozliˇsen´ım 352 × 288 a barevnou hloubkou 24 bit˚ u. Rozliˇsen´ı kamery je pro u ´ˇcely naˇseho rozpozn´av´an´ı dostateˇcn´e a nav´ıc zaruˇc´ı menˇs´ı v´ ypoˇcetn´ı n´aroˇcnost neˇz u kamer s vysok´ ym rozliˇsen´ım. Kamera disponuje manu´aln´ım ostˇren´ım. Pro sejmut´ı a uloˇzen´ı obrazu v Matlabu pouˇz´ıv´ame n´asleduj´ıc´ı pˇr´ıkazy cam = videoinput(’winvideo’,1,’RGB24_352x288’); preview(cam) obr = getsnapshot(cam); Prvn´ım pˇr´ıkazem zvol´ıme kameru pro vytvoˇren´ı video vstupu. Pro urˇcen´ı parametr˚ u zvolen´eho sn´ımac´ıho zaˇr´ızen´ı m˚ uˇzeme pouˇz´ıt pˇr´ıkaz imaqhwinfo(). Druh´ y pˇr´ıkaz slouˇz´ı k zapnut´ı n´ahledu kamery. Posledn´ım pˇr´ıkazem provedeme sejmut´ı obrazu a uloˇzen´ı do promˇenn´e obr. V´ ystupn´ı obraz je uloˇzen do trojrozmˇern´e matice 288 × 352 × 3. Matlab pouˇz´ıv´a pro uloˇzen´ı a spr´avu obr´azk˚ u barevn´ y model RGB. Pˇr´ıklad sejmut´eho obr´azku mˇeˇric´ıho pˇr´ıstroje je na obr´azku 3.1.
8
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.1: Pˇr´ıklad sejmut´eho obrazu
3.2
Pˇ redzpracov´ an´ı
C´ılem pˇredzpracov´an´ı je upravit obraz pro zpracov´an´ı a dalˇs´ı metody. V tomto kroku se snaˇz´ıme odstranit ˇsum a zkreslen´ı vznikl´e pˇri sn´ım´an´ı obrazu nebo zv´ yraznit ˇci potlaˇcit nˇekter´e rysy.
Pˇ revod do ˇ cernob´ıl´ eho form´ atu Vˇetˇsina segmentaˇcn´ıch metod pracuje s monochromatick´ ym obrazem. Proto v prvn´ı f´azi pˇrevedeme uloˇzen´ y barevn´ y obr´azek do ˇcernob´ıl´eho form´atu. Dopust´ıme se t´ım ˇc´asteˇcn´e ztr´aty informace, avˇsak tato informace nen´ı pro naˇsi u ´lohu podstatn´a. Barevn´a informace je nav´ıc z´avisl´a na dalˇs´ıch parametrech a m´a tak pro proces rozpozn´av´an´ı malou vypov´ıdac´ı hodnotu. Pro pˇrevod barevn´eho modelu RGB do ˇcernob´ıl´eho form´atu existuje cel´a ˇrada metod. My vybereme pˇrevod, kter´ y je pops´an v [4] a je urˇcen n´asleduj´ıc´ım vztahem Y (i, j) = 0.299 R(i, j) + 0.587 G(i, j) + 0.114 B(i, j)
(3.1)
pro kaˇzd´ y obrazov´ y element ˇra´dku i a sloupce j v obraze. Pˇreveden´ y obraz tak bude uloˇzen v dvourozmˇern´e matici s rozmˇery 288 × 352.
Filtrace ˇ sumu C´ılem filtrace je odstranˇen´ı n´ahodn´eho ˇsumu v obrazu, kter´ y je zp˚ usoben sn´ımac´ım zaˇr´ızen´ım, digitalizac´ı obrazu nebo ˇspatn´ ymi optick´ ymi podm´ınkami. Mezi nejpouˇz´ıvanˇejˇs´ı metody k odstranˇen´ı ˇsumu patˇr´ı filtrace pr˚ umˇerov´an´ım a filtrace metodou medi´anu. Fil-
9
´ KAPITOLA 3. NAVRH ALGORITMU
trace pr˚ umˇerov´an´ım je zaloˇzena na urˇcen´ı hodnoty jasu aritmetick´ ym pr˚ umˇerem jeho okol´ı. U filtrace metodou medi´anu urˇc´ıme hodnotu nov´eho jasu jako medi´an v lok´aln´ım okol´ı. Obˇe metody u ´spˇeˇsnˇe vyhlazuj´ı obr´azek a odstraˇ nuj´ı ˇsum, ale doch´az´ı pˇri nich k rozmaz´av´an´ı hran v obraze, a proto ˇza´dnou filtraci v tomto n´avrhu aplikovat nebudeme.
Ekvalizace histogramu Sn´ıman´ y obraz m˚ uˇze m´ıt vlivem ˇspatn´ ych okoln´ıch podm´ınek n´ızk´ y kontrast. Jednou z metod pro automatick´e zv´ yˇsen´ı kontrastu sn´ımku je ekvalizace histogramu. Jedn´a se o transformaci jasov´e stupnice (viz. kapitola 2.1), kter´a se snaˇz´ı vyrovnat zastoupen´ı vˇsech jasov´ ych hodnot. Uveden´a transformace je v diskr´etn´ım pˇr´ıpadˇe d´ana vztahem (vztah pˇrevzat z [1]) p q k − q0 X H(i) + q0 (3.2) q = T (p) = N 2 i=p0 kde p = hp0 , pk i pˇredstavuje vstupn´ı jasovou stupnici, q = hq0 , qk i pˇredstavuje v´ ystupn´ı 2 jasovou stupnici, N poˇcet obrazov´ ych element˚ u v obraze a H(i) hodnotu histogramu pro jas i. Na obr´azku 3.2 m˚ uˇzeme vidˇet pˇr´ıklad v´ ychoz´ıho sn´ımku s n´ızk´ ym kontrastem a sn´ımku s ekvalizovan´ ym histogramem. Ekvalizace histogramu zvyˇsuje kontrast obrazu, ale z´aroveˇ n doch´az´ı ke zkreslen´ı nˇekter´ ych ˇc´ast´ı obrazu (napˇr. hran). Proto ji ve v´ ysledn´em algoritmu nepouˇzijeme.
Obr´azek 3.2: V´ ychoz´ı obraz s n´ızk´ ym kontrastem (vlevo) a obraz s ekvalizovan´ ym histogramem (vpravo)
10
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.3: Histogram obrazu s n´ızk´ ym kontrastem (vlevo) a ekvalizovan´ y histogram (vpravo)
3.3
Segmentace obrazu
V tomto kroku se budeme snaˇzit naj´ıt vhodnou metodu pro segmentaci obrazu. C´ılem segmentace je oddˇelit ˇca´sti obrazu, kter´e odpov´ıdaj´ı pˇredmˇet˚ um v re´aln´em prostˇred´ı od pozad´ı. Na zvolen´e segmentaˇcn´ı technice z´avis´ı robustnost cel´eho rozpozn´av´an´ı, a proto j´ı budeme vˇenovat zv´ yˇsenou pozornost. V t´eto pr´aci se zamˇeˇr´ıme na metody vyuˇz´ıvaj´ıc´ı prahov´an´ı a metody zaloˇzen´e na detekci hran.
3.3.1
Prahov´ an´ı
Nejjednoduˇsˇs´ı metodou segmentace obrazu je prahov´an´ı. Princip t´eto metody spoˇc´ıv´a v porovn´av´an´ı jasov´e hodnoty kaˇzd´eho obrazov´eho elementu vzhledem k urˇcit´e stanoven´e mezi. Tuto mez oznaˇcujeme jako pr´ah. Obrazov´e elementy s hodnotou jasu menˇs´ı neˇz zvolen´ y pr´ah oznaˇc´ıme jako objekty a ostatn´ı obrazov´e elementy oznaˇc´ıme jako pozad´ı (pˇr´ıpadnˇe naopak). Prahov´an´ı je vlastnˇe transformac´ı jasov´e stupnice, kterou m˚ uˇzeme popsat n´asleduj´ıc´ım vztahem q(i, j) =
1, 0,
pro p(i, j) ≥ T pro p(i, j) < T
(3.3)
kde p oznaˇcuje vstupn´ı jasovou stupnici, q v´ ystupn´ı jasovou stupnici a T zvolen´ y pr´ah. V´ yhodou prahov´an´ı je velmi mal´a v´ ypoˇcetn´ı n´aroˇcnost. Na obr´azku 3.4 m˚ uˇzeme vidˇet
11
´ KAPITOLA 3. NAVRH ALGORITMU
pˇr´ıklad prahov´an´ı s n´ızk´ ym prahem, vysok´ ym prahem a se spr´avnˇe nastaven´ ym prahem. Pro spr´avnou funkci prahov´an´ı je podstatn´a spr´avn´a volba prahu.
Obr´azek 3.4: V´ ysledek prahov´an´ı s n´ızk´ ym prahem (vlevo), se spr´avnˇe nastaven´ ym prahem (uprostˇred) a s vysok´ ym prahem (vpravo)
Metody urˇ cov´ an´ı prahu Pokud zn´ame pˇredpokl´adan´e procentu´aln´ı zastoupen´ı objekt˚ u v obraze (napˇr. u ´loha segmentace tiˇstˇen´eho textu na pap´ıˇre), m˚ uˇzeme pouˇz´ıt prahovan´ı zaloˇzen´e na t´eto apriorn´ı znalosti. Tuto metodu pak oznaˇcujeme jako procentu´aln´ı prahov´an´ı. Oznaˇcme procentu´aln´ı zastoupen´ı objekt˚ u v obraze jako p. Hodnotu prahu potom zvol´ıme tak, aby p procent plochy v obraze mˇelo menˇs´ı hodnotu jasu neˇz pr´ah T (pˇr´ıpadnˇe naopak). Sloˇzitˇejˇs´ı metoda urˇcen´ı prahu je zaloˇzena na anal´ yze histogramu. Pokud histogram obrazu vykazuje dva oddˇelen´e vrcholy (tzv. bimod´aln´ı histogram), m˚ uˇzeme pr´ah urˇcit jako hodnotu jasu s nejmenˇs´ı ˇcetnost´ı mezi obˇema vrcholy (obr´azek 3.5). Tato metoda je vˇsak pouˇziteln´a pouze pro obraz, u kter´eho jsou objekty v´ yraznˇe jasovˇe odliˇseny od pozad´ı.
Obr´azek 3.5: Urˇcen´ı hodnoty prahu z histogramu
12
´ KAPITOLA 3. NAVRH ALGORITMU
Dosud jsme se zab´ yvali pouze prahov´an´ım, kter´e pouˇz´ıv´a jednotn´ y pr´ah pro vˇsechny obrazov´e elementy v obr´azku. Tento zp˚ usob prahov´an´ı ˇcasto oznaˇcujeme jako prahov´an´ı glob´aln´ı. Toto prahov´an´ı m˚ uˇzeme pouˇz´ıt jen pro obrazy, u kter´ ych je zaruˇceno konstantn´ı osvˇetlen´ı ve vˇsech ˇca´stech obrazu. Tato podm´ınka vˇsak ve vˇetˇsinˇe pˇr´ıpad˚ u splnˇena nen´ı. Tento nedostatek odstraˇ nuje tzv. adaptivn´ı prahov´an´ı.
3.3.2
Adaptivn´ı prahov´ an´ı
U adaptivn´ıho prahov´an´ı je hodnota prahu urˇcena pro kaˇzdou ˇc´ast obrazu zvl´aˇst’. Velikost prahu se tak dynamicky mˇen´ı bˇehem procesu segmentace obrazu. Nejˇcastˇeji urˇcujeme hodnotu prahu pro kaˇzd´ y jednotliv´ y obrazov´ y element z jeho definovan´eho okol´ı. Dalˇs´ı moˇznost´ı je rozdˇelit obraz do nˇekolika pˇrekr´ yvaj´ıc´ıch se ˇca´st´ı a pro tyto ˇc´asti urˇcit spr´avn´ y pr´ah. Adaptivn´ı prahov´an´ı vyuˇz´ıv´a n´asleduj´ıc´ı metoda.
Niblackova metoda Niblackova metoda je zaloˇzena na v´ ypoˇctu prahu ze stˇredn´ı hodnoty a smˇerodatn´e odchylky pro kaˇzd´ y obrazov´ y element z jeho lok´aln´ıho okol´ı. Hodnotu prahu urˇc´ıme z n´asleduj´ıc´ıho vztahu T (i, j) = m(i, j) + p s(i, j) (3.4) kde m(i, j) oznaˇcuje stˇredn´ı hodnotu lok´aln´ıho okol´ı, s(i, j) smˇerodatnou odchylku lok´aln´ıho okol´ı, p parametr prahov´an´ı a T (x, y) v´ ysledn´ y pr´ah. Velikost lok´aln´ıho okol´ı mus´ı b´ yt tak velk´a, aby zahrnula dostateˇcnou ˇc´ast objektu a pozad´ı a z´aroveˇ n tak mal´a, aby byla zaruˇcena konstantn´ı u ´roveˇ n osvˇetlen´ı v tomto v´ yˇrezu. Doporuˇcovan´a hodnota parametru p je −0.2. V´ ysledek prahov´an´ı Niblackovou metodou m˚ uˇzeme vidˇet na obr´azku 3.6.
3.3.3
Segmentace zaloˇ zen´ a na detekci hran
Dalˇs´ı skupinou metod urˇcen´e k segmentaci obrazu jsou metody zaloˇzen´e na detekci hran. Princip tˇechto metod vych´az´ı z detekce hranic mezi objektem a pozad´ım. Tyto hranice nalezneme pouˇzit´ım hranov´eho oper´atoru. V dalˇs´ım kroku spoj´ıme nalezen´e hrany, kter´e pˇr´ısluˇsej´ı stejn´emu objektu a odstran´ıme hrany, kter´e odpov´ıdaj´ı ˇsumu a nehomogenit´am v obraze.
13
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.6: V´ ysledek prahov´an´ı Niblackovou metodou pro lok´aln´ı okol´ı 11×11 (vlevo) a 21×21 (vpravo)
Cannyho hranov´ y detektor Jedn´ım z nejlepˇs´ıch a nejpouˇz´ıvanˇejˇs´ıch hranov´ ych detektor˚ u je Cannyho hranov´ y deˇ tektor. Casto b´ yv´a oznaˇcov´an jako optim´aln´ı hranov´ y detektor. Tento detektor se snaˇz´ı detekovat vˇsechny v´ yznamn´e hrany, minimalizovat poˇcet chybn´ ych hran, maximalizovat pˇresnost polohy hran a zabr´anit zdvojov´an´ı hran. Implementace Cannyho detektoru je pomˇernˇe sloˇzit´a, a proto uvedeme jen z´akladn´ı kroky algoritmu 1. odstranˇen´ı ˇsumu Gaussov´ ym filtrem 2. urˇcen´ı gradientu pomoc´ı vhodn´e masky 3. nalezen´ı lok´aln´ıch maxim hodnot gradient˚ u 4. odstranˇen´ı nev´ yznamn´ ych hran prahov´an´ım s hysterez´ı Pˇr´ıklad segmentace obrazu Cannyho hranov´ ym detektorem je na obr´azku 3.7. Nev´ yhodou t´eto segmentaˇcn´ı metody je velk´ y poˇcet vstupn´ıch parametr˚ u a nutnost jejich spr´avn´eho nastaven´ı. Jako v´ yslednou segmentaˇcn´ı metodu pro n´aˇs n´avrh zvol´ıme Niblackovu metodu prahov´an´ı, kter´a poskytuje nejlepˇs´ı v´ ysledky. Experiment´alnˇe jsme urˇcili optim´aln´ı velikost lok´aln´ıho okol´ı 21 × 21.
14
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.7: Cannyho hranov´ y detektor
3.3.4
Filtrace bin´ arn´ıho ˇ sumu
Protoˇze zvolen´a segmentaˇcn´ı metoda zatˇeˇzuje obr´azek bin´arn´ım ˇsumem, navrhneme jednoduch´ y filtr na odstranˇen´ı tohoto ˇsumu. Navrhnut´ y postup vych´az´ı z algoritmu kFill (v´ıce informac´ı v [10]). U t´eto filtrace pˇredpokl´ad´ame, ˇze nejmenˇs´ı velikost ˇs´ıˇrky a v´ yˇsky hledan´eho objektu je vˇetˇs´ı neˇz 3 pixely. D´ale budeme uvaˇzovat pouze pˇr´ıtomnost ˇcern´eho ˇsumu na b´ıl´em pozad´ı (nˇekdy b´ yv´a oznaˇcov´an jako ˇsum typu pepˇr“). ” Nejprve navrhneme filtraˇcn´ı masku 5 × 5, kter´a se bude skl´adat z j´adra a okol´ı (obr´azek 3.8). Touto maskou projedeme cel´ y obr´azek zleva doprava a shora dol˚ u. Oznaˇcme poˇcet nenulov´ ych pixel˚ u v okol´ı jako n a hodnotu pixelu ve stˇredu j´adra jako s. J´adro filtraˇcn´ı masky pak vynulujeme, pokud plat´ı podm´ınka (s = 1) AND (n < 5)
(3.5)
T´ımto filtrem u ´spˇeˇsnˇe odstran´ıme ˇsum do velikosti 3 × 3. Prvn´ı podm´ınka ve vztahu 3.5 zaruˇcuje, ˇze v´ ypoˇcet provedeme jen pro ˇc´asti obrazu s nenulov´ ym stˇredem filtraˇcn´ı masky, ˇc´ımˇz sn´ıˇz´ıme v´ ypoˇcetn´ı n´aroˇcnost algoritmu zhruba na polovinu. V´ ysledky navrhnut´eho postupu ukazuje obr´azek 3.9.
3.3.5
Identifikace objekt˚ u
Abychom mohli se vznikl´ ymi objekty efektivnˇe pracovat, mus´ıme je od sebe vhodn´ ym zp˚ usobem odliˇsit. Jednou z moˇznost´ı je kaˇzd´emu objektu pˇriˇradit identifikaˇcn´ı ˇc´ıslo. Tento zp˚ usob identifikace naz´ yv´ame barven´ım. Princip t´eto identifikace spoˇc´ıv´a v obarven´ı“ ” kaˇzd´eho objektu unik´atn´ı barvou. Barven´ım zde m´ame na mysli pˇriˇrazen´ı urˇcit´e hodnoty (barvy) vˇsem pixel˚ um odpov´ıdaj´ıc´ı jednomu objektu. Nejvyˇsˇs´ı identifikaˇcn´ı ˇc´ıslo pak ud´av´a 15
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.8: Filtraˇcn´ı maska (vlevo), pˇr´ıklad stavu splˇ nuj´ıc´ı (uprostˇred) a nesplˇ nuj´ıc´ı (vpravo) podm´ınku 3.5
Obr´azek 3.9: V´ ysledek filtrov´an´ı ˇsumu - vlevo origin´al, vpravo v´ ystupn´ı obraz celkov´ y poˇcet objekt˚ u v obraze. Algoritmus barven´ı je detailnˇe pops´an napˇr. v [1] a m˚ uˇzeme ho struˇcnˇe shrnout do n´asleduj´ıc´ıch krok˚ u 1. proch´az´ıme po ˇr´adc´ıch vˇsechny nenulov´e pixely 2. aktu´aln´ımu pixelu pˇriˇrad´ıme hodnotu (barvu) podle jedn´e z n´asleduj´ıc´ıch moˇznost´ı (a) pokud jsou vˇsechny sousedn´ı pixely odpov´ıdaj´ıc´ı masky (obr´azek 3.10) nulov´e, pˇriˇrad´ıme mu novou dosud nepouˇzitou hodnotu (b) pokud maj´ı vˇsechny sousedn´ı nenulov´e pixely stejnou hodnotu, pˇriˇrad´ıme mu tuto hodnotu (c) pokud m´a v´ıce sousedn´ıch pixel˚ u r˚ uznou nenulovou hodnotu, pˇriˇrad´ıme mu jednu z tˇechto hodnot a zap´ıˇseme vˇsechny r˚ uzn´e hodnoty do seznamu ekvivalentn´ıch hodnot (tento stav oznaˇcujeme jako kolize barev)
16
´ KAPITOLA 3. NAVRH ALGORITMU
3. projdeme vˇsechny nenulov´e pixely obrazu podruh´e a pˇrebarv´ıme oblasti s v´ıce ekvivalentn´ımi hodnotami novou hodnotou shodnou pro celou aktu´aln´ı oblast
Obr´azek 3.10: Maska pro barven´ı ve 4-sousednosti (vlevo) a 8-sousednosti (vpravo) Popsan´ y postup ilustruje obr´azek 3.11. Pro zajiˇstˇen´ı menˇs´ı v´ ypoˇcetn´ı n´aroˇcnosti a snazˇs´ı implementace pouˇzijeme pro n´aˇs n´avrh masku pro barven´ı ve 4-sousednosti. Vyhneme se t´ım nav´ıc sjednocen´ı objekt˚ u, kter´e jsou spojeny diagon´alnˇe pouze jedn´ım rohem a pravdˇepodobnˇe k sobˇe nepatˇr´ı. 0 0 0 0 0 0 0 0
0 1 0 1 0 1 1 0
0 0 0 1 0 0 1 0
0 1 0 1 1 0 0 0
0 1 1 1 1 1 1 0
0 1 1 1 1 1 1 0
0 0 0 0 0 1 0 0
0 1 1 0 1 1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 4 0 6 6 0
0 0 0 4 0 0 6 0
0 2 0 4 4 0 0 0
0 2 2 2 2 2 2 0
0 2 2 2 2 2 2 0
0 0 0 0 0 2 0 0
0 3 3 0 5 5 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 2 0 4 4 0
0 0 0 2 0 0 4 0
0 2 0 2 2 0 0 0
0 2 2 2 2 2 2 0
0 2 2 2 2 2 2 0
0 0 0 0 0 2 0 0
0 3 3 0 2 2 0 0
0 0 0 0 0 0 0 0
Obr´azek 3.11: Algoritmus barven´ı pro 4-sousedstv´ı - v´ ychoz´ı obraz (vlevo), obraz po prvn´ım pr˚ uchodu (uprostˇred), obraz po druh´em pr˚ uchodu (vpravo)
3.4
Lokalizace sedmisegmentov´ ych znak˚ u
Po u ´spˇeˇsn´e segmentaci obrazu a identifikaci vˇsech objekt˚ u m˚ uˇzeme pˇrikroˇcit k procesu nalezen´ı objekt˚ u, kter´e odpov´ıdaj´ı sedmisegmentov´ ym znak˚ um.
3.4.1
Odstranˇ en´ı nevhodn´ ych objekt˚ u
Segmentovan´ y obraz obsahuje velk´e mnoˇzstv´ı objekt˚ u a je nanejv´ yˇs vhodn´e v prvn´ı f´azi odstranit objekty, u nichˇz je pˇredem jasn´e, ˇze nemohou b´ yt ˇca´stmi hledan´ ych sedmisegmentov´ ych znak˚ u. Tato redukce bude m´ıt pozitivn´ı vliv na v´ ypoˇcetn´ı dobu pˇri n´asledn´em 17
´ KAPITOLA 3. NAVRH ALGORITMU
zpracov´an´ı. Navrhneme proto jednoduch´ y algoritmus pro odstranˇen´ı tˇechto objekt˚ u. U testovan´ ych objekt˚ u pro n´as bude rozhoduj´ıc´ı v´ yˇska objektu h, ˇs´ıˇrka objektu l a pomˇer mezi vlastn´ı v´ yˇskou a ˇs´ıˇrkou p. Nejprve je nutn´e zav´est doln´ı a horn´ı mez pro pˇredchoz´ı parametry. Tyto meze z´avisej´ı na pouˇzit´em vstupn´ım rozliˇsen´ı kamery, na vzd´alenosti sn´ım´an´ı mˇeˇric´ıho pˇr´ıstroje a na velikosti pˇredpokl´adan´ ych sedmisegmentov´ ych znak˚ u a je proto nutn´e je nastavit podle potˇreby. Nastaven´ı tˇechto hodnot pro n´aˇs n´avrh shrnuje tabulka 3.1. v´ yˇska h ˇs´ıˇrka l pomˇer p
doln´ı mez (xmin ) 5 5 0.2
horn´ı mez (xmax ) 140 80 9
Tabulka 3.1: Nastaven´ı parametr˚ u objekt˚ u Jelikoˇz m˚ uˇze b´ yt objektem jen ˇca´st sedmisegmentov´eho znaku (napˇr. samostatn´ y segment), je tˇreba podle toho pˇrizp˚ usobit doln´ı meze parametr˚ u. Po urˇcen´ı tˇechto hodnot jiˇz m˚ uˇzeme implementovat vlastn´ı metodu pro odstranˇen´ı nevhodn´ ych objekt˚ u, kter´a se skl´ad´a z n´asleduj´ıc´ıch krok˚ u 1. projdeme vˇsechny objekty v obraze 2. urˇc´ıme v´ yˇsku h, ˇs´ıˇrku l a pomˇer p aktu´aln´ıho objektu 3. objekt odstran´ıme z obrazu, jestliˇze plat´ı podm´ınka (h < hmin ) OR (h > hmax ) OR (l < lmin ) OR (l > lmax ) OR (p < pmin ) OR (p > pmax ) Obr´azek 3.12 porovn´av´a vstupn´ı a v´ ystupn´ı obraz t´eto metody.
3.4.2
Sjednocen´ı objekt˚ u
Sedmisegmentov´e znaky jsou tvoˇreny jednotliv´ ymi segmenty, kter´e jsou v z´avislosti na kvalitˇe segmentace nesourodˇe spojeny. Abychom mohli v obraze naleznout pozici sedmisegmentov´ ych znak˚ u, mus´ıme nejprve sjednotit oblasti odpov´ıdaj´ıc´ı segment˚ um jednoho znaku. Pro tento u ´ˇcel jsme navrhli vlastn´ı metodu sjednocen´ı objekt˚ u. Vyuˇz´ıv´ame pˇri tom apriorn´ı znalosti, ˇze vˇsechny segmenty hledan´eho znaku maj´ı shodnou ˇs´ıˇrku.
18
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.12: Odstranˇen´ı nevhodn´ ych objekt˚ u - vlevo origin´al, vpravo v´ ystupn´ı obraz V t´eto metodˇe postupnˇe projdeme vˇsechny objekty v obraze. Pˇredpokl´ad´ame, ˇze kaˇzd´ y objekt m˚ uˇze b´ yt ˇc´ast´ı hledan´eho znaku. Pro aktu´aln´ı objekt proch´az´ıme hranici jeho oblasti po smˇeru hodinov´ ych ruˇciˇcek a ve vzd´alenosti l hled´ame pˇr´ıtomnost sousedn´ıch objekt˚ u (obr´azek 3.13). Pokud nalezneme ciz´ı sousedn´ı objekt, porovn´ame ˇs´ıˇrku segmentu aktu´aln´ıho objektu a ˇs´ıˇrku segmentu nalezen´eho objektu. Jestliˇze jsou tyto hodnoty pˇribliˇznˇe shodn´e, sjednot´ıme oba objekty. Sjednocen´ı je realizov´ano pˇrebarven´ım nalezen´eho objektu stejnou barvou (identifikaˇcn´ım ˇc´ıslem) jako p˚ uvodn´ı objekt. Vzd´alenost prohled´av´an´ı l mus´ı b´ yt tak velk´a, aby zahrnula vˇsechny sousedn´ı segmenty, a z´aroveˇ n tak mal´a, aby nezasahovala do segment˚ u jin´ ych znak˚ u. V naˇsem pˇr´ıpadˇe je tato hodnota zvolena jako hodnota ˇs´ıˇrky segmentu aktu´aln´ıho objektu. V´ ysledek sjednocen´ı objekt˚ u m˚ uˇzeme vizu´alnˇe posoudit na obr´azku 3.14.
Obr´azek 3.13: Proch´azen´ı hranice objekt˚ u (ˇcervenˇe)
19
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.14: Sjednocen´ı objekt˚ u - vlevo origin´al, vpravo v´ ystupn´ı obraz
3.4.3
Nalezen´ı znak˚ u
V tomto kroku urˇc´ıme pozice vˇsech sedmisegmentov´ ych znak˚ u. Protoˇze bude naˇse lokalizace zaloˇzen´a na testov´an´ı shody objekt˚ u, je nutn´e, aby se ˇc´ıseln´ yu ´daj na mˇeˇric´ım pˇr´ıstroji skl´adal minim´alnˇe ze dvou znak˚ u (tento pˇredpoklad je pro vˇetˇsinu mˇeˇric´ıch pˇr´ıstroj˚ u splnˇen). Maxim´aln´ı poˇcet znak˚ u nen´ı nijak omezen. Pˇri hledan´ı tˇechto znak˚ u budeme vych´azet z toho, ˇze vˇsechny hledan´e znaky maj´ı pˇribliˇznˇe stejnou v´ yˇsku a pˇribliˇznˇe shodnou ˇs´ıˇrku jednotliv´ ych segment˚ u. D´ale budeme pˇredpokl´adat, ˇze zachycen´ y obraz nen´ı v˚ uˇci mˇeˇric´ımu pˇr´ıstroji nijak v´ yraznˇe otoˇcen a hledan´e znaky se tak nach´azej´ı vedle sebe, tj. maj´ı shodnou vertik´aln´ı pozici v obraze. V navrhnut´em postupu testujeme shodu vˇsech moˇzn´ ych dvojic objekt˚ u. Shodu testujeme vzhledem ke tˇrem parametr˚ um – v´ yˇsce objektu, ˇs´ıˇrce jednotliv´ ych segment˚ u a vertik´aln´ı pozici v obraze. Pˇri testov´an´ı tˇechto parametr˚ u je tˇreba nastavit urˇcitou rezervu. Jestliˇze dvojici objekt˚ u vyhodnot´ıme jako shodnou, pˇrid´ame ji na seznam ekvivalentn´ıch objekt˚ u. V dalˇs´ı f´azi sjednot´ıme dvojice ekvivalentn´ıch objekt˚ u ze seznamu do odpov´ıdaj´ıc´ıch mnoˇzin. Protoˇze se v zachycen´em obraze m˚ uˇze nach´azet v´ıce ˇc´ıseln´ ych u ´daj˚ u, bude pravdˇepodobnˇe vznikl´ ych mnoˇzin v´ıce neˇz jedna. V posledn´ı f´azi proto z tˇechto mnoˇzin vybereme mnoˇzinu s nejvˇetˇs´ı v´ yˇskou jednotliv´ ych objekt˚ u. Pˇredpokl´ad´ame pˇri tom, ˇze ˇz´adn´ y ˇc´ıseln´ yu ´daj na mˇeˇric´ım pˇr´ıstroji nen´ı vˇetˇs´ı neˇz mˇeˇren´ y ˇc´ıseln´ yu ´daj. Objekty v t´eto mnoˇzinˇe pak seˇrad´ıme podle horizont´aln´ı pozice v obraze. V´ ysledkem je tak posloupnost objekt˚ u odpov´ıdaj´ıc´ı hledan´ ym znak˚ u. Nalezen´ı a oznaˇcen´ı v´ ysledn´ ych znak˚ u ilustruje obr´azek 3.15.
20
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.15: Nalezen´ı pozice znak˚ u (ˇcervenˇe)
3.4.4
Detekce desetinn´ e teˇ cky
Pot´e co urˇc´ıme pozici sedmisegmentov´ ych znak˚ u, pˇristoup´ıme k detekci desetinn´e teˇcky. Je tˇreba poznamenat, ˇze desetinn´a teˇcka nem´a ˇza´dn´e charakteristick´e rysy a vlastn´ı tvar m˚ uˇze b´ yt pro r˚ uzn´e mˇeˇric´ı pˇr´ıstroje odliˇsn´ y. Urˇcen´ı pozice desetinn´e teˇcky je tak velice problematick´e. Objekt odpov´ıdaj´ıc´ı desetinnou teˇcce budeme hledat ve v´ yˇrezech mezi jednotliv´ ymi nalezen´ ymi sedmisegmentov´ ymi znaky (obr´azek 3.16). Za desetinnou teˇcku vyhodnot´ıme takov´ y objekt, kter´ y splˇ nuje n´asleduj´ıc´ı podm´ınku (p > 0.7) AND (p < 1.8) AND (l > 0.7s) AND (l < 1.5s) AND (A > 0.65s2 ) kde p je pomˇer mezi v´ yˇskou a ˇs´ıˇrkou objektu, l ˇs´ıˇrka objektu, s tlouˇst’ka segmentu pˇredchoz´ıho znaku a A plocha objektu (tj. poˇcet nenulov´ ych pixel˚ u objektu). Informaci o pozici desetinn´e teˇcky vyuˇzijeme pˇri sestaven´ı v´ ysledn´e klasifikovan´e hodnoty.
Obr´azek 3.16: Pˇredpokl´adan´e oblasti desetinn´e teˇcky (zelenˇe)
21
´ KAPITOLA 3. NAVRH ALGORITMU
3.5
Klasifikace objekt˚ u
V tomto kroku se snaˇz´ıme identifikovat nalezen´e objekty, tj. zaˇradit kaˇzd´ y objekt do jedn´e z moˇzn´ ych klasifikaˇcn´ıch tˇr´ıd. Vˇetˇsina klasifikaˇcn´ıch metod je zaloˇzen´a na vytvoˇren´ı souboru mˇeˇren´ ych veliˇcin (tzv. pˇr´ıznak˚ u), kter´e dostateˇcnˇe popisuj´ı dan´ y objekt a podle nichˇz objekt zaˇrad´ıme do konkr´etn´ı tˇr´ıdy. Posloupnost tˇechto pˇr´ıznak˚ u tvoˇr´ı tzv. vektor pˇr´ıznak˚ u. V naˇsem pˇr´ıpadˇe je nejv´ yhodnˇejˇs´ı jako vektor pˇr´ıznak˚ u zvolit zastoupen´ı jednotliv´ ych segment˚ u ve znaku. Jestliˇze spr´avnˇe detekujeme tyto segmenty, dok´aˇzeme jednoznaˇcnˇe urˇcit, o jak´ y znak se jedn´a. Kaˇzd´ y sedmisegmentov´ y znak na mˇeˇric´ım pˇr´ıstroji, m˚ uˇze reprezentovat deset moˇzn´ ych hodnot 0, 1, 2, . . . , 9. Definujeme proto mnoˇzinu klasifikaˇcn´ıch tˇr´ıd C = {0, 1, 2, . . . , 9} (obr´azek 3.17). Protoˇze se sedmisegmentov´ y znak skl´ad´a ze sedmi segment˚ u, vektor pˇr´ıznak˚ u bude m´ıt sedm prvk˚ u v = (v0 , v1 , v2 , . . . , v6 ), kde prvek vi pˇredstavuje zastoupen´ı segmentu si ve znaku. D´ale definujeme, ˇze vi = 1, pokud je segment si v objektu pˇr´ıtomen, jinak vi = 0. Jednotliv´e segmenty detekujeme anal´ yzou v´ yˇrezu objektu ve stˇredu pˇredpokl´adan´e pozice segmentu (obr´azek 3.18). Speci´aln´ım pˇr´ıpadem je znak 1, kter´ y se od ostatn´ıch znak˚ u liˇs´ı svou ˇs´ıˇrkou a pˇredpokl´adan´e pozice segment˚ u by tak byly vyhodnoceny ˇspatnˇe. Tento znak vˇsak snadno rozpozn´ame podle specifick´eho pomˇeru mezi v´ yˇskou a ˇs´ıˇrkou objektu.
Obr´azek 3.17: Klasifikaˇcn´ı tˇr´ıdy
Obr´azek 3.18: Detekce segment˚ u ve znaku 22
´ KAPITOLA 3. NAVRH ALGORITMU
Navrhnut´ y klasifik´ator potom m˚ uˇzeme zapsat n´asleduj´ıc´ım pseudok´odem if v = (1, 1, 1, 1, 1, 1, 0) then znak ← 0 elseif v = (0, 1, 1, 0, 0, 0, 0) then znak ← 1 elseif v = (1, 1, 0, 1, 1, 0, 1) then znak ← 2 elseif v = (1, 1, 1, 1, 0, 0, 1) then znak ← 3 elseif v = (0, 1, 1, 0, 0, 1, 1) then znak ← 4 elseif v = (1, 0, 1, 1, 0, 1, 1) then znak ← 5 elseif v = (1, 0, 1, 1, 1, 1, 1) then znak ← 6 elseif v = (1, 1, 1, 0, 0, 0, 0) then znak ← 7 elseif v = (1, 1, 1, 1, 1, 1, 1) then znak ← 8 elseif v = (1, 1, 1, 1, 0, 1, 1) then znak ← 9
V´ yslednou rozpoznanou hodnotu ˇc´ıseln´eho u ´daje mˇeˇric´ıho pˇr´ıstroje z´ısk´ame sestaven´ım z jednotliv´ ych klasifikovan´ ych znak˚ u a zpracov´an´ım informace o pozici desetinn´e teˇcky.
3.6
V´ ysledky n´ avrhu v Matlabu
Pro testov´an´ı navrhnut´eho algoritmu jsme pouˇzili dva r˚ uzn´e mˇeˇric´ı pˇr´ıstroje – multimetr Voltcraft VC220 a multimetr Solid RE830D. Oba pˇr´ıstroje se m´ırnˇe liˇs´ı charakterem a velikost´ı zobrazovan´ ych sedmisegmentov´ ych znak˚ u. Pro urˇcen´ı u ´spˇeˇsnosti rozpozn´an´ı ˇc´ıseln´ ych u ´daj˚ u na mˇeˇric´ıch pˇr´ıstroj´ıch bylo pouˇzito 100 testovac´ıch sn´ımk˚ u pro kaˇzd´ y mˇeˇric´ı pˇr´ıstroj. U pˇr´ıstroje Voltcraft VC220 program spr´avnˇe urˇcil pozici znak˚ u, klasifikoval vˇsechny znaky a detekoval desetinnou teˇcku pro 92 sn´ımk˚ u. Pro mˇeˇric´ı pˇr´ıstroj Solid RE830D bylo stejn´ ym zp˚ usobem spr´avnˇe rozpozn´ano 89 sn´ımk˚ u. Dosaˇzenou u ´spˇeˇsnost v rozpozn´av´an´ı shrnuje tabulka 3.2. Mˇeˇric´ı pˇr´ıstroj Voltcraft VC220 Solid RE830D
Poˇcet testovan´ ych Poˇcet ˇc´ıslic hodnot na displeji 100 3.5 100 3.5
Tabulka 3.2: V´ ysledky rozpozn´av´an´ı
23
Pˇresnost rozpozn´av´an´ı 92% 89%
´ KAPITOLA 3. NAVRH ALGORITMU
Pˇr´ıklady spr´avnˇe a nespr´avnˇe rozpoznan´ ych mˇeˇren´ ych hodnot ilustruj´ı obr´azky 3.19 aˇz 3.23. Doba v´ ypoˇctu algoritmu v Matlabu z´avis´ı na konkr´etn´ım vstupn´ım obr´azku a pohybuje se pr˚ umˇernˇe kolem 25 sekund. Je vˇsak nutn´e poznamenat, ˇze v t´eto f´azi jsme se nezab´ yvali ˇza´dnou ˇcasovou optimalizac´ı, ale pouze jsme se snaˇzili ovˇeˇrit funkˇcnost navrhnut´eho algoritmu. Program nav´ıc obsahuje ˇradu grafick´ ych metod pro ilustraci procesu rozpozn´av´an´ı a snadnˇejˇs´ı ladˇen´ı, kter´e ve v´ ysledn´em zaˇr´ızen´ı nebudou.
Obr´azek 3.19: Pˇr´ıklad spr´avnˇe rozpoznan´eho sn´ımku - rozpoznan´a hodnota 155.7
Obr´azek 3.20: Pˇr´ıklad spr´avnˇe rozpoznan´eho sn´ımku - rozpoznan´a hodnota 608.0
24
´ KAPITOLA 3. NAVRH ALGORITMU
Obr´azek 3.21: Pˇr´ıklad ˇspatnˇe rozpoznan´eho sn´ımku - nenalezen druh´ y znak vlivem odrazu pˇredmˇetu v displeji, rozpoznan´a hodnota 11.4
Obr´azek 3.22: Pˇr´ıklad ˇspatnˇe rozpoznan´eho sn´ımku - nespr´avnˇe detekovan´a desetinn´a teˇcka, rozpoznan´a hodnota 1.401
Obr´azek 3.23: Pˇr´ıklad ˇspatnˇe rozpoznan´eho sn´ımku - chybn´a klasifikace tˇret´ıho znaku vlivem n´ızk´eho kontrastu, rozpoznan´a hodnota 17X.0 25
Kapitola 4 Implementace V t´eto kapitole pˇredstav´ıme zvolen´e zaˇr´ızen´ı pro otestov´an´ı naˇseho rozpozn´av´an´ı v re´aln´em ˇcase a pop´ıˇseme konkr´etn´ı implementaci algoritmu. Na z´avˇer se budeme zab´ yvat ˇcasovou optimalizac´ı programu.
4.1
Sezn´ amen´ı s procesorem
Jako zaˇr´ızen´ı, na kter´em ovˇeˇr´ıme funkˇcnost naˇseho n´avrhu v re´aln´em ˇcase, jsme zvolili v´ yvojov´ y modul TMS320DM6437 EVM s digit´aln´ım sign´alov´ ym procesorem s technologi´ı DaVinci od firmy Texas Instruments (obr´azek 4.1). Procesory s technologi´ı DaVinci poskytuj´ı velk´ y v´ ypoˇcetn´ı v´ ykon a jsou tak urˇcen´e pro video aplikace v oblastech poˇc´ıtaˇcov´eho vidˇen´ı, robotiky, bezpeˇcnostn´ı techniky a dopravy.
Obr´azek 4.1: V´ yvojov´ y modul TMS320DM6437 EVM 26
KAPITOLA 4. IMPLEMENTACE
Tento v´ yvojov´ y modul disponuje procesorem DM6437 pracuj´ıc´ım na frekvenci 600MHz, video dekod´erem TVP5146M2, ˇctyˇrmi video DAC v´ ystupy, dynamickou RAM pamˇet´ı DDR2 s kapacitou 128MB, statickou RAM pamˇet´ı s kapacitou 2MB, 16MB NOR Flash pamˇet´ı, 64MB NAND Flash pamˇet´ı a rozhran´ımi USB, JTAG, UART, CAN I/O a Ethernet. Blokov´e sch´ema pouˇzit´eho modulu je zobrazeno na obr´azku 4.2.
Obr´azek 4.2: Blokov´e sch´ema v´ yvojov´eho modulu TMS320DM6437 EVM (pˇrevzato z [11]) V´ yhodou tohoto modulu je zahrnut´ı video dekod´eru a kod´eru, nemus´ıme se proto zab´ yvat dek´odov´an´ım a k´odov´an´ım video sign´alu. Pro sn´ım´an´ı obrazu je pouˇzita barevn´a CMOS kamera s rozliˇsen´ım 720 × 480 a standardem k´odov´an´ı NTSC.
4.2
Pˇ repis k´ odu
Pro v´ yvoj a ladˇen´ı programu je urˇceno prostˇred´ı Code Composer Studio, kter´e je souˇc´ast´ı v´ yvojov´eho modulu. Zdrojov´ y k´od m˚ uˇzeme vytvoˇrit v jednom ze ˇctyˇr podporovan´ ych programovac´ıch jazyk˚ u – strojov´ y k´od, assembler, line´arn´ı assembler a C/C++. Vzhledem k rozsahu naˇseho algoritmu jsme se rozhodli pro vyˇsˇs´ı programovac´ı jazyk C. Pro n´aˇs program jsme pouˇzili zdrojov´ y k´od Video Preview“, kter´ y je volnˇe posky” tov´an spoleˇcnost´ı Texas Instrument. V tomto k´odu je implementov´ano v nekoneˇcn´e smyˇcce dek´odov´an´ı vstupn´ıho video sign´alu a k´odov´an´ı v´ ystupn´ıho video sign´alu. Vlastn´ı algoritmus rozpozn´av´an´ı um´ıst´ıme do t´eto smyˇcky mezi krokem dek´odov´an´ı a k´odov´an´ı. T´ım zajist´ıme opakuj´ıc´ı se zpracov´an´ı a rozpozn´av´an´ı vstupn´ıho obrazu. 27
KAPITOLA 4. IMPLEMENTACE
Protoˇze vstupn´ı rozliˇsen´ı obrazu je zbyteˇcnˇe velk´e a zvyˇsuje v´ ypoˇcetn´ı n´aroˇcnost programu, provedeme u ´pravu velikosti rozliˇsen´ı. Sn´ıˇzen´ı rozliˇsen´ı realizujeme pr˚ umˇerov´an´ım ˇctyˇr sousedn´ıch pixel˚ u. T´ımto ˇreˇsen´ım nav´ıc eliminujeme n´ahodn´ y ˇsum. Ze vstupn´ıho obrazu s rozliˇsen´ım 720 × 480 tak z´ısk´ame obraz s rozliˇsen´ım 360 × 240. Toto rozliˇsen´ı je jiˇz zhruba shodn´e s rozliˇsen´ım pouˇz´ıvan´em v n´avrhu algoritmu v Matlabu. Dalˇs´ı u ´pravu provedeme pro metodu zab´ yvaj´ıc´ı se sjednocen´ım objekt˚ u. Po implementaci prahov´an´ı a anal´ yze segmentovan´eho obrazu jsme zjistili, ˇze na rozd´ıl od pˇredchoz´ıho n´avrhu jsou segmenty znak˚ u leˇz´ıc´ı kolmo k sobˇe vˇzdy spojeny (tz. jsou souˇc´ast´ı stejn´e oblasti). Tento fakt je zp˚ usoben jin´ ymi optick´ ymi vlastnostmi nov´e pouˇzit´e kamery. Rozpojen´ı nast´av´a pouze u segment˚ u, kter´e leˇz´ı proti sobˇe. Tento pˇr´ıpad se vyskytuje pouze u znak˚ u 1, 7 a 0. Pˇri hled´an´ı moˇzn´ ych kandid´at˚ u pro sjednocen´ı objekt˚ u proto nemus´ıme proch´azet celou hranici objektu, ale jen jeho horn´ı hranici. D´ıky t´eto u ´pravˇe zv´ yˇs´ıme robustnost metody, nebot’ sn´ıˇz´ıme poˇcet moˇzn´ ych kandid´at˚ u na sjednocen´ı. Jelikoˇz bude naˇse zaˇr´ızen´ı pracovat v re´aln´em ˇcase, budeme se snaˇzit minimalizovat v´ ypoˇcetn´ı dobu jednoho cyklu rozpozn´av´an´ı. Z toho d˚ uvodu jsme pro pˇr´ıstup do pole vyuˇzili pointrov´e aritmetiky nam´ısto indexace. Jestliˇze pˇristupujeme k prvk˚ um pole pomoc´ı pointrov´e aritmetiky, pro z´ısk´an´ı dalˇs´ıho prvku staˇc´ı k aktu´aln´ı adrese pˇriˇc´ıst konstantu odpov´ıdaj´ıc´ı velikosti prvku pole. Naopak pro pˇr´ıstup k prvk˚ um pole pomoc´ı index˚ u, mus´ıme nejprve vyn´asobit index touto konstantou a ten pak pˇriˇc´ıst k b´azov´e adrese. Prvn´ı zp˚ usob pˇr´ıstupu do pole je tedy mnohem rychlejˇs´ı. Na druhou stranu je vˇsak z´apis k´odu vyuˇz´ıvaj´ıc´ı tento zp˚ usob m´enˇe pˇrehledn´ y, coˇz n´am ale nebude vadit. V naˇsem programu budeme ˇcasto pouˇz´ıvat dynamick´e seznamy. Nab´ızelo by se proto vyuˇz´ıt dynamick´e pole, kter´e je moˇzno bˇehem chodu dynamicky zvˇetˇsovat nebo zmenˇsovat. Alokace a uvolnˇen´ı tohoto pole je vˇsak ˇcasovˇe velmi n´aroˇcn´a. Proto pro vˇetˇsinu seznam˚ u pouˇzijeme pole statick´e, u nˇehoˇz nastav´ıme jeho rozmˇery s dostateˇcnou rezervou. Cel´ y algoritmus rozpozn´av´an´ı navrhnut´ y v kapitole 3 je rozdˇelen do n´asleduj´ıc´ıch metod create input image – Metoda pro vytvoˇren´ı vstupn´ıho obrazu. Zahrnuje sn´ıˇzen´ı vstupn´ıho rozliˇsen´ı obrazu a uloˇzen´ı hodnot jasu do statick´eho pole. thresholding — Obsahuje prahov´an´ı vstupn´ıho obrazu Niblackovou metodou a filtraci bin´arn´ıho ˇsumu vznikl´eho prahov´an´ım. coloring — Metoda pro identifikaci objekt˚ u algoritmem barven´ı. remove inappropriate objects — Odstran´ı objekty, u nichˇz je jist´e, ˇze nemohou b´ yt ˇca´stmi hledan´ ych znak˚ u. 28
KAPITOLA 4. IMPLEMENTACE
join objects — Metoda pro spojen´ı objekt˚ u odpov´ıdaj´ıc´ı jednotliv´ ym segment˚ um do cel´eho znaku. find digits — Obsahuje urˇcen´ı pozice sedmisegmenotv´ ych znak˚ u a detekci desetinn´e teˇcky. Nalezen´e znaky jsou vizu´alnˇe oznaˇceny v obraze. yslednou rozpoznanou hodnotu. classify digits — Klasifikuje nalezen´e objekty a sestav´ı v´ Tuto hodnotu zobraz´ı ve v´ ystupn´ım obraze. convert image to output — Metoda pro vytvoˇren´ı obrazu, kter´ y bude zobrazen na v´ ystupn´ı obrazovce.
4.3
ˇ Casov´ a optimalizace
Po vytvoˇren´ı naˇseho programu se m˚ uˇzeme pokusit o jeho optimalizaci. Optimalizaci nejˇcastˇeji prov´ad´ıme s c´ıli sn´ıˇzit v´ ypoˇcetn´ı dobu programu nebo sn´ıˇzit velikost pamˇeti, potˇrebnou k vykon´an´ı programu. Protoˇze m´a naˇse zaˇr´ızen´ı pracovat v re´aln´em ˇcase, bude naˇs´ım c´ılem sn´ıˇzit v´ ypoˇcetn´ı dobu, tz. pokus´ıme se o optimalizaci ˇcasovou. Abychom mohli posoudit v´ ysledek ˇcasov´e optimalizace, mus´ıme nejdˇr´ıve zmˇeˇrit dosavadn´ı ˇcas potˇrebn´ y k vykon´an´ı programu. Prostˇred´ı Code Composer Studio neumoˇzn ˇuje pˇr´ımo zmˇeˇrit ˇcasov´ yu ´sek, poskytuje vˇsak informaci o poˇctu vykonan´ ych hodinov´ ych cykl˚ u. Pˇribliˇznou dobu v´ ypoˇctu pak m˚ uˇzeme vypoˇc´ıtat z n´asleduj´ıc´ıho vztahu doba vypoctu =
pocet cyklu frekvence procesoru
(4.1)
T´ımto zp˚ usobem zmˇeˇr´ıme v´ ypoˇcetn´ı dobu pro vˇsechny pouˇzit´e metody. Tyto hodnoty shrnuje tabulka 4.1. Poznamenejme, ˇze uveden´e hodnoty jsou pouze orientaˇcn´ı a pˇresn´e hodnoty jsou z´avisl´e na konkr´etn´ım vstupn´ım sn´ımku z kamery. Nyn´ı m˚ uˇzeme pˇristoupit k samotn´e optimalizaci. Code Composer Studio nab´ız´ı nˇekolik moˇznost´ı optimalizace. My se rozhodneme pro automatickou optimalizaci v sekci build ” options“. M´ame zde na v´ ybˇer typ optimalizace (ˇcasov´a vs. pamˇet’ov´a) a u ´roveˇ n optimalizace. Zvol´ıme optimalizaci ˇcasovou s nejvyˇsˇs´ı u ´rovn´ı a provedeme kompilaci programu. N´aslednˇe zmˇeˇr´ıme v´ ypoˇcetn´ı dobu programu stejn´ ym zp˚ usobem jako v pˇredchoz´ım pˇr´ıpadˇe bez optimalizace. V´ ysledek ˇcasov´e optimalizace m˚ uˇzeme posoudit z tabulky 4.2. V´ ypoˇcetn´ı dobu jednotliv´ ych metod pˇred optimalizac´ı a po optimalizaci porovn´av´a tabulka 4.3. V´ıce informac´ı o optimalizaci v prostˇred´ı Code Composer Studio nalezneme v [12]. 29
KAPITOLA 4. IMPLEMENTACE
Metoda
Poˇcet hodinov´ ych V´ ypoˇcetn´ı doba pro 3 cykl˚ u (×10 ) CPU 600MHz (ms) create_input_image 17 140 28.57 thresholding 175 988 293.31 coloring 90 800 151.33 remove_inappropriate_objects 15 086 25.14 join_objects 51 0.09 find_digits 598 1.00 classify_digits 200 0.33 convert_image_to_output 14 185 23.64 Celkem 314 048 523.47 Tabulka 4.1: V´ ypoˇcetn´ı doba algoritmu pˇred optimalizac´ı Metoda
Poˇcet hodinov´ ych V´ ypoˇcetn´ı doba pro 3 cykl˚ u (×10 ) CPU 600MHz (ms) create_input_image 3 761 6.27 thresholding 17 760 29.60 coloring 62 538 104.23 remove_inappropriate_objects 8 844 14.74 join_objects 62 0.10 find_digits 539 0.90 classify_digits 650 1.08 convert_image_to_output 6 282 10.47 Celkem 94 352 157.25 Tabulka 4.2: V´ ypoˇcetn´ı doba algoritmu po optimalizaci Metoda
V´ ypoˇcetn´ı doba pˇred optimalizac´ı (ms) create_input_image 28.57 thresholding 293.31 coloring 151.33 remove_inappropriate_objects 25.14 join_objects 0.09 find_digits 1.00 classify_digits 0.33 convert_image_to_output 23.64 Celkem 523.47
V´ ypoˇcetn´ı doba po optimalizaci (ms) 6.27 29.60 104.23 14.74 0.10 0.90 1.08 10.47 157.25
Tabulka 4.3: Srovn´an´ı v´ ypoˇcetn´ı doby algoritmu pˇred a po optimalizaci 30
KAPITOLA 4. IMPLEMENTACE
Z v´ ysledk˚ u je patrn´e, ˇze celkov´a v´ ypoˇcetn´ı doba programu se sn´ıˇzila v´ıce neˇz tˇrikr´at. K nejvˇetˇs´ı optimalizaci doˇslo v metodˇe thresholding, ve kter´e je implementov´ano prahov´an´ı obrazu. V´ ysledn´a pr˚ umˇern´a doba v´ ypoˇctu jednoho cyklu rozpozn´av´an´ı je tedy asi 0.16 s.
31
Kapitola 5 Experiment´ aln´ı v´ ysledky Navrhnut´e zaˇr´ızen´ı pro rozpozn´av´an´ı sedmisegmentov´ ych znak˚ u jsme testovali v re´aln´em prostˇred´ı na dvou mˇeˇric´ıch pˇr´ıstroj´ıch – multimetru Voltcraft VC220 a multimetru Solid RE830D. Spr´avnost rozpozn´av´an´ı jsme vizu´alnˇe posoudili na v´ ystupn´ı obrazovce, kter´a uˇzivatele informuje o nalezen´ ych znac´ıch a rozpoznan´e hodnotˇe. Pˇri sn´ım´an´ı mˇeˇric´ıho pˇr´ıstroje jsme kameru vˇzdy nastavili tak, aby nedoch´azelo k pˇr´ım´emu odrazu svˇetla od displeje mˇeˇric´ıho pˇr´ıstroje. Testov´an´ı rozpozn´an´ı kaˇzd´eho pˇr´ıstroje jsme provedli pro 100 mˇeˇren´ ych hodnot. Pro kaˇzdou mˇeˇrenou hodnotu jsme zmˇenili um´ıstˇen´ı mˇeˇric´ıho pˇr´ıstroje vzhledem ke kameˇre. Spr´avnost rozpozn´an´ı jsme hodnotili vzhledem ke ˇctyˇrem bod˚ um 1. Nalezen´ı pozice znak˚ u – Nalezen´ı prohl´as´ıme za ne´ uspˇeˇsn´e, pokud jeden nebo v´ıce znak˚ u nebudou nalezeny nebo pokud bude jako znak vyhodnocen jeden a v´ıce objekt˚ u, kter´e znaky nejsou. 2. Klasifikace znak˚ u – Jestliˇze jeden nebo v´ıce znak˚ u budou klasifikov´any chybnˇe, prohl´as´ıme tento bod za nesplnˇen´ y. 3. Detekce desetinn´e teˇcky – Tento bod bude splnˇen, pokud bude spr´avnˇe nalezena a vyhodnocena desetinn´a teˇcka. 4. Celkov´e rozpozn´an´ı - Celkov´e rozpozn´an´ı prohl´as´ıme za u ´spˇeˇsn´e, jestliˇze budou splnˇeny vˇsechny tˇri pˇredchoz´ı body. V pˇr´ıpadˇe testov´an´ı rozpozn´an´ı mˇeˇric´ıho pˇr´ıstroje Voltcraft VC220 zaˇr´ızen´ı spr´avnˇe nalezlo pozici vˇsech sedmisegmentov´ ych znak˚ u pro 95 mˇeˇren´ ych hodnot. Z tˇechto pˇr´ıpad˚ u
32
´ ´I VYSLEDKY ´ KAPITOLA 5. EXPERIMENTALN
byly znaky spr´avnˇe klasifikov´any pro 94 hodnot a desetinn´a teˇcka byla spr´avnˇe detekov´ana pro 91 hodnot. Celkov´e rozpozn´an´ı bylo u ´spˇeˇsn´e pro 90 mˇeˇren´ ych hodnot. N´aslednˇe jsme testovali rozpozn´an´ı na mˇeˇric´ım pˇr´ıstroji Solid RE830D. Pozice vˇsech znak˚ u byla spr´avnˇe urˇcena pro 92 hodnot. Z tˇechto pˇr´ıpad˚ u zaˇr´ızen´ı spr´avnˇe klasifikovalo vˇsechny znaky pro 91 hodnot a spr´avnˇe detekovalo desetinnou teˇcku pro 86 hodnot. Pro tento pˇr´ıstroj bylo celkov´e rozpozn´an´ı u ´spˇeˇsn´e v 85 pˇr´ıpadech. Dosaˇzen´e experiment´aln´ı v´ ysledky v rozpozn´av´an´ı shrnuj´ı tabulky 5.1, 5.2 a 5.3. Poznamenejme, ˇze tyto v´ ysledky jsou pouze orientaˇcn´ı, protoˇze u ´spˇeˇsnost rozpozn´av´an´ı z´avis´ı na konkr´etn´ıch podm´ınk´ach re´aln´eho prostˇred´ı. Voltcraft VC220
Nalezen´ı pozice Klasifikace znak˚ u znak˚ u
Poˇcet testovan´ ych hodnot Poˇcet spr´avnˇe urˇcen´ ych hodnot ´ Uspˇeˇsnost
Detekce desetinn´e Celkov´e teˇcky rozpozn´an´ı
100
95
95
100
95
94
91
90
95%
99%
96%
90%
Tabulka 5.1: V´ ysledky rozpozn´av´an´ı pro mˇeˇric´ı pˇr´ıstroj Voltcraft VC220
Solid RE830D
Nalezen´ı pozice Klasifikace Detekce desetinn´e Celkov´e znak˚ u znak˚ u teˇcky rozpozn´av´an´ı
Poˇcet testovan´ ych hodnot Poˇcet spr´avnˇe urˇcen´ ych hodnot ´ Uspˇeˇsnost
100
92
92
100
92
91
86
85
92%
99%
93%
85%
Tabulka 5.2: V´ ysledky rozpozn´av´an´ı pro mˇeˇric´ı pˇr´ıstroj Solid RE830D Mˇeˇric´ı pˇr´ıstroj Voltcraft VC220 Solid RE830D
Poˇcet testovan´ ych Poˇcet ˇc´ıslic hodnot na displeji 100 3.5 100 3.5
Pˇresnost rozpozn´av´an´ı 90% 85%
Tabulka 5.3: Shrnut´ı v´ ysledk˚ u rozpozn´av´an´ı Z dosaˇzen´ ych v´ ysledk˚ u je patrn´e, ˇze k nejvˇetˇs´ı chybovosti doch´az´ı pˇri hled´an´ı pozice znak˚ u a pˇri detekci desetinn´e teˇcky. V prvn´ım pˇr´ıpadˇe je chyba nejˇcastˇeji zp˚ usobena odrazem jin´ ych pˇredmˇet˚ u v displeji mˇeˇric´ıho pˇr´ıstroje nebo velmi ˇspatn´ ymi podm´ınkami pˇri 33
´ ´I VYSLEDKY ´ KAPITOLA 5. EXPERIMENTALN
sn´ım´an´ı obrazu (napˇr. velmi n´ızkou intenzitou osvˇetlen´ı). Takto zp˚ usobenou chybovost m˚ uˇzeme sn´ıˇzit spr´avn´ ym um´ıstˇen´ım sn´ımac´ıho zaˇr´ızen´ı a zajiˇstˇen´ım dobr´ ych optick´ ych podm´ınek. V druh´em pˇr´ıpadˇe je chyba zp˚ usobena faktem, ˇze desetinn´a teˇcka nem´a ˇz´adn´e charakteristick´e rysy a je tak velice obt´ıˇzn´e ji v obraze detekovat. Vlivem nedokonal´e segmentace nav´ıc vznikaj´ı v obraze faleˇsn´e objekty, kter´e se mohou tvarem podobat hledan´e desetinn´e teˇcce. K obt´ıˇznosti pˇrisp´ıv´a i to, ˇze ˇc´ıseln´ y u ´daj desetinnou teˇcku m˚ uˇze obsahovat, ale z´aroveˇ n nemus´ı. Tuto chybovost m˚ uˇzeme sn´ıˇzit pouˇzit´ım dokonalejˇs´ı segmentaˇcn´ı metody. V´ ysledek u ´spˇeˇsn´eho rozpozn´av´an´ı a v´ ystupn´ı obraz zaˇr´ızen´ı ilustruj´ı obr´azky 5.1 a 5.2.
Obr´azek 5.1: V´ ysledek rozpozn´av´an´ı zobrazen´ y na v´ ychoz´ım obrazu (vlevo) a na obrazu po segmentaci (vpravo)
Obr´azek 5.2: V´ ysledek rozpozn´av´an´ı zobrazen´ y na v´ ychoz´ım obrazu (vlevo) a na obrazu po segmentaci (vpravo)
34
Kapitola 6 Z´ avˇ er V t´eto pr´aci jsme se zab´ yvali n´avrhem a v´ yvojem algoritmu pro zaˇr´ızen´ı urˇcen´e k rozpozn´av´an´ı sedmisegmentov´ ych znak˚ u na mˇeˇric´ıch pˇr´ıstroj´ıch. Toto zaˇr´ızen´ı by mohlo naj´ıt uplatnˇen´ı pˇrev´aˇznˇe pro laboratorn´ı u ´ˇcely. Bliˇzˇs´ı specifikace jsou pops´any v prvn´ı kapitole. Druh´a kapitola je vˇenov´ana z´akladn´ım pojm˚ um poˇc´ıtaˇcov´eho vidˇen´ı a vysvˇetlen´ı jednotliv´ ych krok˚ u procesu rozpozn´av´an´ı. V tˇret´ı kapitole jsme se zab´ yvali n´avrhem algoritmu v prostˇred´ı Matlab a detailnˇe jsme popsali pouˇzit´e metody. V´ ysledky tohoto n´avrhu jsme testovali pro dva r˚ uzn´e mˇeˇric´ı pˇr´ıstroje a dosaˇzen´a pr˚ umˇern´a u ´spˇeˇsnost rozpozn´av´an´ı se pohybuje kolem 91 %. Navrhnut´ y algoritmus jsme u ´spˇeˇsnˇe implementovali do v´ yvojov´eho modulu TMS320DM6437 EVM ve ˇctvrt´e kapitole. Protoˇze zaˇr´ızen´ı pracuje v re´aln´em ˇcase, provedli jsme v prostˇred´ı Code Composer Studio ˇcasovou optimalizaci. Pˇred touto optimalizac´ı se pr˚ umˇern´a v´ ypoˇcetn´ı doba jednoho cyklu rozpozn´av´an´ı pohybovala kolem 0.52 s, po optimalizaci jsme tuto hodnotu sn´ıˇzili na 0.16 s. Dosaˇzen´e v´ ysledky implementovan´eho rozpozn´av´an´ı jsme zhodnotili v p´at´e kapitole. Pr˚ umˇernou u ´spˇeˇsnost jsme opˇet testovali na dvou pˇr´ıstroj´ıch a tato hodnota se pohybuje kolem 87 %. K nejvˇetˇs´ı chybovosti doch´az´ı pˇri hled´an´ı pozice znak˚ u a pˇri detekci desetinn´e teˇcky. Chybovost v prvn´ım pˇr´ıpadˇe je nejˇcastˇeji zp˚ usobena odrazem jin´ ych pˇredmˇet˚ u v displeji sn´ıman´eho mˇeˇric´ıho pˇr´ıstroje a m˚ uˇzeme ji sn´ıˇzit vhodn´ ym um´ıstˇen´ım kamery. V druh´em pˇr´ıpadˇe je chybovost zp˚ usobena obt´ıˇznou charakteristikou desetinn´e teˇcky. Naopak velk´e u ´spˇeˇsnosti dosahuje navrhnut´a metoda klasifikace znak˚ u, kter´a je zaloˇzen´a na urˇcen´ı jednotliv´ ych segment˚ u, z nichˇz jsou znaky sloˇzeny. V´ ysledkem t´eto pr´ace jsou funkˇcn´ı programy v prostˇred´ı Matlab a v jazyce C.
35
Literatura ˇ [1] V. Hlav´aˇc, M. Sonka: Poˇc´ıtaˇcov´e vidˇen´ı, Grada, 1992, ISBN 80-854-2467-3 ˇ [2] V. Hlav´aˇc, M. Sedl´aˇcek: Zpracov´an´ı sign´al˚ u a obraz˚ u, CVUT, 2005, ISBN 80-010-3110-1 [3] Z. Kotek, V. Maˇr´ık: Metody rozpozn´av´an´ı a jejich aplikace, Academia, 1993, ISBN 80-200-0297-9 ˇ ara: Modern´ı poˇc´ıtaˇcov´a grafika, Computer Press, 1998, ISBN 80-722-6049-9 [4] J. Z´ [5] Ch. M. Bishop: Pattern Recognition and Machine Learning, Springer Science Business Media, 2006, ISBN 03-873-1073-8 [6] E. R. Davies: Machine Vision: Theory, Algorithms, Practicalities, Morgan Kaufmann, 2005, ISBN 01-220-6093-8 [7] R. O. Duda, P. E. Hart, D. G. Stork: Pattern Classification, Wiley, 2001, ISBN 04-710-5669-3 [8] D. A. Forsyth: Computer Vision: A Modern Approach, Prentice-Hall, 2003, ISBN 01-319-1193-7 [9] D. G. Stork: Computer Manual in MATLAB to Accompany Pattern Classification: Theory, Algorithms, Practicalities, Wiley, 2004, ISBN 04-714-2977-5 [10] K. Chinnasarn, Y. Rangsanseri, P. Thitimajshima, Removing Salt-and-Pepper Noise in Text/Graphics Images, IEEE Computer Society Press, 1998 [11] Texas Instrument Inc.: TMS320DM6437 DVDP Getting Started Guide, 2007 [12] Texas Instrument Inc.: Code Composer Studio v3.0 Getting Started Guide, 2004
36
Pˇ r´ıloha A Seznam pouˇ zit´ eho software • Matlab R2010a • Code Composer Studio v3.3 • Flashburn DSK 3.11 • Texmaker 3.1
I