You are on page 1of 13

Arcfelismerés számítógéppel

Szerző: Gálfi Csongor


Mentor: Dr. Pletl Szilveszter
Intézmény: Szabadkai Műszaki Szakfőiskola

A dolgozat témája egy Java programozási nyelvben megvalósított arcészlelő és


arcfelismerő alkalmazás. A dolgozat taglalja a számítógéppel megvalósítható
arcfelismerés jelenét és jövőjét. Áttekinti az eddigi gyakorlatban használt arcfelismerő
módszerek elméletét. Kiválaszt egy hatékony megoldást a nem valósidejű
arcfelismerésre. A munka során Java programozási nyelven implementálásra kerül a
kiválasztott algoritmus. Az algoritmus első lépése az arc színes képeken történő észlelése
(detektálása). A sikeres észlelés érdekében néhány kép-előfeldolgozó műveletet
szükséges végrehajtani. Az elkészített program szükség szerint három ilyen műveletet
alkalmaz: a hisztogram kiegyenlítést, a szaturáció és a megvilágítás normalizálást. A
sikeres arcdetektálást az arcfelismerés fázisa követi. Az ennél a lépésnél alkalmazott
módszer, a sajátarc vagy eigenface módszer. A munka során a javasolt algoritmus,
lépésről lépésre kerül bemutatásra. Az elkészült program hatékonyságát bizonyítandó,
néhány példán keresztül több különböző minőségű és paraméterű arckép kerül
azonosításra.

1.0 Az arcfelismerés múltja, jelene és jövője

A számítógépes arcfelismeréssel az 1970-es évek elején kezdtek el foglalkozni, de


jelentős fejlődése csak a múlt évtized közepétől figyelhető meg. A 90-es évekre alakult ki
több arcfelismerő módszer, amelyek egyre megbízhatóbbak lettek, valamint a
számítógépek teljesítménye is kielégítette a nagyobb számítási igényekkel rendelkező
módszereket is.
Napjainkban még csak kevés helyen használnak arcfelismerő rendszereket.
Elsősorban a fejlett államokban kísérleteznek ilyen rendszerekkel, de ezekben az
országokban is elsősorban a kormányzati intézmények számítanak fő felhasználóknak,
például határátkelőknél. Az Egyesült Államokban kísérleteznek egy, olyan rendszer
kifejlesztésével, amely a térfigyelő kamerák felvételei alapján igyekszik felismerni az
elveszett gyerekeket és körözött bűnözőket.
Az emberek arc és hang alapján ismerik fel egymást, így a hasonló módon
működő felismerést, azonosítást végző rendszerek könnyebben átláthatók és
kényelmesebben használhatók, mint a más módon működő rendszerek. Másik nagy
előnye, hogy képes a távolból történő azonosításra, nem korlátozza az embereket a
mozgásukban.
Habár az arcfelismerő szoftverek nagyobb hibalehetőséggel dolgoznak, mint más,
már hosszabb ideje alkalmazott technológiák, például az írisz letapogatás, mégis úgy
gondolják, hogy ez a módszer sokkal elfogadottabb lesz az emberek körében, mert nem
kell, hogy a felhasználó megnyomjon, behelyezzen valamit, vagy rákattintson valamire. A
cégeknek is kedvező megoldást jelenthet, mivel ma már a legtöbb hely kamerákkal
felszerelt, így nincs szükség nagyobb befektetésre, csak a szoftver megvásárlására kell
költeniük az új eszközök felszerelése helyett.

2.0 Arcfelismerő rendszerek

Az arcfelismerő rendszer egy olyan számítógépes rendszer, amely automatikusan


azonosítja, vagy leellenőrzi egy személy azonosságát egy digitális kép felhasználásával.
Egy automatizált arcfelismerő rendszer legalább két részből kell, hogy álljon.
Ezek: arcdetektálás és arcfelismerés. Egyes rendszerek tartalmaznak még egy harmadik,
köztes lépést is, az arc jellemző pontjainak megállapítását, de előfordul, hogy ez az
arcdetektálás részeként kerül bele a rendszerbe.

1. ábra. Arcfelismerő rendszer.

3.0 Az arc észlelése

Az észlelés felügyeli az érzékelést és csak a hasznos információt szelektálja. Az


arc észlelés, avagy arcdetektálás során az alkalmazás megkeresi a képen az emberi
arcokat és kivágja az arcként érzékelt területet azonosítás céljából. Hibás észlelés esetére
az alkalmazásba manuális kijelölést lehetővé tevő eszköz is beépítésre került.
Néhány a leggyakrabban alkalmazott arcdetektáló módszerek közül:
I. Komponens-alapú arcdetektálás: szürkeárnyalatos képeknél alkalmazható
módszer. Hátránya, hogy csak olyan fényképeknél használható, ahol a képet
szemből készítették. A módszer két lépésben hajtja végre a detektálást. Első
lépésben külön-külön megkeresi az arc jellemzőit, például szemek, orr. Második
lépésben, pedig meg kell vizsgálni, hogy a detektált komponensek megfelelnek-e
az arc geometriájának.
II. Ellipszisillesztés: élkiemeléssel ellipszist kell illeszteni a rendelkezésre álló
pontokra. Az élkiemelés után a bináris képen levő pontok koordinátáira kell
elvégezni az illesztést. A pontos arcérzékelés érdekében az arc felépítése, arányai
alapján feltételek szabhatók meg az ellipszis tulajdonságaira.
III. Szegmentálás bőrszín alapján: a módszer kizárólag színes képekre alkalmazható.
Előnye, hogy teljesen független a fej pozíciójától.

3.1 Az alkalmazásban használt arcérzékelő módszer

A [2] bemutatott módszer igen jól használható arcdetektálásra színes képeknél. A


módszer előnye, hogy gyors, így akár valósidejű felhasználásra is alkalmas. Mivel a
módszer feltételezi az optimális megvilágítást és fényviszonyokat, ezért az alkalmazásba
beépítésre került három előfeldolgozó eszköz is. Ezek: hisztogram kiegyenlítés,
szaturáció- és megvilágosítás normalizálás.
Az eszközök felhasználásával feljavítható a képminőség annyira, hogy az
automatikus arcdetektálás pontosan elvégezhető legyen. Azokra az esetekre, amikor a
képjavító módszerek sem segítenek, manuális kijelölés áll rendelkezésre.
Az előfeldolgozó módszerek mindegyike a HSI színskálán hajtja végre a
módosításokat. Erre azért van szükség, mert az RGB színcsatornák külön-külön történő
optimalizálása igen furcsa eredményekhez, színtorzuláshoz vezetne.
A HSI (Hue, Saturation, Intensity) külön csatornákon határozza meg a színezetet
(H érték), a telítettséget (S érték) és az intenzitást (I érték).
A hisztogram felvételekor össze kell számolni az egyes világosságszintekhez
tartozó pixelek számát. Minél több szint van jelen a képen, annál jobb lesz a kép
kontrasztja. A hisztogram kiegyenlítés során a világosságértékek egyenletes eloszlására
kell törekedni. A nagy sűrűségű tartományokat szét kell húzni. A HSI értékek közül az
Intenzitás csatornán kell végrehajtani a szükséges módosításokat.
Szaturáció normalizálásnál a telítettség (vagyis S csatorna) értékein kell
végrehajtani a szükséges műveleteket. Ez a komponens a szín élénkségét befolyásolja. A
valós világban ritkán fordul elő, hogy minden szempontból optimális felvételt lehessen
készíteni. Előfordulhat, hogy a rossz megvilágítás vagy más tényező hatására a bőr színe
a felvételen megváltozik, és az alkalmazásban használt automatikus arcdetektáló módszer
nem tudja pontosan érzékelni az arcot. A túl halovány színek kiküszöbölésére nyújt
megoldást a szaturációs csatorna normalizálása.
A megvilágítás normalizálásánál használt módszer megegyezik a szaturáció
normalizálásánál használt eljárással. Az egyetlen különbség, hogy ennél a módszernél az
intenzitás csatornán kell végrehajtani a normalizálást.
Az utóbbi két folyamat a következő képlet felhasználásával végezhető el:
f  x, y   m f  x, y 
g  x, y   ..........................................................(1)
 f  x, y 

Ahol:
 f  x, y  – az eredeti kép szaturációjának, illetve intenzitásának értéke x, y
koordinátákon
 m f  x, y  – az eredeti kép lokális átlagának becsült értéke
  f  x, y  – a lokális normál szórás becsült értéke
 g  x, y  – a normalizált kép

2. ábra. Hibás arcdetektálása a túl világos bőrszín miatt.

3. ábra. Arcdetektálás szaturáció normalizálás után.


Az alkalmazásban használt arcérzékelő módszer bemutatása, a [2] alapján:
A módszer 4 feltétel megvizsgálásával állapítja meg, hogy egy konkrét képpont
szóba jöhet-e, mint bőrszín.
Az RGB értékek nem alkalmasak a bőrszínű pixelek „kiolvasására”, mivel
nemcsak a színt, hanem a fényerősség értékét is tartalmazza. Ezért a feltételek
meghatározása előtt át kell alakítani az RGB értékeket a chromatic színtérnek megfelelő
értékekké, a következő módon:

R
r .................................................................................(2)
RG B
G
g .................................................................................(3)
RG B

Az r és g a chromatic színtérnek megfelelő értékek, míg az R, G és B a piros,


zöld és kék értékei az RGB színnek. A konverzió másik nagy előnye az is, hogy
különböző bőrszínek detektálása is lehetővé válik. Kutatásokkal bizonyították, hogy a
bőrszínek a chromatic színtérnek csak egy kis részére esnek.
Az ábrán látható, hogyan oszlanak el a bőrszínek az r-g síkon:

4.ábra. Bőrszínek eloszlása r-g síkon (Forrás: [2]).

1. szabály: a fenti ábrán látható eloszlás alapján két határértéket kell kiszámolni és
ezek függvényében dönteni a pixel hovatartozásáról. A határértékek:

f upper  r   1.3767 r 2  1.0743r  0.1452 ....................................(4)


f lower  r   0.776r 2  0.5601r  0.1766 ......................................(5)

A szabály:

SZ1: g > flower(r) és g < fupper(r)


2. szabály: a világos pixelek szűrését teszi lehetővé:

SZ2:  r  0.33 2   g  0.33 2  0.0004

3. szabály: arra a megfigyelésre épül, hogy a bőrszín a pirosnak és a sárgának az


árnyalatai, így a kék összetevő a legkisebb az RGB értékek közül. Tehát a harmadik
szabály:

SZ3: R > G > B

4. szabály: az utolsó szabály pedig a sárga-zöld képpontok kiszűrését végzi:

SZ4: R - G > 45

A négy szabályt összesítve a következő feltétel írható fel a bőrszínek


szegmentálására:

1 ha SZ1 vagy SZ2 vagy SZ3 vagy SZ4 igaz


BSZ  
0 különben

BSZ = 1 azt jelenti, hogy az adott pixel bőrszínű.

5. ábra. A szegmentáció 4 szabályának alkalmazása.

4.0 Arcfelismerés
A leggyakrabban alkalmazott arcfelismerő módszerek:
 1973-ban Kanade kifejlesztett egy olyan automatikus, arcjellemzőket megállapító
módszert, amely a jellemző pontok (például: szem, száj, orr) közti távolságok
arányát felhasználva próbálja meg azonosítani a keresett személyt. Ezzel a
módszerrel 20 főt tartalmazó adatbázisában 45-75%-os pontosságot tudott elérni.
Mivel nagyon ritkán fordul elő, hogy szemből készült képet kelljen vizsgálni, így
ennél a módszernél problémát okozhat az arcpozíció. Ezzel a módszerrel azóta is
sokan foglalkoztak, de igazán jó eredményeket még kontrollált körülmények
között sem tudtak elérni.
 Sablonillesztés: a képrészletek közvetlen összehasonlításán alapul, és csak akkor
működik jól, ha a tanító és kérdésként szereplő képek megvilágítása, iránya,
mérete azonos.
 Egyes rendszerek több irányból készített felvételek segítségével az arc
háromdimenziós modelljét állítják elő, és vizsgálják.
 Neurális hálók is használatosak arcfelismerési célokra, de a legtöbb esetben kicsi
adatbázissal dolgoznak.
 Eigenface-módszer: nagyon népszerű módszer. 1987-ben mutatták be. A módszer
kifejlesztői: Sirovich és Kirby. Az alkalmazásomban is ezzel a módszerrel történik
az arcfelismerés.

4.1 A munkában alkalmazott „sajátarc” módszer

Az arc képét egy olyan vektor reprezentálja, amelyet sajátarcnak (Eigenface)


nevezett sajátvektorokkal kell definiálni.
Mivel az adatbázisban (amelyet Dr. Libor Spacek által összeállított arcadatbázis
egy része) több ezer kép szerepel, ezért az alkalmazás ciklusonként 50 képet olvas be, és
vizsgál meg. A módszer szürkeárnyalatos képeket dolgoz fel, így mindenekelőtt át kell
alakítani a színes képeket szürkeárnyalatos képekké.
A módszerről további részletek Turk és Pentland [4] munkájában olvasható.
A módszer bemutatása egy konkrét példán keresztül:
I. Beolvasni az adatbázisból azokat a képeket, amelyekhez hasonlítani kell a
keresett arcot. Az egyszerűség kedvéért most csak 8 kép felhasználásával
mutatom be a módszert. A képek az alkalmazás által használt adatbázisból
származnak.
 a1   b1 
   
 a2   b2 
a  b 
  3    3 
a  .  b  . 
 .   . 
   
 .   . 
   
 aN2   bN 2 

 c1   d1 
   
 c2   d2 
c  d 
  3    3 
c  .  d  . 
 .   . 
   
 .   . 
   
 cN 2  dN2 

 e1   f1 
   
 e2   f2 
e   f 
  3    3 
e  .  f  . 
 .   . 
   
 .   . 
   
 eN 2   fN2 

 g1   h1 
   
 g2   h2 
 g  h 
  3    3 
g  .  h  . 
 .   . 
   
 .   . 
   
 g N2   hN 2 

6. ábra. Az adatbázisból származó 8 kép és a hozzájuk tartozó oszlopvektorok.

N2 a kép pixeleinek számával egyenlő.


       
a, b, c, d , e, f , g , h oszlopvektorok, melyek a képek szürkeárnyalat
értékeit tartalmazzák.

II. Ki kell számítani a képek átlagát. Ez lesz az átlagarc.

 a1  b1  . . .  h1 
 
 a2  b2  . . .  h2 
 . 
 1  . .
 .................................(6)
m
M . . . 
 . . . 

a 2  bN 2  . . .  hN 2 
 N

M a beolvasott képek számával egyenlő, ami jelen esetben 8.

Az így kapott kép:

7. ábra. A beolvasott képek átlaga (átlagarc).


III. Az átlagarc kiszámításával kapott vektort ki kell vonni a beolvasott képek
oszlopvektoraiból.
 
  
  
  

 a1  m1   b1  m1   c1  m1   d 1  m1 
           
 a2  m 2   b2  m 2   c2  m 2   d2  m2 
 
  
  
  

 a
 3  m 3
  b
 3  m 3
  c
 3  m 3
  d
 3  m 3

am   .  b m   .  c m   .  d m   . 
       
 .   .   .   . 
 .   .   .   . 
           
a 2  m 2  b 2  m 2  c 2  m 2  d 2  m 2 
 N N   N N   N N   N N 
 
  
  
  

 e1  m1   f 1  m1   g1  m1   h1  m1 
           
 2e  m 2   2f  m 2  g
 2  m 2  h
 2  m 2 

 
  
  
  


 e 3  m 3
 
 f 3  m 3
 
 g 3  m 3
 
 h 3  m 3

em   .  fm   .  gm   .  hm   . 
       
 .   .   .   . 
 .   .   .   . 
           
e 2  m 2   f 2 m 2  g 2  m 2  h 2  m 2 
 N N   N N   N N   N N 
2
IV. Létre kell hozni az A mátrixot, melynek N sorból (pixelek száma) és M oszlopból
(beolvasott képek száma) áll. Ez az úgynevezett képtér.

       

A  a m bm cm dm em fm gm hm  ...............................(7)
 
V. Ki kell számolni a kovariancia mátrixot:

Cov  AAT ....................................................................................(8)

Mivel ennek a mátrixnak a dimenziója N 2xN2, ezért a sajátvektorok kiszámítása túl


hosszú időt venne igénybe. Ez miatt Cov mátrix helyett egy MxM dimenziójú
mátrixot számolunk ki:

L  AT A .......................................................................................(9)

A továbbiakban a sajátvektort V-vel jelölöm.

VI. Cov mátrix sajátvektorai a képtérnek és L mátrix sajátvektorainak a lineáris


kombinációja.

U  AV .........................................................................................(10)

Ez a sajátvektor fejezi ki az arcok közti eltéréseket. Ez az úgynevezett arctér, és


benne helyezkednek el a sajátarcok vagy eigenface-ek. A fenti 8 kép sajátarcai:
8. ábra. A beolvasott képek sajátarcai.

VII. Mindegyik képet rá kell vetíteni az arctérre.


   
1  U T a m  2  U T bm  3  U T cm 4  U T dm
   
 5  U T em 6  U T fm 7  U T gm  8  U T hm
.......................................................................................................(11)
VIII. Be kell olvasni a keresett arcot.
 r1 
 
 r2 
r 
  3 
r  . 
 
 . 
 . 
 
 rN 2 

9. ábra. A keresett arc és a hozzá tartozó oszlopvektor.


IX. A keresett arcból is ki kell vonni az átlagarcot.

 

 r1  m1 
  
 2r  m 2 

 


 r3  m 3

rm   .  .............................................................................(12)
 
 . 
 . 
  
r 2  m 2 
N N 

X. A keresett arcot is rá kell vetíteni az arctérre.



  U T rm .....................................................................................(13)
XI. Ki kell számítani az arcterek távolságát a keresett arc és a beolvasott, már ismert
arcok között.
2
 i2     i , ahol i = 1, ... , M..................................................(14)

A beolvasott képek közül az a kép hasonlít a leginkább a keresett arcra, amelyikre a


legkisebb a távolság.

 a  14545  b  13694  c  14118  d  6895


 e  12069  f  13189  g  15253  h  13144

Ahogy a fenti eredményekből kiderül, a d kép van a legközelebb a keresett archoz,


vagyis a legvalószínűbb, hogy d képen szereplő személy a keresett illető.
Felhasznált irodalom

[1] Czap László: „Képfeldolgozás”, Miskolc 2007. (http://mazsola.iit.uni-


miskolc.hu/~czap/HEFOP/Kepfeld1010.pdf)
[2] Cheng-Chin Chiang, Wen-Kai Tai, Mau-Tsuen Yang,Yi-Ting Huang, Chi-Jaung
Huang: „A novel method for detecting lips, eyes and faces in real time”, Real-
Time Imaging 9 (2003) 277-287
[3] Alexander Stoytchev: Eigenfaces
(http://www.cs.iastate.edu/~alex/classes/2007_Spring_575X/slides/13_EigenFace
s.pdf)
[4] Matthew A. Turk, Alex P. Pentland: Face Recognition Using Eigenfaces, Proc.
IEEE Conference on Computer Vision and Pattern Recognition, Maui, Hawaii,
1991.
[5] Helmajer Barnabás, Iváncsy Gábor: Statisztikus mintafelismerés a gyakorlatban,
2003 (http://archiv.mee.hu/elletoltes/2003/2003_04/03_statisztikus.pdf)
[6] Távoli személyazonosítási technikák, Irodalomkutatás kötet, 2005, Budapesi
Műszaki és Gazdaságtudományi Egyetem, SEARCH Laboratórium
(http://www.mit.bme.hu/research/search/downloads/tst/Irodalomkutatas.pdf)
[7] Foley and van Dam: Fundamentals of Interactive Computer Graphics, 1982
(http://130.113.54.154/~monger/hsl-rgb.html)

You might also like