You are on page 1of 32

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Trng i hc Bch Khoa H Ni


Vin cng ngh thng tin v truyn thng
B mn k thut my tnh

Bi tp ln mn x l nh:
Extract face sequences from video
Nhm thc hin:
L Xun Bch

K thut my tnh K52

Phm Kin Giang

K thut my tnh K52

Nguyn nh Nam

K thut my tnh K52

ng Th Tm

K thut my tnh K52

Gio vin hng dn : Gv. Hong Vn Hip.

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Mc lc
1.

Gii thiu v OpenCV .......................................................................................................................... 3


1.1.

1.1.1.

Cc tnh nng......................................................................................................................... 4

1.1.2.

T chc .................................................................................................................................. 6

1.2.

3.

Ci t OpenCV ............................................................................................................................ 7

1.2.1.

Ci t c bn ....................................................................................................................... 7

1.2.2.

Ty chnh khi ci t Windows ............................................................................................. 7

1.2.3.

Sau khi ci t ....................................................................................................................... 7

1.3.

2.

Tng quan OpenCV ...................................................................................................................... 3

Lp trnh vi OpenCV: Mt s vn c bn .............................................................................. 8

1.3.1.

V tiu v th vin ........................................................................................................... 8

1.3.2.

c v Ghi nh ...................................................................................................................... 8

1.3.3.

Live Video nhp vo ............................................................................................................ 10

1.3.4.

Chuyn i Color ................................................................................................................. 11

1.3.5.

OpenCV Iplimage................................................................................................................. 13

1.3.6.

Truy cp gi tr Pixel ............................................................................................................ 13

Face Detection. ................................................................................................................................... 15


2.1.

Background and Preliminaries. ................................................................................................... 15

2.2.

Thc hin nhn din khun mt, tng bc ............................................................................... 17

Nhn dng khun mt ......................................................................................................................... 19


3.1.

Introduction PCA. ....................................................................................................................... 19

3.2.

Mathematics of PCA ................................................................................................................... 20

3.3.

Nhn dng khun mt. ................................................................................................................ 22

4.

Gii thut phn nhm khun mt. ....................................................................................................... 23

5.

Chng trnh. ...................................................................................................................................... 24


5.1.

Chng trnh c cc hm x l sau: ........................................................................................... 24

5.2.

Cc lp x l vi nh: ................................................................................................................. 25

5.3.

Chc nng chng trnh.............................................................................................................. 27

5.4.

Chi tit chng trnh. .................................................................................................................. 29

6.

nh gi chng trnh. ....................................................................................................................... 31

7.

Ti liu tham kho ............................................................................................................................. 32

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

1. Gii thiu v OpenCV


OpenCV l m ngun m ca Intel, n l mt th vin c kh nng
nhng vo trong cc chng trnh c kh nng nhn din hnh nh ca
my tnh .N bao gm kh nng tin tin nh pht hin khun mt, theo
di khun mt, nhn din khun mt.. Ngoi ra, n cung cp rt nhiu
cc thut ton x l nh thng qua cc hm API.

1.1. Tng quan OpenCV


Intel pht hnh phin bn u tin ca OpenCV vo nm 1999. Ban
u, n yu cu nh l th vin x l hnh nh ca Intel. Nhng cc vn
ph thuc c g b v by gi bn c th s dng OpenCV l
mt th vin c lp.
OpenCV h tr a nn tng. N h tr c Windows v Linux, v gn
y hn l MacOSX. Vi giao din ca n l nn tng c lp.

Hnh 1. Cc kh nng ca OpenCV c th l nhn din khun mt (trn


cng bn tri), pht hin ng ng mc (trn bn phi), v pht hin
cnh (pha di)
3

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

1.1.1.Cc tnh nng


Di y l mt bn tm tt ca cc loi chc nng quan
trng trong OpenCV, phin bn 1.0:
General computer-vision and image-processing algorithms
(mid- and low-level APIs).
S dng cc interface ny, bn c th th nghim nhiu tiu
chun thut ton tm nhn my tnh m khng cn phi code
chng. Bao gm cc vic nh : pht hin cnh, ng, v pht
hin gc, hnh elip, kim t thp .v nhiu hn na .
High-level computer-vision modules
OpenCV bao gm mt s kh nng cao cp. Ngoi vic pht
hin khun mt, nhn din, v theo di, n cn bao gm dng
chy quang hc (bng cch s dng my nh chuyn ng
xc nh cu trc 3D), hiu chun my nh.
AI and machine-learning methods.
ng dng tm nhn my tnh thng i hi my hc hoc s
dng phng thc AI khc. Mt s trong s ny l c sn trong
gi phn mm OpenCV's Machine Learning
Image sampling and view transformations.
Thng hu ch x l mt nhm cc im nh nh mt
khi . OpenCV bao gm giao din cho tiu vng trch xut hnh
nh, ly mu ngu nhin, thay i kch thc, cong vnh, xoay,
v cc hiu ng quan im p dng .

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Methods for creating and analyzing binary (two-valued)


images
nh nh phn thng c s dng trong cc h thng kim
tra m qut pht hin cc khuyt tt hoc trong cc b m. nh
nh phn cng thun tin khi nh v tr mt i tng nm
bt .

Methods for computing 3D information.


Cc chc nng ny rt hu ch lp bn v ni a ho
hoc vi nhiu quan gc nhn t mt my nh.
Math routines for image processing, computer vision, and
image interpretation.
OpenCV bao gm cc thut ton ton hc thng c s
dng trong i s tuyn tnh, thng k, v hnh hc tnh ton.
Graphics.
Cc interface ny cho php bn vit vn bn v v trn hnh
nh. Ngoi ra, cc chc nng ny rt hu ch cho vic ghi nhn
v nh du . V d, nu bn vit mt chng trnh pht hin
i tng, n rt hu ch nhn hnh nh vi kch c v v tr
ca h.
GUI methods
OpenCV bao gm cc interface
windown ring ca
n. Trong khi y l nhng hn ch so vi nhng g c th c
thc hin trn cc nn tng khc, h cung cp mt n gin, a
nn tng API hin th hnh nh, chp nhn u vo ngi
dng thng qua con chut hoc bn phm, v thc hin kim
sot thanh trt .
5

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Datastructures and algorithms


Vi cc interface, bn c th thc hiu qu hn cc vic nh:
tm kim, lu, v thao tc cc danh sch ln, b su, th v
cy .
Data persistence
Nhng phng php ny cung cp giao din thun tin lu
tr cc loi d liu vo lu tr v ly chng sau ny .

1.1.2.T chc
Chc nng OpenCV c cha trong mt s module:
CXCORE cha cc nh ngha kiu d liu c bn. V d, cu
trc d liu im cho hnh nh, hnh ch nht v c quy nh
ti cxtypes.h.
CV bao gm x l hnh nh v cc phng php hiu chnh my
nh. Cc chc nng tnh ton hnh hc cng nm y.
CVAUX c m t trong ti liu hng dn ca OpenCV c
cha m th nghim v thc nghim.Tuy nhin, cc giao din
n gin nht nhn dng khun mt trong m-un ny.
ML cha machine-learning interfaces.
Cc chc nng cn li c cha trong HighGUI v
CVCAM. C hai u nm trong mt th mc c tn l
"otherlibs. N cha cc ca s a nn tng, a chc nng.
CVCAM cha cc giao din truy cp video thng qua
DirectX trn nn tng Windows 32-bit. Tuy nhin, HighGUI
cng cha cc giao din video.
6

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

1.2. Ci t OpenCV
1.2.1.Ci t c bn
OpenCV cho Linux hoc MacOSX l cc bn ng gi nh l
mt kho lu tr m ngun. Bn s cn phi xy dng cc th vin
tnh v th vin chia s i tng. Bn c th xy dng mt RPM
u tin, v ci t t , hoc bin dch v ci t n trc tip.
Vi Windows th c ng gi nh l mt thc thi ci t
OpenCV v bn cn chy n. N t cc file OpenCV vo mt th
mc ty bn chn, thay i ng dn h thng ca bn c th
include nhng chng trnh OpenCV.
1.2.2.Ty chnh khi ci t Windows
K t khi OpenCV l mt b cng c nh pht trin, khng phi
l mt chng trnh, bn c th mun xc nh v tr n u
khc hn so vi th mc Program Files ca bn. Nu bn thch
xc nh v tr n ni khc, quyt nh rng trc khi bn chy
trnh ci t, v nhp vo v tr khi c hi.
Bn c th thay i cc bin PATH h thng ca bn bao gm
v tr ca h, hoc bn c th di chuyn chng, sau khi ci t, t
th mc "bin" ca OpenCV vo th mc SYSTEM_ROOT ca
bn.
Nu bn mun di chuyn cc file dll, nhng khng chc chn
th mc SYSTEM_ROOT ca bn, bn c th xc nh v tr n
bng cch chy cc tin ch c sn www.cognotics.com/utilities.
Nu bn mun thay i PATH, ch khng phi l di chuyn cc
fiel dll, bn c th ci t lm iu cho bn bng cch chn hp
kim tra "Thm th mc bin vo PATH."
1.2.3.Sau khi ci t

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

OpenCV cha nhiu th mc con. Cc ti liu th mc cha ti


liu html cho tt c cc chc nng v kiu d liu OpenCV.
Cc tp tin tiu bn s cn phi bao gm khi bn bin dch
chng trnh s dng OpenCV c phn phi gia cc m-un
OpenCV.
Trn c hai Linux v Windows, bn c th xc nh v tr cc
tiu bng cch tm kim th mc ci t v th mc con cho tn
tp tin ph hp vi m hnh *. h, *. HPP.

1.3. Lp trnh vi OpenCV: Mt s vn c bn


1.3.1.V tiu v th vin
Hu ht cc chng trnh OpenCV cn bao gm cv.h v
highgui.h. Sau , nhn din khun mt, chng ti cng s bao
gm cvaux.h. Cc tp tin tiu cn li c bao gm bi nhng
tiu cp cao nht.
Mi lin kt ca bn s cn c hai con ng th vin v tn
ca cc th vin tnh s dng. Cc th vin tnh, bn cn phi
lin kt vi file th vin cxcore.lib, cv.lib, v highgui.lib. Sau ,
nhn din khun mt, bn cng s lin kt cvaux.lib. y l nhng
file trong th mc "lib" ca OpenCV.

1.3.2.c v Ghi nh
Hnh nh I / O d dng vi OpenCV.Chng trnh di y l
c mt hnh nh t tp tin v vit n nh l mt tp tin th hai,
trong mt nh dng nn khc nhau .
o // ImageIO.c
o // Example showing how to read and write images
8

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

o
o
o
o
o
o
o
o

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
int main(int argc, char** argv)
{
IplImage * pInpImg = 0;
// Load an image from file
pInpImg
=
cvLoadImage("my_image.jpg",
CV_LOAD_IMAGE_UNCHANGED);
o if(!pInpImg)
o {
o fprintf(stderr, "failed to load input image\n");
o return -1;
o }
o // Write the image to a file with a different name,
o // using a different image format -- .png instead of .jpg
o if( !cvSaveImage("my_image_copy.png", pInpImg) )
o {
o fprintf(stderr, "failed to write image file\n");
o }
o // Remember to free image memory after using it!
o cvReleaseImage(&pInpImg);
o return 0;
o }
c mt tp tin hnh nh, ch cn gi cvLoadImage (), v
truyn vo trong hm ng dn fle.OpenCV h tr cc nh
dng hnh nh ph bin nht, bao gm JPEG, PNG, v
BMP. Bn khng cn phi cung cp thng tin nh dng.
cvLoadImage () xc nh nh dng tp tin bng cch c phn
u tp tin.
vit mt hnh nh tp tin, hy gi cvSaveImage (). Chc
nng ny quyt nh nh dng tp tin s dng t phn m
rng tp tin.
C hai cvLoadImage () v cvSaveImage () trong module
HighGUI.
9

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

1.3.3.Live Video nhp vo


o // Capture.c
o // Example showing how to connect to a webcam and
capture
o // video frames
o #include "stdio.h"
o #include "string.h"
o #include "cv.h"
o #include "highgui.h"
o int main(int argc, char ** argv)
o {
o CvCapture * pCapture = 0;
o IplImage * pVideoFrame = 0;
o int
i;
o char
filename[50];
o // Initialize video capture
o pCapture = cvCaptureFromCAM( CV_CAP_ANY );
o if( !pCapture )
o {
o fprintf(stderr, "failed to initialize video capture\n");
o return -1;
o }
o // Capture three video frames and write them as files
o for(i=0; i<3; i++)
o {
o pVideoFrame = cvQueryFrame( pCapture );
o if( !pVideoFrame )
o {
o fprintf(stderr, "failed to get a video frame\n");
10

X l nh
o
o
o
o
o
o
o
o
o
o
o
o
o
o

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

}
// Write the captured video frame as an image file
sprintf(filename, "VideoFrame%d.jpg", i+1);
if( !cvSaveImage(filename, pVideoFrame) )
{
fprintf(stderr, "failed to write image file %s\n", filename);
}
// IMPORTANT: Don't release or modify the image returned
// from cvQueryFrame() !
}
// Terminate video capture and free capture resources
cvReleaseCapture( &pCapture );
return 0;
}

Giao din chp c khi to bng cch gi


cvCaptureFromCAM(). Chc nng ny tr v mt con tr n
mt cu trc CvCapture. Bn s lu tr con tr s dng
cvQueryFrame () ly frame.
Khi bn hon tt bng cch s dng u vo video, gi
cvReleaseCapture()
gii phng ti nguyn. Vi
cvReleaseImage (), bn thng qua a ch ca con tr CvCapture
cvReleaseCapture ().
nh (IplImage) bn nhn c t cvQueryFrame()! Nu bn
cn phi sa i d liu hnh nh, to mt bn sao lm vic
vi:
//Sao chp cc khung hnh video:
IplImage * pImgToChange = cvCloneImage (pVideoFrame);
/ / Chn m x l hnh nh ca bn y ... / / sao chp sau
khi s dng cvReleaseImage (& pImgToChange );
1.3.4. Chuyn i Color
o // ConvertToGray.c
11

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o

// Example showing how to convert an image from color


// to grayscale
#include "stdio.h"
#include "string.h"
#include "cv.h"
#include "highgui.h"
int main(int argc, char** argv)
{
IplImage * pRGBImg = 0;
IplImage * pGrayImg = 0;
// Load the RGB image from file
pRGBImg
=
cvLoadImage("my_image.jpg",
CV_LOAD_IMAGE_UNCHANGED);
if(!pRGBImg)
{
fprintf(stderr, "failed to load input image\n");
return -1;
}
// Allocate the grayscale image
pGrayImg = cvCreateImage
(
cvSize(pRGBImg->width,
pRGBImg->height),
pRGBImg->depth, 1 );
// Convert it to grayscale
cvCvtColor(pRGBImg, pGrayImg, CV_RGB2GRAY);
// Write the grayscale image to a file
if( !cvSaveImage("my_image_gray.jpg", pGrayImg) )
{
fprintf(stderr, "failed to write image file\n");
}
// Free image memory
cvReleaseImage(&pRGBImg);
cvReleaseImage(&pGrayImg);
return 0;
}
12

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Lu rng chc nng chuyn i, cvCvtColor (), yu cu hai


hnh nh trong danh sch u vo ca n. u tin, pRGBImg, l
hnh nh ngun. Th hai, pGrayImg, l hnh nh ch. N s cha
kt qu chuyn i khi cvCvtColor () tr v.
1.3.5.OpenCV Iplimage.
OpenCV lu tr hnh nh nh l mt cu trc C,
IplImage. IPL l vit tt ca Th vin x l hnh nh.
Cc kiu d liu IplImage c nh ngha trong
CXCORE. Ngoi d liu pixel liu, n c cha mt s lnh vc m
t, gi chung l Header Image. Chng bao gm
Chiu rng - chiu rng hnh nh theo pixel.
Chiu cao hnh nh chiu cao tnh bng pixel.
Chiu su - mt trong nhng hng s c xc nh trc
cho bit s bit cho mi im nh trn mt knh
nChannels - s lng ca cc knh d liu (1-4). Mi
knh c cha mt loi d liu pixel.V d, hnh nh RGB
c ba knh mu , mu xanh l cy, v cng mu
xanh.
1.3.6. Truy cp gi tr Pixel
N c th to ra nhiu loi chc nng s dng OpenCV m
khng trc tip truy cp vo cc d liu pixel liu. V d, cc
chng trnh nhn din khun mt, theo di, v cng nhn khng
bao gi thao tc d liu pixel liu trc tip. Tuy nhin, nu bn vit
cc thut ton x l hnh nh ca ring bn, bn c th cn truy cp
vo cc gi tr pixel liu. Di y l hai cch lm iu :
Pixel truy cp n gin
Cch d nht c im nh c nhn vi cvGet2D ():

13

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

CvScalar cvGet2D (const CvArr *, int row, int col);Chc


nng ny c ba thng s: mt con tr n mt thng cha d
liu (CVArr *) v mng ch s hng v v tr ct. Cc thng
cha d liu c th l mt cu trc IplImage. Hng trn cng
ca im nh l hng = 0, v di cng l = chiu cao-1
hng.
CvGet2D () chc nng tr v mt cu trc C, CvScalar, c
nh ngha l:
CvScalar typedef struct
{
double val [4];
}
CvScalar;
Cc gi tr pixel cho mi knh trong val [i]. i vi mu xm
hnh nh, val [0] cha sng im nh. Ba gi tr khc c
thit lp l 0. i vi mt knh ba, BGR hnh nh, mu xanh
= val [0], xanh l cy = val [1], v mu = val [2].
Cc chc nng b sung, cvSet2D () cho php bn chnh sa
cc gi tr pixel. l nh ngha: cvSet2D khong trng
(CvArr *, int row, int col, CvScalar);
Truy cp nhanh Pixel
Mc d cvGet2D () v cvSet2D () l d s dng, nu bn
mun truy cp nhiu hn mt vi gi tr pixel, v cc vn
hiu sut, bn s mun c cc gi tr trc tip t b m d
liu th, IplImage.imageData.
i vi l do hiu sut, d liu pixel c lin kt, v m
nu cn thit, sao cho mi hng bt u vo ngy mt nhiu
bn-byte. Mt lnh vc th hai, IplImage.widthStep, cho bit
s lng cc byte gia s bt u ca d liu mi im nh
ca hang: IplImage.imageData +i*IplImage.widthStep.
IplImage.imageData c nh ngha l kiu char *, v vy
bn c th cn phi b kiu d liu.V d, nu d liu ca
bn hnh nh byte unsigned (cc loi u vo ph bin nht),
14

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

bn mun b mi gi tr * char unsigned trc khi giao,


hoc s dng n.
Nu bn ang truy cp d liu t mt mu xm (mt knh)
hnh nh, v su d liu l tm bit (mt byte cho mi im
nh), bn mun truy cp im nh [hng] [col] vi:
pixel
[row]
[col]
=
(uchar *) (pImg-> imageData + row * pImg-> widthStep +
col);
Cui cng, nu chiu su hnh nh ln hn tm bit (v d,
IPL_DEPTH_32S), bn s cn phi chuyn cc byte nhiu,
hoc din vin m mt kiu d liu a-byte. Bn cng s
cn phi nhn bc rng bng s lng cc byte d liu
to su hnh nh ca bn. (V d, IPL_DEPTH_32S bn
mun b b m (int *) v nhn widthStep.)

2. Face Detection.
2.1. Background and Preliminaries.
OpenCV s dng mt loi pht hin khun mt c gi l Haar
Cascade classifie.Sidebar "nhn din khun mt hot ng nh th
no" gii thch ming ny c ngha l g. Hnh 1 cho thy mt v d
v pht hin phi i mt vi hnh ng ca OpenCV.
15

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Phn loi gi nh mt t l c nh cho khun mt, ni rng cc


im nh 50x50. K c khi cc khun mt trong mt hnh nh c th
l nh hn hoc ln hn, phn loi chy trn hnh nh nhiu ln,
tm kim cc khun mt trn mt lot cc quy m. iu ny c v l
mt s lng ln x l, nhng nh thut ton nn phn loi l rt
nhanh, ngay c khi n p dng quy m ln hn.

Hnh 1. Pht hin khun mt vi OpenCV, bng cch s dng cc


thng s mc nh.
Phn loi ny s dng cc d liu c lu tr trong mt tp tin
XML quyt nh lm th no phn loi tng v tr hnh
nh. Trong bn OpenCv ti bao gm bn loi d liu XML nhn din
khun mt pha trc, v mt cho khun mt h s c nhn. N cng
bao gm ba file pht hin khun mt dng XML - mt cho pht hin
c th , mt cho phn trn c th, v mt cho c th thp hn.
Bn cn xc nh loi tp tin d liu m bn mun chng trnh s
dng. V d l haarcascade_frontalface_default.xml.
Bn cng s cn mt hnh nh x l. Lena.jpg l mt nh tt
th nghim.

16

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

2.2. Thc hin nhn din khun mt, tng bc

Initializing the detector.


Bin CvHaarClassifierCascade * pCascade (2) nm gi cc
d liu t file XML bn t trc . ti d liu XML vo
pCascade, bn c th s dng cvLoad(). cvLoad () l mt chc
17

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

nng c mc ch chung ti d liu t cc tp tin.Phi mt


n ba thng s u vo. i vi v d ny, bn s ch cn tham
s u tin. y l ng dn n mt file XML c cha mt
Cascade Haar hp l.
Trc khi pht hin khun mt trong hnh nh, bn cng s
cn phi to mt i tng CvMemStorage. y l mt b nh
m m rng t ng, khi cn thit. Pht hin khun mt s a
danh sch cc khun mt vo b m ny. K t khi b m
c m rng, bn s khng cn phi lo lng v trn b nh.
Running the detector.
Phng thc cvHaarDetectObjects() d khun mt.Chc
nng ny c n by thng s . u tin l con tr hnh nh, d
liu XML, v b nh m. Bn thng s cn li c thit lp
C + + mc nh .
Show Result.
Mt cch nhanh chng kim tra xem chng trnh ca bn
hot ng l hin th cc kt qu trong mt ca s
OpenCV. Bn c th to ra mt ca s hin th bng cch s
dng cvNamedWindow () chc nng,
mt hnh nh cho mn hnh hin th, hy gi
cvShowImage () vi tn trc y bn ch nh ca s, v hnh
nh m bn mun n hin th. Gi cvWaitKey() tm dng
vic p dng cho n khi bn ng ca s. Ngoi ra, hy chc
chn rng chng trnh ca bn gi cvDestroyWindow ()
ng ca s.
Pht hin khun mt c lu tr nh mt danh sch cc
CvRect con tr struct.
Releasing resources.
18

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Bn cn tr ti nguyn khi sau khi s dng cc bin v khng


cn s dng li na.

3. Nhn dng khun mt


3.1. Introduction PCA.
Phn tch phn chnh (PCA) l mt trong nhng k thut thnh
cng nht c s dng trong nhn dng hnh nh v nn. PCA l
mt phng php thng k theo tiu factor analysis. Mc ch
ca PCA l gim s chiu ln ca khng gian d liu (cc bin quan
st) cc chiu nh hn ni ti ca khng gian tnh nng (bin c
lp), l cn thit m t cc d liu kinh t.y l trng hp
khi c mt s tng quan mnh m gia cc bin quan st.
Cc cng vic m PCA c th lm l d on, loi b d tha, khai
thc tnh nng nn d liu. Bi v PCA l mt k thut c in m
c th lm mt ci g trong lnh vc tuyn tnh, cc ng
dng c m hnh tuyn tnh ph hp, chng hn nh x l tn hiu, x
l hnh nh, h thng v l thuyt iu khin, truyn thng, .v.v..
Nhn dng khun mt c nhiu im p dng. Hn na, n c
th c
phn
loi vo nhn
din
khun
mt,
phn
loi khun mt, hoc xc nh gii tnh. Cc ng dng hu ch
nht bao gm gim st m ng, lp ch mc ni dung video, nhn
dng c nhn (v d: li xe giy php), li vo an ninh. tng
chnh ca vic s dng PCA cho nhn dng khun mt l th hin
vector 1-D
ln
cc im
nh xy
dng
t 2-D hnh
nh khun mt vo cc thnh phn ch yu nh gn ca khong tnh
nng. iu ny c th c gi l eigenspace .Eigenspace c tnh
bng cch xc nh cc vector ring ca ma trn hip phng
sai bt ngun t mt tp hp cc hnh nh trn khun mt (vector).

19

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

3.2. Mathematics of PCA


Bc 1: Tp hp cc bc nh mu: I1, I2,..., IM.
Bc 2: coi cc bc nh Ii nh cc vector i

Bc 3: Tnh vector trung bnh:

Bc 4: Tnh vector lch ca mi bc nh so vi vector trung


bnh.
i=i
Bc 5: Tnh ma trn hip phng sai :

Bc 6: tnh vector ring ui ca ma trn hip phng sai AAT.

20

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

o Do ma trn hip phng sai c kch thc ln nn ra


khng tnh trc tip m thng qua ma trn do ca ma
trn hip phng sai l
o Tnh vector ring vi ca ma trn

o Ch :
Ma trn
c NxN tr ring v vector ring.
Ma trn
c M tr ring v vector ring.
M tr ring,vector ring ca ma trn
tng ng
l M tr ring v vector ring ca
.
o Tnh M vector ring:
Bc 7: Gi li K vector ring (c tr ring ln nht)
Mi nh khun mt(sau khi tr i gi tr trung bnh ) i c
th c biu din nh l mt s kt hp tuyn tnh ca K

21

X l nh
vector

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

ring

tt

Mi nh khun mt i c th hin bi vector:

3.3. Nhn dng khun mt.


Bc 1: Tnh: =
Bc 2: d on khng gian ring:

Bc 3:

th hin l vector :
22

nht.

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Bc 4: tm
Bc 5: Nu er < Tr th l nhn dng nh l khun mt l
trong s nh mu.
Ch :

4. Gii thut phn nhm khun mt.


Mc nh u vo ta c mt s bc nh(c th l danh sch cc file
nh, hoc nh trch t video, tu camera.. ).
Ch : ta ch xt cc bc nh c mt ngi, nhng bc nh ko c
mt ngi s ko x l.
Bc 1: a mt khun mt vo lm mu nhn dng.
Bc 2: Phn tch PCA i vi cc nh khun mt mu.
Bc 3: Xt mt khun mt bt k, d on theo phn tch PCA
xem n gn vi nh khun mt mu no nht(nearest), tnh ton
tin cy ca d on theo tr ring(confidence)
Bc 4:
23

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

o nu confidence>Tngng th a nh va xt vo nhm vi
nh d on gn nht va tm c, quay tr li bc 3
xt nh tip theo.
o nu khng th khun mt trn cha c trong tp hp nh
mu, a nh khun mt xt vo tp nh khun mt mu
v to cho n mt nhm mi. quay tr li bc 2 phn
tch li tp nh mu. sau xt nh tip theo.

5. Chng trnh.
5.1. Chng trnh c cc hm x l sau:
void learn(); // chun b d liu cho vic chun on
void doPCA(); // phn tch d liu chun on

24

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

int findNearestNeighbor(float * projectedTestFace, float


*pConfidence);
// xc nh khun mt gn ng nht, vi tin
cy
void getArrayImageFromListTrainHistrogram()
// load nh t list sang array
int
defindFaceTrainFormCamera ();
// Xc nh d liu nh mu t camera
void showCameraRecogniton ();
// Nhn dng trc tip t camera
void createFaceAndImageFromCamera(const
char
*
fileListFrame);
// To d liu nh cn gom nhm t camera
void createFaceAndImageFormVideo();
// Xc nh d liu nh cn x l t video
void groupFace();// Gom nhm nh c cng khun mt.
void initGroup ();//Khi to d liu mu
void addNewFaceInListTrain(IplImage *face,int indexImage);
// Thm nh mi vo d liu mu, to nhm
mi
void addFaceInListTrain(IplImage *face,int indexImage);
// Thm nh gom nhm nh vo d liu mu
void initShowGroup();
// Thc hin vic xem nh tng nhm.

5.2. Cc lp x l vi nh:

class ImageProcess

{
public:
ImageProcess(void); //hm to
~ImageProcess(void); //Hm hy
void showImage(IplImage * img); // Xem nh trn ca s
25

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

char *saveImage(const char *folder,int index,IplImage *img);


o //Save image vo th mc c tn tng ng vi v tr
IplImage*convertFloatImageToUcharImage(const
IplImage
*srcImg);
o // Conver image sang d liu float
IplImage*rotateImage(const IplImage *src, float angleDegrees);
o // xoay nh theo gc
IplImage*cropImage(const IplImage *img, const CvRect region);
o // ct nh theo khung
IplImage*resizeImage(const IplImage *origImg, int newWidth,int
newHeight); // thay i kch thc nh
CvSeq
*detectFace(IplImage* img); // pht hin danh sch
khun mt
IplImage*detect_and_draw(IplImage* img); // Xc nh v v
khun mt
IplImage*histogram(IplImage *imageSrc); //Tnh histrogram nh
IplImage*convertImageToGreyscale(const IplImage *imageSrc);
// convert image sang d liu
Greyscale
};
Thc hin vic x l, cc thao tc vi nh.

class MyImage

{
public:
IplImage * image;
MyImage(void);
MyImage(IplImage * img);
};
To i tng x l vi List<T>.
26

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

5.3. Chc nng chng trnh.


Chng trnh gm c 3 chc nng chnh:
Chc nng 1: nhn dng trc tip t camera.
Chc nng 2: gom nhm t video.
Chc nng 3: gom nhm trc tip t camera.

Chc nng 1: nhn dng trc tip t camera:


Bc 1: thit lp d liu mu cho chng trnh
o void defindFaceTrainFormCamera () Thc hin xc nh
nh khun mt mu.
o Vi mi nh mu s c t tn theo th t nh khun
mt c nhn bit.
Bc 2: Nhn dng nh t camera:
o showCameraRecogniton ();thc hin vic nhn dng nh
trc tip t camera:
cha hm int defindFaceTrainFormCamera ()
bc 1
cha hm void learn() phn tch d liu mu
27

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Cha hm int findNearestNeighbor(float *


projectedTestFace, float *pConfidence) xc nh
nh gn ng nht trong d liu mu v tr v
chnh xc tng ng.
o Vi mi nh cn xc nh s tnh ton a ra gi tr d
on, sau xc nh nh mu gn ng nht v hin th
kt qu cng chnh xc t c.
Chc nng 2 :gom nhm t video.
Bc 1: Thc hin dc video:
o void
createFaceAndImageFormVideo(char*
fileNameVideo); c d liu t file video truyn vo, tr
v danh sch cc nh(frame) c t video c cha mt
ngi, v danh sch cc nh khun mt ngi trong ton
video.
Bc 2:Thc hin khi to mu nh.
o initGroup (); Khi to ban u c t nht 3 nhm phn
bit.
o Ban u mi nhm ch c 1 nh duy nht, 3 nh khun
mt u tin s tng ng vi 3 nhm u tin(c th 3
nh khun mt c th l 1 ngi).
Bc 3: Thc hin vic nhm nh:
o void groupFace(); gom nhm cc nh khun mt li vi
nhau, thc hin xc nh nh khun mt tng ng vi
nh frame ca video.
o Thc hin trnh t x l ging bc 2 ca chc nng 1,
tuy nhin vi mi bc nh sau khi xc nh c nh mu
gn ng v chnh xc tng ng th s c so snh
vi chnh xc Tngng . Nu chnh xc >Tngng th
xc nhn nh vo nhm vi nh gn nht tm c, nu
khng th xc nhn nh ny l thuc 1 nhm mi, thm
nh ny vo b d liu mu v tnh ton li d liu mu.
28

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Bc 4: thc hin show cc bc nh (frame) c khun mt trong


cng 1 nhm :
o Vi mi nhm ta thc hin void initShowGroup() show
nh tng nhm theo ch s, tr v s nh c trong nhm.
Chc nng 3 :gom nhm t camera.
Ging nh chc nng 2; ch khc bc th 1: thay v c
cc nh (frame) t video ta c cc nh(frame) trc tip thu t
camera.

5.4. Chi tit chng trnh.


5.4.1.Nhn dng trc tip t camera:

29

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Gom nhm t video:

Gom nhm trc tip t camera:


30

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

6. nh gi chng trnh.
Sau khi chy th chng trnh vi d liu vo l 1 on video chng
ta c kt qu sau:
Input : Video
o c c 51 frame
o Nhn din c 103 face trong 51 fram trn.
o Thc t c 4 khun mt c nhn bit
o .
Output: Group Face
o Nhn bit c 6 group
o Trong c 2 nhm group ging khun mt
31

X l nh

L Xun Bch-Phm Kin Giang-Nguyn nh Nam-ng Th Tm

Thi gian chy lu ~ 2ph i vi video trn.


nh gi :
o Mi
ch
thc
hin
nhn
din
qua
file
haarcascade_frontalface_alt.xml nn ch a ra kt qu
khng thc s chun xc c th kt hp vi vic nhn din
mt, mt c knh..
o Do vic thc hin lu nn cha thc hin quay nh nn sai
lch b ln.
o Thc t cho thy vic phn nhm cha thc s chun xc vi
tin cy 40%;
o Hm findNearestNeighbor(..) cha thc s cho tin cy
nh mong mun.
Thc t OpenCV cung cp file haarcascade_frontalface_alt.xml
cho vic nhn din khun mt cha thc s ph hp v thnh
thong vn nhn din li khun mt.

7. Ti liu tham kho


Bi ging x l nh gv Hong Vn Hip
http://www.cognotics.com/opencv/servo_2007_series
http://www.shervinemami.co.cc/faceRecognition.html
ww.codeproject.com/KB/audio-video.

32

You might also like