You are on page 1of 59

Chng 8

Lp trnh x l nh trn nn
nhng

Lp trnh nhng ARM-Linux

202

Ni dung
8.1. Tng quan v x l nh
8.2. Gii thiu OpenCV
8.3. C|c php bin i nh c bn

Lp trnh nhng ARM-Linux

203

8.1. Tng quan x l nh


Khi nim x l nh
N}ng cao cht lng hnh nh theo mt tiu ch
n{o (Cm nhn ca con ngi)
Ph}n tch nh thu c c|c thng tin c trng
gip cho vic ph}n loi nh (image classification),
nhn dng nh (image recognition).
Hiu nh u v{o c nhng m t v nh mc
cao hn, s}u hn.

Lp trnh nhng ARM-Linux

M hnh h thng x l nh

Lu tr
Camera
Thu nhn
nh

S ha

Phn tch
nh

Sensor
Lu tr

Lp trnh nhng ARM-Linux

i snh
Nhn dng

H
quyt nh

Cc bi ton x l nh
Cc k thut tin x l-mc thp

Image
Acquisition

Image
Enhancement

Image
Restoration

Image
Compression

Image
Coding

Morphological
Image Processing

Wavelet
Analysis

Knowledge Base
Lp trnh nhng ARM-Linux

X l mc cao
Image
Segmentation

Representation
& Description

Recognition &
Interpretation

Cc bi ton x l nh
Thu nhn nh, s ha nh (image aquisition)
H thng chp nh, tn hiu nh
H thng s ha nh: C|c phng ph|p ly mu,
lng t ha

Ci thin nh, khi phc nh, lc nhiu (tin x


l image pre-processing)
C|c php x l im nh
C|c php x l trn min khng gian
C|c php x l trn min tn s
2
0

Lp trnh nhng ARM-Linux

Cc bi ton x l nh
Phn tch nh
Trch chn c trng (feature extraction)
Biu din, m t nh (image representation, image
description)
Ph}n lp nh (image classification)
Nhn dng nh (image recognition)

M ha, nn nh
C|c phng ph|p nn nh, c|c chun nn nh

Truyn thng nh: c|c k thut streaming


2
0

Lp trnh nhng ARM-Linux

ng dng x l nh

Lp trnh nhng ARM-Linux

ng dng tng cng cht lng

Lp trnh nhng ARM-Linux

Hiu ng panorama

Lp trnh nhng ARM-Linux

ng dng nhn dng khun mt

Lp trnh nhng ARM-Linux

Nhn dng ngi chuyn ng

Lp trnh nhng ARM-Linux

Nhn dng i tng chuyn ng

Lp trnh nhng ARM-Linux

Nhn dng ch vit tay

Lp trnh nhng ARM-Linux

Nhn dng vn tay

Lp trnh nhng ARM-Linux

Nhn dng mng mt (iris)

Lp trnh nhng ARM-Linux

M hnh ha 3D & AR (Augmented


Reality)

KINECT

Lp trnh nhng ARM-Linux

8.2. Gii thiu OpenCV


OpenCV: Open Computer Vision Library
Tp hp c|c h{m C v{ mt s lp C++ gii quyt c|c
b{i to|n, thut to|n c bn trong x l nh
a nn tng, ~ porting c trn rt nhiu nn
tng kh|c nhau: Windows, Linux, Embedded Linux,
iOS, Android

http://opencvlibrary.sourceforge.net
Lp trnh nhng ARM-Linux

Th vin OpenCV

Lp trnh nhng ARM-Linux

Kin trc th vin OpenCV

Lp trnh nhng ARM-Linux

Kin trc th vin OpenCV


CV: cha c|c h{m c bn v{ n}ng cao thc thi c|c
b{i to|n th gi|c m|y (computer vision)
ML (Machine Learning): th vin hc m|y vi c|c
cng c ph}n lp (classifier) v{ ph}n cm
(clustering).
HighGUI: c|c h{m v{o ra v{ c|c h{m lu tr, np
v{ hin th nh v{ video
CXCore: cha c|c kiu d liu c bn, mt s thut
to|n c bn v{ c|c h{m v, c h tr XML
Lp trnh nhng ARM-Linux

Ci t th vin OpenCV
Bc 1: C{i t th vin OpenCV trn m|y host
(Linux Desktop)
Bc 2: Bin dch cho, c{i t th vin OpenCV
bin dch cho c|c ng dng trn KIT
Chi tit: Xem t{i liu hng dn c{i t

Lp trnh nhng ARM-Linux

Tch hp OpenCV v QT
Khai b|o trong file .pro ca d |n QT: thm c|c
dng lnh sau v{o cui file .pro

Lp trnh nhng ARM-Linux

Tch hp OpenCV v QT
Khai b|o c|c th vin s c s dng: ng
dng linh hot, to file global.h cha include ti c|c
th vin ca OpenCV

Lp trnh nhng ARM-Linux

c nh v hin th
Cc kiu d liu c bn trong OpenCV
cvArr
cvMat
IplImage
CvCapture

Lp trnh nhng ARM-Linux

226

c nh v hin th
Hm c nh: cvLoadImage
Tham s u v{o: ng dn ti file nh
Tham s u ra: d liu nh lu theo kiu d liu
con tr ca IplImage

V d:
IplImage* img = cvLoadImage("/home/oto.jpeg" );

Lp trnh nhng ARM-Linux

Kt ni Camera
Hm m file video:
H{m m webcam:
CvCapture* capture=cvCreateCameraCapture(0)

Lp trnh nhng ARM-Linux

Kt ni Camera
Bc 1: m kt ni vi Camera mc nh
CvCapture* camera = cvCreateCameraCapture(0);
Bc 2: ly v tng Frame nh ca camera
IplImage* preImage=cvQueryFrame(camera);
Bc 3: gii phng i tng camera
cvReleaseCapture(&camera);

Lp trnh nhng ARM-Linux

229

8.3. Cc php bin i c bn


8.3.1. Tm hiu cch thc biu din nh
8.3.2. Bin i nh mu sang nh a mc xm
8.3.3. Xy dng phn b Histogram ca nh
8.3.4. Lp trnh dn tng phn
8.3.5. Lp trnh cn bng tng phn
8.3.6. Bin i nh a mc xm sang nh nh phn

Lp trnh nhng ARM-Linux

230

8.3.1. Cch thc biu din nh


Khi nim nh s: l{ nh thu c t nh lin tc
bng php ly mu v{ lng t ha
y
Gray level

x
pixel
Original picture
f(x, y)

Digital image
I[i, j] or I[x, y]

Lp trnh nhng ARM-Linux

nh s
Mt nh s thng c biu din nh mt ma
trn c|c im nh
Trong mi im nh c th c biu din bng
1 bit (nh nh ph}n)
8 bit (nh a mc x|m)
16, 24 bit (nh m{u)

Lp trnh nhng ARM-Linux

Cch thc biu din nh


nh mu (Color image)
Cha thng tin mu ca nh
Khng gian mu thng s dng: RGB, CMYK
nh RGB 3 knh mu, mi knh s dng 8 bit

nh a mc xm (Grayscale image)
nh a mc xm l nh c s chuyn dn mc xm t
trng sang en.
S dng 8 bit biu din mc xm

nh nh phn (Binary image)


Ch c hai mu en, trng (tng ng gi tr 1,0)

Lp trnh nhng ARM-Linux

233

8.3.2. Chuyn nh mu -> a mc


xm
S dng cng thc:
Gray scale= 0.2989*R+ 0.5870*G + 0.1140*B;

Lp trnh nhng ARM-Linux

234

Chuyn nh mu -> a mc xm
Hm chuyn nh mu sang nh a mc xm:
Bc 1: To 1 nh trng (cha c d liu) nh dng nh
a mc xm
IplImage *grayimage = cvCreateImage( cvSize( colorimg>width, colorimg->height ), IPL_DEPTH_8U, 1 );
Bc 2: Chuyn i nh mu sang a mc xm
cvCvtColor( img, grayimage, CV_RGB2GRAY );

Lp trnh nhng ARM-Linux

235

Demo chuyn sang nh a mc xm

Lp trnh nhng ARM-Linux

8.3.3. Histogram
Biu ny n gin cho chng ta bit s im
nh (pixel) trong mt nh a mc xm c mt
gi tr mc xm tng ng.
Thng s: s bins (=256 vi nh a mc xm)

Lp trnh nhng ARM-Linux

237

Histogram
nh ti

Lp trnh nhng ARM-Linux

238

Histogram
nh sng

Lp trnh nhng ARM-Linux

239

Hm tnh Histogram
Cu trc CvHistogram: lu c|c thng tin v ph}n
b Histogram ca nh

Lp trnh nhng ARM-Linux

Hm tnh Histogram
Bc 1: S dng h{m cvCreateHist khi to cu
trc CvHistogram chun b cha kt qu
Dims: s chiu ca Histogram
Sizes: s lng bins
Type: nh dng d liu (thng s dng
CV_HIST_ARRAY)
Ranges: Di c|c khong gi| tr tnh Histogram

Lp trnh nhng ARM-Linux

Hm tnh Histogram
Bc 2: Tnh Histogram s dng h{m cvCalcHist
Image: nh cn tnh Histogram
Hist: lu kt qu tnh Histogram
Accumulate: ty chn tch ly, cho php tnh
Histogram t nhiu nh
Mask: x|c nh phm vi c|c pixel s c s dng
tnh Histogram, mc nh tnh to{n nh

Lp trnh nhng ARM-Linux

Hm tnh Histogram
Bc 3: V ph}n b Histogram
Bc 4: Gii phng b nh s dng h{m
cvClearHist

Lp trnh nhng ARM-Linux

Demo tnh Histogram ca nh

Lp trnh nhng ARM-Linux

8.3.4. Dn tng phn


y l mt k thut tng cng cht lng nh
thng dng, n c tc dng lm tng tng phn
ca nh bng cch gin di ga tr mc xm ca
nh. Cc bc thc hin
Tm ra gii hn mc xm nh nht (a) v ln nht (b)
ca nh. Vi nh a mc xm thng a=0 v b=255.
Tm gi tr mc xm nh nht (c) v ln nht (d) trong
cc im nh
Xc nh gi tr mc xm mi theo cng thc

Lp trnh nhng ARM-Linux

245

Dn tng phn

nh trc v sau khi tin hnh dn tng phn

Lp trnh nhng ARM-Linux

246

8.3.5. Cn bng Histogram


Cn bng histogram l mt phng php thay i
tng phn ca nh bng cch thay i lc
phn b mc xm ca chng.
Mc ch lm thay i biu phn b mc xm t
phn b ban u sang s phn b hng ti u.
Tc dng nhm pht hin nhng i tng bi che
khut trong nh ban u. Php bin i ny rt c
ngha i vi nhng bc nh chp trong bng m,
i tng thng b m, hay b che khut bi bng
ti, p dng cn bng histogram c th lm ni r
i tng hn.
Lp trnh nhng ARM-Linux

247

Cn bng Histogram
Cng thc thc hin:
bk = (bmax bmin)
Trong bmin, bmax l nhng gi tr c chn, pi l
xc sut xut hin gi tr mc xm i trong nh ban
u, vi i [amin, amax]

Lp trnh nhng ARM-Linux

248

Hm cn bng Histogram
S dng h{m cvEqualizeHist
Src: ma trn nh gc
Dst: ma trn nh sau khi ~ c}n bng Histogram

Lp trnh nhng ARM-Linux

Demo cn bng Histogram

Lp trnh nhng ARM-Linux

8.3.6. Chuyn sang nh nh phn


Chuyn i da trn phn ngng
Phn ngng c nh (fixed threshold): s dng
khi Histogram phn b r rng hai vng sng, ti
vi hai nh r rt

Lp trnh nhng ARM-Linux

251

Chuyn sang nh nh phn


Phn ngng thch nghi (adaptive threshold)
Trong trng hp lc mc xm ca nh c ti >=3
nh chp, v d trong nh di y tng ng vi s
im nh c gi tr mc xm tng ng l 50, 110 v 180.

Lp trnh nhng ARM-Linux

252

Chuyn sang nh nh phn


Phn ngng thch nghi:
S dng ngng ng cho cc im nh khc
nhau
K thut ny cho php chng ta c th iu tit,
thch nghi vi s thay i v iu kin sng ca
nh v d nh nh c s dng cc hiu ng ri
sng (illumination) hay bng(shadow).

Lp trnh nhng ARM-Linux

253

Chuyn sang nh nh phn

Kt qu
(S dng ngng cng)

Kt qu
(S dng ngng thch nghi)

Lp trnh nhng ARM-Linux

254

Hm chuyn sang nh nh phn


Phn ngng cng

Src: nh ban u, dst: nh kt qu


Threshold: ngng c chn
maxValue: gi| tr ln nht
thresholdType: kiu ph}n ngng

Lp trnh nhng ARM-Linux

Hm chuyn sang nh nh phn


Phn ngng thch nghi
Src: nh ban u, dst: nh kt qu
maxValue: gi| tr ln nht
adaptiveMethod: phng ph|p tnh ngng thch
nghi (CV_ADAPTIVE_THRESH_MEAN_C hay
CV_ADAPTIVE_THRESH_GAUSSIAN_C)

Lp trnh nhng ARM-Linux

Demo chuyn sang nh nh phn

Lp trnh nhng ARM-Linux

Ph lc A Cc lnh Linux
Lnh hin th thng tin c|c file trong th mc
ls al //hin th danh s|ch vi y thng tin
Lnh thay i quyn cho mt file hay th mc
chmod
vd: chmod +x Filename //Cp thm quyn thc thi
Lnh xem danh s|ch c|c file thit b
ls al /dev
Lnh xem tt c c|c tin trnh ang chy
ps
Lp trnh nhng ARM-Linux

258

Ph lc A Cc lnh Linux
Lnh c{i t mt phn mm t kho cha ca Linux
sudo apt-get install Tn_gi_phn_mm
Xem danh s|ch c|c major id tng ng vi c|c
device driver ang active
cat /proc/devices
Tm kim file cha mt dng text bt k
grep
vd: grep r Hello .
//Tm tt c c|c file v{ hin th ra c|c dng cha t kha
//Hello trong th mc hin ti v{ c|c th mc con

Lp trnh nhng ARM-Linux

259

Ph lc B Website quan trng


http://www.friendlyarm.net //download
http://www.thaieasyelec.com/FriendlyARM
//mua KIT, download t{i liu
http://dientuvietnam.net //forum chia s
http://eetimes.com //Tin tc cng ngh
http://www.kernel.org //download m kernel
http://qt.nokia.com //H tr QT SDK
qtforum.org
qtcenter.org
Lp trnh nhng ARM-Linux

260

You might also like