Date post: | 14-Apr-2018 |
Category: |
Documents |
Upload: | trung-kien |
View: | 229 times |
Download: | 0 times |
of 78
7/30/2019 Do an Tot Nghiep_thanh(Ok)
1/78
1
LI NI U
Trong nhng nm gn y, trn th gii nghin cu ng dng cng ngh x
l v nhn dng nh ang l hng nghin cu tp trung ca rt nhiu nh khoa hc
trong cc lnh vc. T nhng nm 1970 khi m nng lc tnh ton ca my tnh
ngy cng trnn mnh m hn, cc my tnh lc ny c th x l c nhng tp
d liu ln nh cc hnh nh, cc on video th mt khi nim na v x l nh
na ra i l: Th gic my - Computer vision.C th ni x l nh s v th gic
my c pht trin v trthnh mt lnh vc khoa hc. X l nh s khng ch
nng cao cht lng ca nh m cn phn tch v l gii tm ra gii thut ng
dng vo thc tin. Th gic my bao gm l thuyt v cc k thut lin quan nhmmc ch to ra mt h thng nhn to c th tip nhn thng tin t cc hnh nh thu
c hoc cc tp d liu a chiu. Vic kt hp gia th gic my vi cc k thut
khc nh cng ngh thng tin, truyn thng, in t, iu khin t ng, c kh
cho chng ta rt nhiu ng dng trong i sng hng ngy cng nh trong khoa
hc, an ninh, y hc, qun s Ngy nay, ng dng ca th gic my trnn rt
rng ln v a dng, len li vo mi lnh vc t qun s, khoa hc, v tr, cho n
y hc, sn xut, v t ng ha ta nh.
Trong thi gian qua di s hng dn tn tnh ca C H TH KIM
DUYN em dnh thi gian nghin cu v x l nh v nhn dng nh hay ni
ng hn l thut ton x l nh bm i tng Tracking. Nhng ni dung m em
nghin cu c y bao gm:
Nghin cu tng quan v x l nh s v h bm i tng Tm hiu v nghin cu v th vin m ngun m OpenCV trn
nn C
Nghin cu v xy dng thut ton bm nh di ng ti u da trnth vin m ngun mOpenCV ca Intel
Xy dng c mt h thng camera di ng (phn cng ln phnmm) bm theo mc tiu di dng ng dng thut ton bm nh Camshitf.
nh gi c kt qu t c trong thi gian nghin cu.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
2/78
2
hon thnh n ny ng tin v c cht lng, em xin gi li cm n
chn thnh nht ti C Th.s H TH KIM DUYN l ngi trc tip hng dn em
lm n ny. ng thi em cng xin gi li cm n su sc ti cc anh, cc bc
phng Quang in t, Vin vt l Vin khoa hc cng ngh Vit Nam to
iu kin ti a gip em v mt thit b v dng c th nghim phc v qu trnh
lm n.
V cui cng, chng em xin dnh tt c lng bit n v knh trng su sc nht
ti b m chng em, nhng ngi sinh thnh, nui dng chng em nn ngi,
lo lng, ch bo t nhng vic nh nht, to mi iu kin cho chng em c
sng v hc tp mt cch tt nht vn ti nhng c m v hoi bo ca mnh.
Em xin chn thnh cm n!
H ni ngy 28 thng 5 nm 2011
Sinh vin thc hin
H Tin Thanh
7/30/2019 Do an Tot Nghiep_thanh(Ok)
3/78
3
Chng 1: TNG QUAN V XL NH V H
THNG BM I TNG
1.1Tng quan v xl nhX l nh bao gm l thuyt v cc k thut lin quan nhm mc ch to ra
mt h thng nhn to c th tip nhn thng tin t cc hnh nh thu c hoc cc
tp d liu a chiu. i vi mi ngi chng ta, qu trnh hc thng qua th gii
bn ngoi l mt iu d dng. Qu trnh nhn thc c hc thng qua qu
trnh sng ca mi ngi. Tuy nhin vi cc vt v tri v gic nh my tnh,
robot th iu qu thc l mt bc tin rt gian nan. Cc thit b ngy naykhng ch nhn thng tin dng tn hiu n l m cn c th c ci nhn tht
vi th gii bn ngoi. Ci nhn ny qua qu trnh phn tch, kt hp vi cc m
hnh nh my hc, mng nron s gip cho thit b tin dn ti mt h thng
nhn to c kh nng ra quyt nh linh hot v ng n hn nhiu. Mt s lnh
vc ng dng cng ngh x l nh mang tnh t ph nh sau:
1.1.1 Trong lnh vc qun s
Cc h thng tch hp quang hng ngoi c kh nng t ng iu khin dn
ha lc (pho, tn la) c lp t cho cc trn a cao x, trn xe tng, tu chin,
my bay, tn la hoc v tinh (Hnh 1.1). Chng c thay th v h trcc dn
rada d b nhiu trong vic t ng pht hin, cnh gii, bm bt mc tiu. c bit
c nhng loi lp trn my bay c kh nng iu khin ha lc nh ph hng chc
mc tiu mt lc. Ngoi ra cn phi k n cc u t dn tn la v n thng
minh.
1.1.2 Trong an ninh, phng chng ti phm, bo v php lut
Cc h thng camera nhn dng khun mt vn tay t ng cng nh pht
hin, theo di, cnh bo cc m mu v hot ng khng b. Cc xe robt t hnh
c gn cc camera cng c ng dng trong cc mi trng c hi, d ph bom
mn (Hnh 1.1).
7/30/2019 Do an Tot Nghiep_thanh(Ok)
4/78
4
1.1.3 Trong lnh vc hng khng v tr
Cc h thng ng knh chp nh vin thm (remote sensing) lp trn cc v
tinh bay quanh tri t c th chp v quan st c cc vt kch c0,5 m t cao
750 km trong mi iu kin thi tit (Hnh 1.1).. Vic ni ghp cc ng knh ny
vi h thng GPS s cho php xy dng cc bn s c nhng lnh vc ng dng
cc k quan trng trong quc phng an ninh, pht trin kinh t, x hi...
1.1.4 Trong cng nghip, giao thng, xy dng
H thng quang in t ng vai tr ca cc th gic my (machine vision) c
kh nng t ng o c kim tra cht lng sn phm trong cc dy truyn sn
xut: phn loi ht ng cc, c ph; tm li lp rp linh kin cc bn vi mch v
khuyt tt cc mi hn v ng c... Cc h thng quang in t cng c ng
dng ngy cng nhiu trong giao thng nh o tc , t ng kim sot iu khin
v phn lung giao thng (Hnh 1.2).
1.1.5 Trong nghin cu y sinh dc hc
Cc knh hin vi c kh nng t ng nhn dng v o m cc t bo vi chnh xc cao. Cc knh hin vi c h thng dn ng laser cho php thc hin
nhng phu thut rt phc tp nh m u no, ni m mt s khng chnh xc cm
cng gy tn hi n cc dy thn kinh chng cht xung quanh..
1.1.6 Trong cng nghip gii tr truyn hnh
Cc h thng tch hp c th iu khin cc camera kch thc v khi lng ln d
dng t ng bm theo cc i tng chuyn ng nhanh nh bng ang bay, ua
xe...
7/30/2019 Do an Tot Nghiep_thanh(Ok)
5/78
5
Hnh 1.1: Mt sh thng tch hp quang-in tv nh nhit trongun sv chin u
Hnh 1.3: H thng camera in tng dng trong nghin cu thi tit vtrong cng nghip
Hnh 1.2: Mt sh thng tch hp camera gim st trn tu vin thm vtrong cng nghip v cng ngh v tr
7/30/2019 Do an Tot Nghiep_thanh(Ok)
6/78
6
1.2 Gii thiu chung v Robot
R bt (robot) hay ngi my l mt loi my c th thc hin cng vic mt
cch t ng hoc c iu khin gin tip qua my tnh.
R bt l mt tc nhn c kh, nhn to, thng l mt h thng c kh-in tkt hp hon ho.Vi s xut hin v chuyn ng ca mnh, r bt gy cho con
ngi cm gic l n cng c nhng gic quan nh con ngi. T r bt (ngi
my) thng c hiu vi hai ngha l 1 c cu c kh chnh xc v phn mm
t hot ng.V lnh vc ngi my th Nht Bn ang i u v lnh vc ny.
Ngy nay, R bt ang l tm im ca mt cuc cch mng ln sau Internet.
R bt ngy cng c s dng rng ri trong cng nghip, y t, gio dc v o
to, gii tr v an ninh quc phng, thm him khng gian.
R bt l sn phm cng ngh c phc tp cao cha hm lng tri thc v
cng phong ph v tt c cac lnh vc ca khoa hc v cng ngh.
Ngy nay ngi ta vn cn tranh ci v vn Mt loi my nhng tiu
chun g c coi l mt r bt??? Mt cch gn chnh xc, r bt phi c mt
vi (khng nht thit phi y ) c im sau y:
1. Khng phi t nhin, tc l do con ngi ch to ra.2. C kh nng nhn bit mi trng xung quanh.
3. C th tng tc vi cc vt th trong mi trng.
4. C s thng minh v c kh nng a ra cc la chn da trn mi trng
v c th hot ng theo 1 chu trnh c lp trnh sn.
5. C kh nng iu khin bng cc lnh c th thay i ty theo yu cu
ca ngi s dng.
6. C th di chuyn quay tnh tin mt chiu hay nhiu chiu.7. C s kho lo trong vn ng.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
7/78
7
1.3 Gii thiu tng quan v h thng r bt camera bm i tng (Trackingmobile robot)
H thng r bt hot ng bng cc cm bin nh cm bin mu sc, hng
ngoi, cm bin d ng, siu m gi y dn dn c pht trin v tch hp
thm th gic.Vi s pht trin ca khoa hc cng ngh, vic tch hp trn r bt
h thng camera thng minh ng dng cng ngh x l nh l rt cn thit phc v
cho cng nghip, quc phng v x hi.
H thng th gic c th phn thnh 2 lp, theo nh cu trc ca h, l h
c camera gn c nh v h c camera gn trn tay my (eye-in-hand). Trong h
camera c nh, camera c gn c nh so vi h trc ta thc, thu thp nh
ca c mc tiu v c mi trng. Mc tiu ca h camera c nh ny l cung cp
tn hiu iu khin sao cho tay my t c v tr mong mun. Mc ch ca cu
trc eye-in-hand l iu khin tay my sao cho nh ca mc tiu di ng hoc c
nh c duy tr v tr mong mun trn mt phng nh thu c.
CameraMy tnh
Robot
Tn hiu iu khin
Hnh 1.4: Cu trc h camera c nh iu khin v gim st cnh tay r bt
7/30/2019 Do an Tot Nghiep_thanh(Ok)
8/78
8
Cc nghin cu ca mi trng ng b b kh xa so vi mi trng tnh do
nh hng kh ln ca tc tinh ton cng nh chinh xc ca vic phn tch
nh. Do vy c nhiu thut ton ci thin tc x l nh v ci thin can nhiu
trong qu trnh thu thp d liu t camera.
Mt kh khn v thch thc ca th gic my l vic phn loi i tng. mtr bt c th phi i mt vi nhiu i tng khc nhau, trong khi ch mt i
tng c quan tm cn cc i tng khc th khng. nhn bit c v tr
ca mc tiu trong mi trng ng, cc c trng ca mc tiu l rt quan trng.
Cc im l, cc gc cnh, cc c im in hnh c th d dng tnh ton x l
mi trng tnh, nhng trong mi trng ng th rt kh v chi ph v thi gian l
rt ln, nh hng ca tc lm cho vic x l nh tch ly c trng ca i
tng l rt kh.
Bi ton bm mc tiu di ng vi qu o khng bit trc yu cu phi gi
c i tng mt v tr nht nh trn mt phng nh. Thut ton CamShift
trong OpenCV c s dng tnh ton ta trng tm ca i tng trn mt
phng nh.
Mt s h thng tracking r bt thc t c trin khai:
Hnh 1.5: Cu trc h Camera r bt eye-in-hand
camera
Robot eye-in-handVt th cn gim st
7/30/2019 Do an Tot Nghiep_thanh(Ok)
9/78
9
Ngy nay vic xy dng mt h thng r bt thng minh v c kh nng thayth con ngi lm vic trong cc iu kin khc nghit v nguy him l rt cn
Hnh 1.6: PAN robot v Robot Pops (ngun: www.mobilerobot.org)
Hnh 1.7: Robot Talon v Robot MARRS (ngun Internet)
Hnh 1.8: Robot thm him sao ha v Robot MIDbo
7/30/2019 Do an Tot Nghiep_thanh(Ok)
10/78
10
thit, n c nh vic lm vic trong cc hm m cc nh my ht nhn v cc vng
nguy him bom mnth khi y cc r bt nh th ny hon ton hu dng v l
la chn ti u.
Vi mc tiu hng ti xy dng mt h thng r bt camera thng minh c
th phc v trong cng tc d mn cu trcu nn, v c kh nng do thm, ti
cng tm hiu v i vo nghin cu ch to mt h tracking thng minh c kh
nng t hnh v bm mc tiu di ng da trn cng ngh x l nh c giao tip v
kim sot, lu tr thng tin bng my tnh.
C th h thng li rng, mt h thng bm i tng bao gm:
Mc ch ca h thng bm video, nh t ng l duy tr mt ng ngm vit
tt l LOS (Line Of Sight) gia cm bin mc tiu mt cch n nh v hon ton
vcm bin
nh
B x l
Mc tiu
LOS
Hnh 1.9: Cm bin nh, gimbal v b vi xl
Hnh 1.10: Tng quan vmt h thng bm
7/30/2019 Do an Tot Nghiep_thanh(Ok)
11/78
11
t ng trong khi tn ti c chuyn ng tng i ca mc tiu v chuyn ng
ca gn cm bin lm nhiu lon ti d liu cm bin hnh nh. Mc tiu thng
c nh v ban u, bi hoc l ngi iu khin hoc l h thng nhn dng mc
tiu t ng. Sau h thng bm s kha cht mc tiu v duy tr LOS t ng.
H thng bm nh t ng thng c 3 b phn chnh (hnh 1.8): (1) b cm
bin hnh nh (camera chng hn), (2) b chp hnh thng l cc trc khp quay
(gimbal) c gn ng c hoc kh nn, v (3) b vi x l.Mt vng iu khin phn
hi,c gi l vng bm, lin tc hiu chnh b chp hnh gi mc tiu vo tm
ca trng nhn vit tt l FOV (Field Of View) ca b cm bin. B vi x l s
khp kn vng ny bng cch tnh ton lch iu khin c cu chp hnh. Ccthnh phn hot ng theo th t: (1) b vi x l nh v tn hiu mc tiu trong cc
dng hnh nh t b cm bin, (2) b vi x l c lng trng thi mc tiu v to
ra cc lnh iu khin c cu chp hnh trn c scc thng tin trng thi, (3) lnh
iu khin c p dng vo LOS cm bin, (4) b cm bin to ra mt vng video
mi, v (5) qu trnh c lp li.
Cm bin hnh nh, c th l cc camera hoc cc cm bin hnh nh khc
nh: cm bin nh CCD (Charge Couple Device) l loi cm bin s dng mt li
hnh ch nht ca cc im (site) thu thp in t ph trn mt silic mng ghi
li nng lng nh sng n mi im trong chng. Mi mt im c to thnh
bng cch cy mt lp SiO2 trn v sau lng ng mt cu trc dn ln trn. Khi
photon nh sng p vo silic, th cp in t l trng s c to ra v cc in t
mang in tch m (electron) s c bt ra cng tng ng. Vi mi nh sng c
bc sng khc nhau th cc in tch bt ra tng ng cng s khc nhau.cc dngin t ny i qua b bin i ly ra c mc in p quy nh tng ng vi
mi mu sc. V tp hp nhng tn hiu in ny s c x l khi phc li
hnh nh ca i tng thng qua thit b chuyn dng chuyn i.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
12/78
12
C th ni rng, khi cm bin hnh nh c th s dng cc cm bin mu sc
hoc camera, tuy nhin c th khng nh rng, khi ny c nh hng rt ln n
cht lng v tc ca mt h bm nh. V tc thu thp d liu gi v b vi
x l rt quan trng, n nh hng n vic tnh ton ca b vi x l nhanh
chng a ra lut iu khin cho c cu chp hnh.Camera tc v cht lng
cng cao th h bm s hot ng vi xc sut chnh xc cao.
Ngy nay vi s pht trin ca khoa hc cng ngh th cm bin hnh nh
cng c hin i ha v ci thin c tc cng nh cht lng hnh nh, in
hnh l cc h thng camera tch hp, hng ngoi, lade, khng dy
Vi yu cu mc ch ca n th khi cm bin hnh nh ca ti s dng
y l h thng camera khng dy tch hp hng ngoi quan st ban m. V
camera l la chn ti u trong vic xy dng mt h thng trin khai thc nghim,trong khi cc cm bin hnh nh khc ch dng trong mt mc ch nghin cu nht
nh, tc khng cao v kh s dng v kh tip cn. Ngc li camera th hon
ton p ng yu cu xy dng mt h thng bm nh thc nghim v d tip
cn.
Hnh 1.11: Cm bin CCD
7/30/2019 Do an Tot Nghiep_thanh(Ok)
13/78
13
V h c cu chp hnh th c th s dng l kh nn hoc ng c iu
khin. Tuy nhin ty vo mc ch s dng v yu cu ring ca h thng ta c th
s dng c cu chp hnh no ph hp nht. y ta c th s dng h thng
xoay dng ng c iu khin v kim sot gc v tc quay. Cc h trn th
trng hin nay nh cc h PTS, HN ( xoay camera) tuy nhin cc h ny thng
l cc ng c xoay chiu iu khin cho nn vic iu khin tc v kim sot
gc quay cng gp nhiu kh khn.
Trong h thng ca ti s dng hon ton l ng c 1 chiu c gn encoder
kim sot tc v gc quay, c iu khin bng phng php iu xung
PWM, nn hon ton ph hp vi yu cu ca h thng.
Hnh 1.12: Camera quan st tch hp
Hnh 1.13: xoay PST, HN gn camera quan st
7/30/2019 Do an Tot Nghiep_thanh(Ok)
14/78
14
Vic la chn ng c 1 chiu DC (Direct Current) l mt la chn ti u v
c tnh c ng cao nh gn, c th di chuyn n mi v tr v c kh nng dng
acqui v pin lu tr, ph hp vi nhiu iu kin khc nhau, ph hp vi nhiu a
hnh c th trin khai thc t.
V b vi x l, c th l cc vi mch x l chuyn dng DSP (Digital signal
processing) hay cc mch vi iu khin hoc l my vi tnh PC (Personal computer).
Ngoi nhim v thu thp d liu, chng c nhim v x l cc d liu ny bng cc
chng trnh c nhng trong b x l hoc chy trn cc PC. Mt vi iu khin
(microcontroller) l mt my tnh trn mt chip (Computer-onachip, single-chip-
computer). Thng th cc vi iu khin ny c gi l cc b iu khin nhng(embedded controller) v chng v cc mch in t h tr thng c thit k lp
t (nhng) ngay bn trong thit b iu khin. Mt s loi mch nhng thng gp
nh: Psoc, PC 104, FPGA, SBC (Single board computer), CMUCAM1 2 3, DSP v
cc my tnh nhng.(hnh 1.13).
Cc mch nhng trn u c u im l nh gn, c th can thip v cu trc
ca chng c ngha l c th trc tip lp trnh trn n, tuy nhin chng c nhc
im l kh s dng, phc tp v mang tnh chuyn ngnh cao, khng ph bin v
c dung lng b nhnh ch c th x l v t c kh nng lu tr thng tin hnh
Hnh 1.14: Cc mch nhng ( SBC use PSoC, FPGA, CMUCAM,DSP, my tnh cng nghip PC104)
7/30/2019 Do an Tot Nghiep_thanh(Ok)
15/78
15
nh hoc video khi cn thit (nu mun lu tr phi dng thm thit b ngoi vi nn
kh phc tp).
Mt trong nhng thit b va c th lp trnh v va c th x l tn hiu ng
thi c kh nng lu tr thng tin ln l my tnh c nhn PC. My PC ra i
nhm phc v nhng yu cu ca ngi s dng, s dng n gin, ph bin p
ng c nhng yu cu ca h thng. Hin nay my tnh c nhn cng c
thit k nh gn vi y chc nng. Do vy trong khun kh ti ny ti la
chn my tnh laptop x l v c th lu tr c thng tin hnh nh v video,
m thanh.Gip ngi iu khin c th quan st trc tip mc tiu v khi cn thit
s can thip trc tip vo qu trnh iu khin. Nh vy vic la chn my tnhlaptop l ph hp vi yu cu ti.
Nh vy, mc tiu ca ti l xy dng c mt h thng bm nh di ng
bao gm mt h tch hp r bt iu khin camera thng minh thu thp d liu gi
v trung tm lu tr v iu khin t xa thng qua h thng my tnh. Rbt v
camera c th hon ton hot ng t ng bm nh, vt th hoc c th can thip
iu khin bi ngi s dng, phc v cho cng tc nghin cu, cng tc cu h,
d ph bom mn, phc v nhiu mc ch trong cuc sng.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
16/78
16
Chng 2: TNG QUAN V TH VIN M NGUN
MOPENCV TRN NN C
2.1 Th vin OpenCV
2.1.1 OpenCV l g?
OpenCV vit tt ca Open Source Computer Vision Library. N c cha hon
500 hm s dng th gic my, v c pht trin bi tp on Intel. OpenCV l
mt th vin m ngun m(open source) tham kho ti: http://www.sourceforge.net
Th vin c vit bng ngn ng C v C++ c th chy trn cc h iu
hnh nh Linux, Window v Max OS X. OpenCV c thit k nng cao hiu
sut tnh ton v nhn mnh n h thng thi gian thc. Mt iu tuyt vi ca
OpenCV l n a ra mt h thng n gin, d s dng gip mi ngi nhanh
chng xy dng cc ng dng trong th gic my, k c cc h thng kim tra trong
nh my, bc nh trong cc lnh vc y hc, bo mt, r bt hc N cha cc lp
trnh x l nh rt n gin, k c khi thc thi cc hm bc cao nh d tm khun
mt, theo di khun mt, nhn dng khun mt, lc Kalman.
K t khi c gii thiu v s dng vo thng 1 nm 1999, OpenCV c
s dng trong rt nhiu ng dng, cc sn phm v cc nghin cu. V d nh trong
lnh vc hng khng v tr, bn web trc tuyn, s dng gim nhiu trong y hc,
phn tch i tng, an ninh, h thng d tm v cnh bo, qun l h thng sn
xut, x l camera, ng dng trong qun s, hng khng khng ngi li, trn mt
t v trn tu ngm. Ngoi ra n cn s dng trong nhn dng m thanh. OpenCV
l mt cha kha quan trng trong cc r bt s dng th gic my nh Stanford hay
Asimo ca Nht Bn. Qu trnh pht trin ca OpenCV c th hin hnh 2.1:
7/30/2019 Do an Tot Nghiep_thanh(Ok)
17/78
17
Trn th gii cn mt s th vin nh Emugu CV nhng pht trin trn nn C# .
OpenCV c pht trin trn nn C v C++ th s d dng cho nhng ngi mi
tip cn hn Emugu CV.
2.1.2 V sao la chn OpenCV?
Th trng th gic my ang ngy cng m rng v ln tc pht trin. Thvin tiu chun s to ra cc ng dng mi v cc gii php x l d dng hn. c
bit ti u khi s dng cu trc Intel. To ra cc mu ng dng bng cc th vin
c cp nht thng xuyn v thc hin cc thut ton nng nh d tm khun
mt. C rt nhiu cng ngh hin i v cc cng ty ln s dng th vin OpenCV
trong ng dng ca mnh nh : Intel, Microsoft, IBM, Siemens, Google v cc
trung tm nghin cu nh: Stanford, MIT, Cambridge, INRIA
Hn 14000 thnh vin trn forum OpenCVyahoogroup.com vi trung bnh
mt ngy c n 10-20 thng ip comment trao i hng ngy.
iu khng nh rng OpenCV thc s gp phn v cng ln trong lnh
vc th gic my.
Hnh 2.1: Qu trnh pht trin ca OpenCV
7/30/2019 Do an Tot Nghiep_thanh(Ok)
18/78
18
2.1.3 Cu trc v ni dung OpenCV nh thno?
hiu OpenCV lm vic nh th no chng ta bt u t s phn chia cu
trc v ni dung ca OpenCV 5 phn. Cu trc ca openCV c chia lm 5 phn
chnh, 4 trong s c ch ra trong hnh 2.2
CXCORE cha cc nh ngha kiu d liu c s. V d, cc cu trc d liu
cho nh, im v hnh ch nht c nh ngha trong cxtypes.h . CXCORE cng
cha i s tuyn tnh v phng php thng k, chc nng duy tr v iu khin
chui. Mt s t, cc chc nng ha v trn nh cng c t y.
CV cha cc thut ton v x l nh v nh kch c camera. Cc chc nng
hnh ha my tnh cng c t y.
CVAUX c m t trong ti liu ca OpenCV nh cha cc m c v th
nghim. Tuy nhin, cc giao din n cho s nhn din nh trong module ny.
Code sau ny chng c chuyn dng cho nhn din mt v chng c ng dng
rng ri cho mc ch .
HIGHGUI v CVCAM c t trong cng th mc l otherlibs.
CV
X l nh v thut tonv th gic my
MLL
Thng k v tp hpcc cng c x l
HighGUI
Giao din, truy xutnh v video
CXCORE
Cu trc c sv cc thut ton, h trXML, cchm v
Hnh 2.2: Cu trc ca OpenCV
7/30/2019 Do an Tot Nghiep_thanh(Ok)
19/78
19
HIGHGUI cha cc giao din vo ra c bn, n cng cha cc kh nng ca
s m rng v vo ra video.
CVCAM cha cc giao din cho video truy cp qua DirectX trn nn
Windows 32 bits.
Km theo th vin l ti liu hng dn v cc v d mu th hin mt phn
cc chc nng ca cng c OpenCV. Cc chc nng ca openCV tp trung vo thu
thp nh, x l nh v cc thut ton phn tch d liu nh, bao gm:
- Truy xutnh v phim: c nh s t camera, t file, ghi nh v phim
- Cu trc d liu nh s v cc d liu h tr cn thit: ma trn, vector,
chui, xu v cy
-Xlnh cn bn: cc b lc c sn, tm chi tit cnh, gc, chnh i mu,
phng to thu nh, v hiu chnh histograms
- X l cu trc: tm vin, nhn chuyn ng, thay i trong khng gian 3D,
i chiu bn mu, xp x cc n v hnh hc c s- mt phng, a gic, ellipse,
ng thng...
- Phn tch dliu nh: nhn dng thc th, theo di cc chi tit v phn tchchuyn ng
- To giao din n gin: hin thnh, thao tc bn phm, chut, thanh trt
chnh thng s (nu cn thit cc bn c th t to thm cc phm iu khin
thng qua thao tc chut, hoc tch hp thm cc th vin v giao din nh
wxWidgets)
- Chc nng v, ch thch ln nh.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
20/78
20
2.2 Th vin OpenCV v mi trng lm vic Microsoft visual studio 2008
2.2.1 Ci t OpenCV phin bn 2.1 dnh cho VC++ 2008
Trc ht vo trang web: http://sourceforge.net/projects/opencvlibrary/ downloadOpenCV 2.1 phin bn dnh cho VC++ 2008 trn nn window.
Tin hnh ci t:
ClickNext:
Hnh 2.3: Setup OpenCV 2.1
Hnh 2.4: Chn I Agree
7/30/2019 Do an Tot Nghiep_thanh(Ok)
21/78
21
ClickI Agree tip tc:
ChnAdd OpenCV to the system PATH for all users, chy trn tt c quyn
Admin ln users, sau click Next chn mc nh v tip tc cho n khi ci t
xong finish.
Sau khi ci t ta tin hnh copy tt c cc file trong th mc bin, include
v lib ca OpenCV cho vo th mc bin, include v lib ca VC++2008 s
dng th vin OpenCV.
Hnh 2.5: Chon Add OpenCV to the system PATH
Hnh 2.6: Click Finish kt thc
7/30/2019 Do an Tot Nghiep_thanh(Ok)
22/78
22
2.2.2 To mt d n bng VC++ 2008
M phn mm Visual C 2008, chn Createproject MFC sau tin
hnh MFC Application chn tn d n v ng dn lu d n ca mnh sau
n Ok.
Sau chn thit k giao din Dialog based v chn Next:
Hnh 2.7: To mt dn trong VC++ 2008
7/30/2019 Do an Tot Nghiep_thanh(Ok)
23/78
23
Sau chnNextv Finish, nh vy ta thit lp c mt d n by gi ta
c th thit k v lp trnh theo mun.
Sau y l kt qu ca mt ca mt chng trnh nhn din khun mt c
s dng th vin m ngun m ca OpenCV v m s ngi trong bc nh.
Hnh 2.8: Chn thit kDialog based v mi
trng lm vic ca dn
7/30/2019 Do an Tot Nghiep_thanh(Ok)
24/78
24
Hnh 2.9: Kt qu thnghim ca lp trnh nhn din khunmt
7/30/2019 Do an Tot Nghiep_thanh(Ok)
25/78
25
Chng trnh nhn din khun mt v m s ngi trong mt bc nh dngth vin: "haarcascade_profileface.xml.
#include "cv.h"
#include "highgui.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// Create a string that contains the exact cascade name
const char* cascade_name =
"C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt2.xml";
/* "haarcascade_profileface.xml";*/
// Function prototype for detecting and drawing an object from an image
void detect_and_draw( IplImage* image );
int dem=0;
// Main function, defines the entry point for the program.
int main( int argc, char** argv )
{
// Create a sample image
IplImage *img = cvLoadImage("D:\\IMG_8036.jpg");
// Call the function to detect and draw the face positions
detect_and_draw(img);
// Wait for user input before quitting the program
cvWaitKey();
// Release the image
cvReleaseImage(&img);
std::cout
7/30/2019 Do an Tot Nghiep_thanh(Ok)
26/78
26
system("pause");
return 0;
}
// Function to detect and draw any faces that is present in an image
void detect_and_draw( IplImage* img)
{
// Create memory for calculations
static CvMemStorage* storage = 0;
// Create a new Haar classifier
static CvHaarClassifierCascade* cascade = 0;
int scale = 1;
// Create a new image based on the input image
IplImage* temp = cvCreateImage( cvSize(img->width/scale,img-
>height/scale), 8, 3 );
// Create two points to represent the face locations
CvPoint pt1, pt2;
int i;
// Load the HaarClassifierCascade
cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
// Check whether the cascade has loaded successfully. Else report and error
and quit
if( !cascade )
{
fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
return;
}
// Allocate the memory storage
storage = cvCreateMemStorage(0);
// Create a new named window with title: result
cvNamedWindow( "result", 1 );
// Clear the memory storage which was used before
cvClearMemStorage( storage );
// Find whether the cascade is loaded, to find the faces. If yes, then:if( cascade )
{
7/30/2019 Do an Tot Nghiep_thanh(Ok)
27/78
27
// There can be more than one face in an image. So create a growable
sequence of faces.
// Detect the objects and store them in the sequence
CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,
1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
cvSize(40, 40) );
// Loop the number of faces found.
for( i = 0; i < (faces ? faces->total : 0); i++ )
{
// Create a new rectangle for drawing the face
CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
// Find the dimensions of the face,and scale it if necessary
pt1.x = r->x*scale;
pt2.x = (r->x+r->width)*scale;
pt1.y = r->y*scale;
pt2.y = (r->y+r->height)*scale;
// Draw the rectangle in the input image
cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 );
dem++;
}
}
// Show the image in the window named "result"
cvShowImage( "result", img );
// Release the temp image created.
cvReleaseImage( &temp );
}
7/30/2019 Do an Tot Nghiep_thanh(Ok)
28/78
28
Chng 3: XY DNG THUT TON X L NHBM I TNG TI U (TRACKING)
3.1 Gii thut chung v h thng bm (Tracking camera robot)
Da vo lu thut ton ta c th hnh dung v mt h thng bm tng quan
nht c th xy dng c mt thut ton iu khin ti u ph hp vi h
thng, p ng cc yu cu t ra ca bi ton. Sau bc khi to ban u mc
tiu s c a vo h cm bin hnh nh chp nh, sau c ly mu tn
hiu t khng gian mu RGB n khng gian mu HSV. Mi mu sc t nhin u
c t hp t 3 mu c bn: R (red), xanh lc G (green) v xanh dng B
(blue). tiu chun ha vic o mu sc trn th gii, da vo kt qu thcnghim ngi ta qui nh 3 mu c bn ny tng ng vi cc bc sng 700nm
Start
Chp nh
Ly mu
Histogram
Lc nhiu
Camshift
Tnh ta tm, hng
Giao tipRS232,RF
iu kindng
Khi to
Dng
Hnh 3.1: Lu thut ton bm i tng
7/30/2019 Do an Tot Nghiep_thanh(Ok)
29/78
29
i vi (R), bc sng 546,8 nm i vi (G) v 435,8 nm i vi (B). Ba mu c
bn ny l to ra cc mu khc vi t l pha trn tng ng. VD: vng =
+xanh lc (tham kho thm ti: http://vi.wikipedia.org/wiki/ ) cm nhn mu
sc th c 3 thuc tnh ch yu:
Sc mu (Brightness), cn gi l chi.
Sc lng (Hue), cn gi l sc thi mu.
bo ha mu (Saturation)
C th chuyn i t khng gian mu RGB sang khng gian mu HSV v
ngc li, chnh nh s chuyn i ny m chng ta c th lp trnh ly mu tn
hiu thu c t camera. V c th ni trong OpenCV c hm cvCvtColor() chuyn
dng thc hin nhim v ny.
Histogram chnh l qu trnh m t i tng, thng tin hnh nh v video
di dng biu (Histogram) d quan st. Histogram c th s dng ch ras khc nhau gia cc i tng v ch ra xc sut phn b mu sc. Thc hin qu
trnh to Histogram lin tip v quan st nu thy Histogram no gn ging vi
Histogram ca i tng nht th s c chn, y cng chnh l mt trong nhng
yu t cn thit trong thut ton bm nh ca cng ngh x l nh ni chung v th
vin OpenCV ni ring.
Hnh 3.2: Khng gian mu RGB v khng gian mu HSV
7/30/2019 Do an Tot Nghiep_thanh(Ok)
30/78
30
Lc nhiu nhm mc ch loi b can nhiu ly ra c tn hiu chnh xc
cn ly mu. C th ni rng nhiu pht sinh trong qu trnh x l nh l rt ln do
vy cn phi loi b nhiu bng cc b lc nh Kalman hay b lc g-h hay g-h-k
T nhng yu t trn thut ton bm ca h l nh sau: phi c th ly mu v
chuyn i c gia cc khng gian mu RGB v HSV v ngc li, phi to ra
Histogram so snh a ra lut iu khin, v quan trng phi xc nh c c
tnh ca nh.Tnh ton c trng tm v hng ca vt th c kt hp cc b lc
nhm loi b nhiu vo h thng.
Hnh 3.3: Histogram ca hai ln ly mu
Hnh 3.3: Kt qu trc khi lc v sau khi lc
7/30/2019 Do an Tot Nghiep_thanh(Ok)
31/78
31
3.2 Thut ton Camshift trong ti u ha h bm i tng
Trong x l nh vic i nghin cu thut ton bm i tng l rt quan trng,
mt s thut ton thng gp l: thut ton KLT, phng php Correlation-base
template matching, thut ton Meanshift, thut ton Camshift.
Thut ton KLT vit tt ca tn hai nh nghin cu Lucas and Kanade v
Tomasi kt hp vi Birchfield vo nm 1991 cho ra i thut ton x l bm cc
c tnh ca nh, c thc thi bng ngn ng C v c gi l thut ton bm
KLT (KLT tracker). Thut ton KLT dng ton hc tnh ton ra cc c tnh sau
cng dng ton hc tnh ra xc sut xut hin ca cc c tnh trong ln di
chuyn tip theo. N c nhc im l rt phc tp v lp trnh tn b nh ca
chng trnh, t l trt cao v kh chn ra c tnh ca i tng v ch ph hp
vi 1 i tng c lp trnh t trc, khi bm i tng khc th phi lp trnh v
ly li c tnh cho i tng mi.
Phng php Correlation-base template matching l phng php so snh vi
mt nh hoc th vin mu c sn (template), do vy phi dng ton bnh ca i
tng ch khng phi dng mt s im nh nh cc thut ton khc, ng thikhng dng cc thng tin chuyn ng, tnh ton nhiu hn nn khi lng chng
trnh rt ln.
Thut ton Meanshift c pht trin t phng php Gauss dng c lng
i tng trn mt ca snh c nh, chia nh ca i tng thnh cc ma trn
im nh (pixel) sau thc hin c lng cc im nh ny bng phng php
Gauss, sau tnh trung bnh cc pixel trn khung nh c nh ca i tng,qu trnh lp li cho n khi hi t c th tham kho thm ti trang web sau hiu
thm v phng php Gauss:
(http://saravananthirumuruganathan.wordpress.com/2010/04/01/introduction-
to-mean-shift-algorithm/)
Cui cng l thut ton Camshift, Camshift vit gn ca Continuously
Adaptive Meanshift l c sca thut ton theo di khun mt trong OpenCV. N
bao gm thut ton c s Meanshift vi thch ng cc bc thay i kch cca
7/30/2019 Do an Tot Nghiep_thanh(Ok)
32/78
32
vng. Nhn l mt hm step n gin nm trong mt bn v xc sut (skin-
probability). V xc sut ca mi im nh c tnh ton da trn mu sc bng
cch s dng mt phng php gi l Histogram backprojection. Mu sc c a
ra nh sc thi mu (Hue) t m hnh HSV. Trong thut ton Camshift, mt bcnh v xc sut phn b mu ca bc nh trong chui video c to ra. u tin
n to ra mt mu m t Hue s dng mt biu mu sc (color Histogram) v s
dng khng gian mu Hue Saturation Value (HSV) c tham chiu t khng gian
mu tiu chun RGB. V phn b mu sc ca bc nh trong video thay i theo
thi gian, nn thut ton Camshift c sa i d dng thch ng vi s thay
i phn b xc sut mu sc ca mc tiu n theo di. Trong OpenCV thut ton
Camshift c iu chnh t thut ton Meanshift. N c tnh ton nh sau:
Bc 1: Chn v tr ban u ca Search Window.
Bc 2: Dng thut ton Meanshift (lp mt hoc nhiu ln) lu ra mt vng gi l
moment th 0.
Bc 3: t kch cca ca s tm kim bng mt hm ca moment th 0 tm c
trong bc 2.
Bc 4: Lp li bc 2 v bc 3 cho n khi hi t.
Vi nhng u im ca thut ton Camshift trong vic x l nh bm i
tng v nhn din nh, kt hp vi ngn ng C ti la chn v xy dng ring
cho ti ca mnh mt thut ton ti u trong vic x l nh bm i tng. Thut
ton Camshift c c th ha bng lu hnh 3.4. u tin l mt Histogram
c to ra, Histogram ny cha cc thuc tinh lin quan n mu sc v tip theo
tm v kch cca mc tiu c tinh ton theo di mc tiu khi hnh dng v
kch cca n thay i. Tnh xc sut phn b mc tiu cn c v Histogram nhn
c. Dch chuyn n v tr mi vi mi khung hnh va nhn c t video.
Camshift s dch chuyn n v tr m n c lng trn i tng n m n tp
trung nhiu im sng nht trong bc nh xc sut. n tm v tr mi bt u t v tr
trc v tnh ton gi tr trng tm va tm c. OpenCV s dng hm
cvCamshift() thc hin chuyn dch ny. Vic tnh ton trng tm da vo thut
ton Meanshift.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
33/78
33
Chpnh
RGB HSVTnh tonHistogram
Xc sutphn b
muCamshift
Reset vngtnh ton
t tm searchwindow
Video
To v tr vkch csearch
window
X,Y
Hnh 3.4: Lu thut ton Camshift
Hnh 3.5: Kt qu ca vic thc hin hm Camshift trong victnh ta ca mc tiu
7/30/2019 Do an Tot Nghiep_thanh(Ok)
34/78
34
Chng 4: XY DNG, THI CNG PHN CNGV LP TRNH PHN MM CHO H THNG BM
I TNG
4.1Tng quan v cc linh kin xy dng phn cng
Vic chn la cc linh kin xy dng mch phn cng l rt quan trng sau
khi xy dng xong thut ton x l ti u. Trong h thng ny ngoi b vi x l
chung l my tnh laptop cn c mt khi giao tip thc hin bt tay gia
camera, c cu chp hnh v my tnh. p ng yu cu v kh nng iu
khin c cu chp hnh v va c kh nng x l, chng nhiu tt ti quyt nh
chn v s dng vi iu khin AVR, ATmega128 v n c y tnh nng v c
kh nng chng nhiu tt. s dng iu khin cc c cu chp hnh v kim sot
tc v gc quay ti s dng mt s linh kin chuyn dng iu khin cu
ng c l dng MC ca Freescale v DVR ca Texas Intrument. Vi mc ch
xy dng mt kit vi iu khin a nng c th va thc hin nhim v iu khin c
cu chp hnh va c kh nng thc hin nhim v x l tn hiu t cc cm bin
trong cng nghip nh PIR, IR ca Sharp, cm bin gia tc v nghing ADXLhay MMA7455 v c th giao tip RS232 hoc giao tip khng dy RF phc
v qu trnh truyn v x l tn hiu.
Gii thiu vvi iu khin ATmega128
Atmega 128 l mt b vi x l CMOS in p thp da trn nn kin trc
AVR RISC nng cao . Bng cch thi hnh cc lnh mt cch mnh m trong mt
chu k ng h duy nht, Atmega128 c th cho php tc t c l 1 MPIStrn 1 MHz t gip ngi thit k h thng c kh nng ti u ha in nng s
dng so vi tc x l.
4.1.1 Nhng Tnh Nng Chnh Ca ATmega128:
ROM : 128 Kbytes SRAM: 4Kbytes EEPROM : 4Kbytes 64 thanh ghi I/O
7/30/2019 Do an Tot Nghiep_thanh(Ok)
35/78
35
160 thanh ghi vo ra mrng 32 thanh ghi a mc ch. 2 b nh thi 8 bit (0,2). 2 b nh thi 16 bit (1,3). B nh thi watchdog B dao ng ni RC tn s 1 MHz, 2 MHz, 4 MHz, 8 MHz ADC 8 knh vi phn gii 10 bit ( dng Xmega ln ti 12 bit) 2 knh PWM 8 bit 6 knh PWM c th lp trnh thay i phn gii t 2 ti 16 bit B so snh tng t c th la chn ng vo Hai khi USART lp trnh c Khi truyn nhn ni tip SPI Khi giao tip ni tip 2 dy TWI H trboot loader 6 ch tit kim nng lng La chn tn s hot ng bng phn mm ng gi 64 chn kiu TQFP. Tn s ti a 16MHz in th : 4.5v - 5.5v (Ring dng ATmega128L th ngun
cung cp l 3.3V)
S chn:
Hnh 4.1: S chn ca ATmega128
7/30/2019 Do an Tot Nghiep_thanh(Ok)
36/78
36
4.1.2 Cu trc ca ATmega128
4.1.3 Cng v ra
Cng vo ra l mt trong s cc phng tin vi iu khin giao tip vi cc
thit b ngoi vi. ATmega128 c c thy 7 cng ( port ) vo ra 8 bit l : PortA,PortB, PortC, PortD, PortE, PortF, PortG, tng ng vi 56 ng vo ra. Cc cng
vo ra ca AVR l cng vo ra hai chiu c th nh hng, tc c th chn hng
ca cng l hng vo (input ) hay hng ra (output ). Tt cc cc cng vo ra ca
AVR iu c tnh nng c Chnh sa Ghi ( Read Modify write ) khi s
dng chng nh l cc cng vo ra s thng thng. iu ny c ngha l khi ta
thay i hng ca mt chn no th n khng lm nh hng ti hng ca cc
chn khc. Tt c cc chn ca cc cng (port ) iu c in trko ln ( pull-up )
ring, ta c th cho php hay khng cho php in trko ln ny hot ng. in
Hnh 4.2: S cu trc ca ATmega128
7/30/2019 Do an Tot Nghiep_thanh(Ok)
37/78
37
trko ln l mt in tr c dng khi thit k cc mch in t logic. N c mt
u c ni vi ngun in p dng (thng l Vcc hoc Vdd) v u cn li
c ni vi tn hiu li vo/ra ca mt mch logic chc nng. in trko ln c
th c lp t ti cc li vo ca cc khi mch logic thit lp mc logic livo ca khi mch khi khng c thit b ngoi ni vi li vo. in tr ko ln
cng c th c lp t ti cc giao din gia hai khi mch logic khng cng loi
logic, c bit l khi hai khi mch ny c cp ngun khc nhau. Ngoi ra, in
trko ln cn c lp t ti li ra ca khi mch khi li ra khng th ni ngun
to dng, v d cc linh kin logic TTL c cc gp h. i vi h logic lng
cc vi ngun nui 5 Vdc th gi tr ca in tr ko ln thng nm trong khong
1000 n 5000 Ohm, ty theo yu cu cp dng trn tongii hot ng ca mch.
Vi lgc CMOS v lgc MOS chng ta c th s dng cc in trc gi tr ln
hn nhiu, thng t vi ngn n mt triu Ohm do dng r r cn thit li vo l
rt nh. Trong vic thit k cc vi mch ng dng, nu mt IC c ng ra loi cc
thu hgiao tip vi nhiu IC khc th gi tr ca in trko ln s tng i
nh (khong vi trm Ohm). Bi v lc ny h s fanout ln dn n dng ng ra
ca IC phi ln cung cp cho cc ng vo ca cc IC khc, nu khng vi
mch s hot ng chp chn hoc c th khng hot ng.
Khi kho st cc cng nh l cc cng vo ra s thng thng th tnh cht ca
cc cng ( PortA, PortB,PortG ) l tng t nhau, nn ta ch cn kho st mt
cng no trong s 7 cng ca vi iu khin l . Mi mt cng vo ra ca vi
iu khin c lin kt vi 3 thanh ghi : PORTx, DDRx, PINx. ( y x l thay
th cho A, B,G ). Ba thanh ghi ny s c phi hp vi nhau iu khin hot
ng ca cng, chn hn thit lp cng thnh li vo c s dng in trpull-up,
..v.v.. . Sau y l din t c th vai tr ca 3 thanh ghi trn.
Thanh Ghi DDRx.y l thanh ghi 8 bit ( c th c ghi ) c chc nng iu khin hng ca
cng (l li ra hay li vo ). Khi mt bit ca thanh ghi ny c set ln 1 th chn
tng ng vi n c cu hnh thnh ng ra. Ngc li, nu bit ca thanh ghi
DDRx l 0 th chn tng ng vi n c thit lp thnh ng vo. Ly v d: Khi
ta set tt c 8 bit ca thanh ghi DDRA u l 1, th 8 chn tng ng ca portA l
7/30/2019 Do an Tot Nghiep_thanh(Ok)
38/78
38
PA1, PA2, PA7 ( tng ng vi cc chn s 50, 49, 44 ca vi iu khin )
c thit lp thnh ng ra.
Thanh Ghi PORTx.PORTx l thanh ghi 8 bit c th c ghi. y l thanh ghi d liu ca PORTx,
Nu thanh ghi DDRx thit lp cng l li ra, khi gi tr ca thanh ghi PORTxcng l gi tr ca cc chn tng ng ca PORTx, ni cch khc, khi ta ghi mt gi
tr logic ln 1 bit ca thanh ghi ny th chn tng ng vi bit cng c cng mc
logic. Khi thanh ghi DDRx thit lp cng thnh li vo th thanh ghi PORTx ng
vai tr nh mt thanh ghi iu khin cng. C th , nu mt bit ca thanh ghi ny
c ghi thnh 1 th in tr treo ( pull-up resistor ) chn tng ng vi n s
c kch hot, ngc li nu bit c ghi thnh 0 th in tr treo chn tng
ng s khng c kch hot, cng trng thi cao tr( Hi-Z ).
Thanh Ghi PINx.PINx khng phi l mt thanh ghi thc s, y l a ch trong b nhI/O kt
ni trc tip ti cc chn ca cng. Khi ta c PORTx tc ta c d liu c cht
trong PORTx, cn khi c PINx th gi tr logic hin thi chn ca cng tng
ng c c. V th i vi thanh ghi PINx ta ch c th c m khng th ghi.Hnh 4.5 th hin cc cc thit lp cch hot c th c ca cng.
Hnh 4.3: Thanh ghi DDRx
Hnh 4.4: Thanh ghi PORTA
7/30/2019 Do an Tot Nghiep_thanh(Ok)
39/78
39
4.1.4 Cc b nh thi, cu trc ngt, module PWM, USART/UART v cc
ngoi vi khc
ATmega128 c 4 b nh thi , b nh thi 1 v 3 l b nh thi 16 bit, b
nh thi 0 v 2 l b nh thi 8 bit (Timer/Couter0 v Timer/Couter2 vi 2
module PWM 8bit).
Hnh 4.5: Thanh ghi PINA
Hnh 4.6: Cch thit lp cho cng
Hnh 4.7: B nh thi Timer/Counter0 vi module PWM 8bit
7/30/2019 Do an Tot Nghiep_thanh(Ok)
40/78
40
4.1.5 Truyn nhn ni tip
USART (Universal Synchronous and Asynchronous serial Receiver and
Transmitter): B Truyn Nhn Ni Tip ng B V Bt ng B Ph Dng, y
l khi chc nng dng cho vic truyn thng gia vi iu khin vi cc thit b
khc. Trong vn truyn d liu s, c th phn chia cch thc (method) truyn
d liu ra hai ch (mode) c bn l : Ch truyn nhn ng b(Synchronous)
v Ch truyn nhn btng b(Asynchronous). Ngoi ra, nu gc phn
Hnh 4.8: B nh thi Timer/Counter 2 vi module
PWM 8 bit
Hnh 4.8: B nh thi 16 bit
7/30/2019 Do an Tot Nghiep_thanh(Ok)
41/78
41
cng th c th phn chia theo cch khc l: Truyn nhn d liu theo kiu ni
tip (serial) v song song(paralell).
Truyn ng b: l kiu truyn d liu trong b truyn
(Transmitter) v b nhn (Receiver) s dng chung mt xung ng h
(clock). Do , hot ng truyn v nhn d liu din ra ng thi. Xung
clock ng vai tr l tn hiu ng b cho h thng (gm khi truyn v khi
nhn). u im ca kiu truyn ng b l tc nhanh, thch hp khi
truyn d liu khi (block).
Truyn bt ng b:L kiu truyn d liu trong mi b truyn
(Transmitter) v b nhn (Receiver) c b to xung clock ring, tc xung
clockhai khi ny c th khc nhau, nhng thng khng qu 10 o/o . Do
khng dng chung xung clock, nn ng b qu trnh truyn v nhn d
liu, ngi ta phi truyn cc bit ng b (Start, Stop,) i km vi cc bit
d liu. Cc b truyn v b nhn s da vo cc bit ng b ny quyt
nh khi no th s thc hin hay kt thc qu trnh truyn hoc nhn d liu.
Do , h thng truyn khng b cn c gi l h thng truyn t
ng b.
T hai kiu truyn d liu c bn trn, ngi ta a ra nhiu giao
thc (Protocol) truyn khc nhau nh: SPI (ng b), USRT (ng b), UART (bt
ng b),Tuy vy, cng c giao thc truyn m khng th xp c vo kiu
no: ng b hay bt ng b, chn hn kiu truyn I2C (Trong AVR gi l TWI),
tuy vy mt cch hi gng p th c th thy giao thc truyn I2C gn vi kiu
ng b hn v cc thit b giao tip vi nhau theo chun I2C iu dng chung mt
xung clock. S khi ca cu trc truyn nhn ni tip USART v UART ca
ATmega128, ATmega128 c hai b USART l USART0/UART0 v
USART1/UART1, dng trong truyn nhn ni tip ng b v khng ng b.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
42/78
42
4.1.6 B bin i ADC
B ADC chc nng bin i tn hiu tng t (analog signal) c gi tr thay
i trong mt di bit trc thnh tn hiu s (digital signal). B ADC ca
ATmega128 c phn gii 10 bit, sai s tuyt i 2 LSB, di tn hiu ng
vo t 0V VCC, tn hiu ng vo c nhiu la chn nh : c 8 ng vo a hp
n hng
(Multiplexed Single Ended), 7 ng vo vi sai (Differential Input), B ADC
ca
ATmega128 l loi ADC xp x lin tip (succesive approximation ADC) vi
hai ch hot ng c th lu chn l chuyn i lin tc (Free Running) v
chuyn i tngbc (Single Conversion). S khi n gin ca mt b ADC
c th hin hnh
Hnh 4.9: S khi b truyn nhn ni tip
7/30/2019 Do an Tot Nghiep_thanh(Ok)
43/78
43
Nguyn tc hot ng ca khi ADC : Tn hiu tng t a vo cc ng
ADC0:7 c ly mu v bin i thnh tn hiu s tng ng. Tn hiu s c
lu trong hai thanh ghi ACDH v ADCL. Mt ngt c th c to ra khi hon
thnh mt chu trnh bin i ADC.
Thc t, b ADC ca ATmega128 phc tp hn nhiu, tuy nhin c s vn
da vo nguyn tc trn. kho st b ADC ca ATmega128 ta cn tm hiu cc
khi chc nng sau:
in ThTham Chiu: l gi tr in th dng so snh vi inth ca tn hiu tng t cn bin i ng vo ADC. ATmega128 c 3 la
chn in th tham chiu l AVCC bng vi VCC, in th tham chiu ni
2.56v, v Vref l ty chn. Bn c cn l AVR c 2 ngun in th
tham chiu ni l internal reference= 2.56v v bandgap reference= 1.24v.
in th bandgap referencel mt hng s vt l, n lun l 1.24v, cn in
th internal reference th c th thay i ty theo cc dng chip khc nhau.
Trong AVR, internal referencec to ra t bandgap reference. Trong ti
Hnh 4.10: B bin i ADC n gin
7/30/2019 Do an Tot Nghiep_thanh(Ok)
44/78
44
liu ny, tc gi iu dch hai dng in th trn iu l in th tham chiu
ni, tuy vy, bn c nn hiu s khc nhau gia hai khi nim trn.
Tn SClock ADC: l tn s clock cung cp cho b bin i ADC,gi tr c ththay i t vi KHz n vi MHz. Tuy nhin, tn s thch hpkhong t 50KHz n 200KHz cho phn gii 10 bit v c th cao hn
200KHz nu phn gii thp hn.
Ng Vo Tng T: ATmega128 c hai la chn ng vo tngt:
10 ng vo n hng (single ended): 10 ng vo ny lADC0:7, AGND v bandgap reference. Thc t ta thng dng 8 ng
vo ADC0:7. V c 8 ng vo ADC0:7 nn ta c th a vo 8 tn hiu
tng t khc nhau. Khi la chn ng vo kiu ny (tc kiu single
ended) th kt qu chuyn i c tnh nh sau:
(4.1)
Ng vo vi sai: Ta c th a hai tn hiu tng t vo ngvo ADC, hai tn hiu tng t ny s qua mt b vi sai (mch tr), kt
qung ra c th c khuch i ri sau mi a vo khi ADC
bin i. B vi sai c 2 ng vo l Vpos(ng vo dng) v Vneg(ng
vo m). Cc chn ADC3:7 dng lm ng vo dng, cc chn ADC0:2
l ng vo m, i vi la chn ny, kt qu ADC s l :
(4.2)
y Gainl li c th ty chn. Cng thc trn cho thy kt qu ADC c
th l s m khi Vpos < Vneg. Do , di gi tr ca ADC trong trng hp ny l -
512 ti 511. V vy, kt qu trong thanh ghi ADC c biu din di dng s b
2. bit c kt qu l s m hay dng ta kim tra bit ADC9 (trong thanh ghi
7/30/2019 Do an Tot Nghiep_thanh(Ok)
45/78
45
ADCH), nu bit ny l 1 th kt qu l s m, nu bit ny l 0 th kt qu l s
dng.
Ch : in thqua b vi sai c th m, nhng in thcp cc ng vo
ADC0:7 (cho c hai trng hp ng vo vi sai v ng vo n hng) phi lunnm trong khong0v AVCC.
Ch Hot ng: C hai ch hot ng ca b ADC lchuyn i lin tc (Free Running) v chuyn i tng bc (Single
Conversion).- Chuyn i lin tc: l ch m sau khi khi ng th b ADC thc
hin chuyn i lin tc khng ngng.
- Chuyn i tng bc: l m b ADC sau khi hon thnh mt chuyn
i th s ngng, mt chuyn i tip theo ch c bt u khi phn mm c
yu cu chuyn i tip.
hiu r thm v cc thng s ca ATmega128 ta c th tra cu trong datasheetca ATmega128 ca Atmel cung cp.
Hnh 4.11: Ng vo vi sai
7/30/2019 Do an Tot Nghiep_thanh(Ok)
46/78
46
Cc b Driver iu khin ng c
4.1.7 B Driver iu khin ng c dng IC chuyn dng DVR8432 (TI)
DVR8432 l IC chuyn dng iu khiu khin ng c c tch hp b
cu H bn trong vi cc ch c thit lp bn ngoi, c b bo qu dng,qu
p, qu nhit v mch bo v.
Hnh 4.12: S khi v s chn caDVR8432
7/30/2019 Do an Tot Nghiep_thanh(Ok)
47/78
47
DVR8432 c c im sau:
Ngun cp iu khin VDD v GVDD l t 10.8V n 13.2V (yu cu ngun
chun)
Ngun ng lc PVDD trong di t 0V n 70VDng chu ti 2 x 7A trong trng hp hai knh cng hot ng lin tc, v
14A trong khi hot ng ch song song.
PWM hot ng tn s cao c th ln ti 500KHz.
DVR thch hp cho vic iu khin cc ng c DC trong cng nghip v
trong nghin cu iu khin chnh xc.
4.1.8 B Driver iu khin ng c dng MC33486 v MC33887, MC33932
(Hng Freescale)
c im:
in p hot ng t : 5VDC -28VDC.
Dng in cc i ca ti ln ti 10A i vi MC33486 v 5A i vi
MC33887, MC33932
Tn s xung PWM ti a ln ti 10kHz.
MC 33887 tch hp bn trong 1 b cu H nn ch iu khin c mt ng
c, MC33486 iu khin hai FET iu khin ng c vi dng ti ln ti 10A
ring MC33932 c tch hp bn trong hai b cu H nn iu khin c hai ng
c DC cng lc.
Hnh 4.13: S khi ca MC 33486,MC33887,MC33932
7/30/2019 Do an Tot Nghiep_thanh(Ok)
48/78
48
4.2 Xy dng phn cng v phn mm ca h thng bm i tng
Cu trc ca h bm gm hai phn chnh. Phn 1 x l nh da vo chui hnh
nh thu c t camera nhn dng v tnh ton v tr ca i tng mc tiu.
Phn 2 l phn iu khin, da vo thng s v tr i tng nhn c trong mt
phng nh, tnh ton tn hiu iu khin r bt sao cho i tng di chuyn cduy tr mt v tr nht nh trn mt phng nh v mt khong cch nht nh.
Trong qu trnh tm kim ta chia bc nh thnh nhiu pixel bao gm hai thnh phn
hoc thuc i tng hoc thuc nn. Qua ta tin hnh x l cc gi tr thuc
tnh ca i tng trong v tr mi v nhn dng c i tng cn theo di.Mt
phng nh l mt phng c gc nm pha trn bn tri, truc x l trc nm ngang, trc
Y1
X1
y
x
Hnh 4.14: Mt phng nh
0
Camera X l nh
frame RFRS232
ATmega128
RFRS232
Driver KC
Cng tchnh trnh
Cm bin
ng c
Mch VKMy tnh v lu tr
Hnh 4.13: Cu trc h bm ca ti
7/30/2019 Do an Tot Nghiep_thanh(Ok)
49/78
49
Cn c vo v tr dch chuyn ca i tng trn mt phng nh so vi gc ta
m ta tnh ton c cc kh nng di chuyn ca r bt sao cho i tng nm
mt v tr bt k trn mt phng nh.
Nh vy tt c cc yu t cn thit xy dng mt h thng trin khai thc
nghim y , ta tin hnh v thit k phn cng v lp trnh phn mm.
4.2.1 Phn cng
Mch phn cng c chia lm 4 khi nh sau:
-Khi iu khin trung tm ATmega128-Khi ngun cung cp (Ngun iu khin+ng lc)-Khi Driver iu khin ng c-Khi truyn thng RF v RS232
Khi iu khin trung tm ATmega128:
Hnh 4.15: Mch iu khin trung tm ATmega128
7/30/2019 Do an Tot Nghiep_thanh(Ok)
50/78
50
Khi ngun cung cp:
Khi giao tip RS232 v RF:
Hnh 4.16: Mch ngun
Hnh 4.17: Mch giao tip RS232 v RF
7/30/2019 Do an Tot Nghiep_thanh(Ok)
51/78
51
Khi Driver iu khin ng c:
-MC33486:
-MC33887:
Hnh 4.18: Mch iu khin ng c 33486
Hnh 4.19: Mch MC33887
7/30/2019 Do an Tot Nghiep_thanh(Ok)
52/78
52
-MC33932:
-DVR8432:
Hnh 4.20: Mch MC33932
Hnh 4.21: Mch DVR8432
7/30/2019 Do an Tot Nghiep_thanh(Ok)
53/78
53
-DVR8432 kit:
Hnh nh mch thc tca h thng:
Hnh 4.22: DVR8432 kit
Hnh4.23: Mch MC thc t
7/30/2019 Do an Tot Nghiep_thanh(Ok)
54/78
54
Dff
Hnh 4.24: Mch DVR8432 thc t
Hnh 4.25: Mch iu khin trung tm ATmega128
7/30/2019 Do an Tot Nghiep_thanh(Ok)
55/78
55
4.2.2 Giao din phn mm:
Giao din phn mm c tht k thnh cc version vi nhiu nhim v khcnhau.
-Giao din thnht: giao din phn mm bm mc tiu di ng dng thutton Meanshift, c kh nng chp nh, lu nh v quay, lu video.
Hnh 4.26: Giao din phn mm dng thut ton Meanshift
7/30/2019 Do an Tot Nghiep_thanh(Ok)
56/78
56
-Giao din thhai: Sdng thut ton Camshift trn VC++ 6.0
Hnh 4.27: Giao din phn mm trn VC++ 6.0
7/30/2019 Do an Tot Nghiep_thanh(Ok)
57/78
57
-Giao din thba:giao din ny c xy dng y trn Visual C++ 2008vi y chc nng ca mt h thng bm.
Hnh 4.27: Giao din phn mm trn VC++ 2008
7/30/2019 Do an Tot Nghiep_thanh(Ok)
58/78
58
Chng 5: NH GI V CHY THNGHIMH THNG
5.1 nh thc nghim ca m hnh h thng
Hnh 5.1:nh h thng thc tchy thnghim khitruyn khng dy v thng qua RS2323
7/30/2019 Do an Tot Nghiep_thanh(Ok)
59/78
59
5.1 nh gi kt qu t c
n xy dng c mt h thng camera r bt bm mc tiu di ng, c
v phn cng ln chng trnh phn mm v giao din iu khin mc tiu l cc
i tng mu sm, h thng bm tt trong iu kin nh sng tt v camera x l
tt. Mc tiu ca ti hng ti vic a cng ngh x l nh vo trong iukhin cng nghip v trong r bt pht trin da trn h thng camera thng minh.
Nhm phc v cc cng tc d tm pht hin vt thnhng iu kin m con
ngi khng th ti c nh d mn, thm him thu thp d liu hoc phc v
trong cng tc an ninh. Hon chnh c c phn cng ln phn mm ca r bt,
tin hnh chy th nghim nhiu dng mi trng khc nhau, ban ngy, ban m,
nh sng yu, ng thng, vng trn, v kt qu, r bt camera lun gi c
i tng nm trn mt phng nh m ta chn.
Bo co ny m t h thng r bt camera r bt bm i tng s dng th
vin x l nh OpenCV ca Intel. Thut ton s dng nhn nh t Camera tin
hnh kh nhiu, histogram, s dng thut ton Camshift, tnh ton ta tm, kch
c, gc, thit k khi vi iu khin giao tip qua cc chun RS232 v chun RF s
dng Mscomm trong Visual C. Thit k mch iu khin ng c s dng vi iu
khin ATmega128 v cc IC chuyn dng iu khin cu iu khin ng c DC v
7/30/2019 Do an Tot Nghiep_thanh(Ok)
60/78
60
kim sot tc gc quay. Di iu kin nh sng nht nh i tng c th
c tm ra nhanh chng chnh xc m t bnh hng ca nhiu.
Tuy nhin h thng ang trong giai on pht trin nn vic thit k c kh
cha c tt, thm m cha cao, v mun h thng chy n nh tt hn na cnphi thit k h thng c kh chnh xc. Chng trnh s dng thut ton Camshift
phi c kim nghim v pht trin c th chn ra thut ton ti u hn
na.Kt hp vi b lc Kalman tng kh nng chnh xc, nhng iu ny s
c b xung trong thi gian gn y c th c mt h thng hon ho. trong
thi gian ti s nghin cu a ng dng mng nron (tr tu nhn to) vo cng
ngh x l nh v trong cng ngh bm nh v nhn dng nh. cng chnh l
hng pht trin ca ti trong thi gian ti.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
61/78
61
KT LUN
Trong thi gian nghin cu cng vi nhng nh hng v hng dn qu bu
ca c H Th Kim Duyn, em hon thnh n ca mnh. C th ni rng n
ny bc u l nn tng nh hng cho em nghin cu v pht trin trong tng
lai.
n gii quyt c phn no bi ton bm nh c mu sc c nh (c
th y l nh mu ti).
V mt l thuyt:
-Tng quan v x l nh v th vin m ngun m Opencv
-Tm hiu v xy dng c thut ton x l nh ti u trong h bm-Tm hiu v h thng bm i tng v cc h tracking r bt.
Tuy nhin cng phi ni rng d c gng rt nhiu, nhng chng em vn
khng trnh khi nhng sai st trong vic xy dng v thit k h thng cng nh l
cch thc trnh by mt n tt nghip, v vy chng em rt mong nhn c s
ch bo v ng gp kin ca cc thy c gio cng nh cc bn sinh vin quan
tm n vn ny n ca em hon thin hn.
Em xin chn thnh cm n!
7/30/2019 Do an Tot Nghiep_thanh(Ok)
62/78
62
Ti liu tham kho
Ting Vit:
1. Nhp mn x l nh s, H Bch Khoa H Ni.
2. Nguyn Vn Ng (2001), x l nh (dch t quyn Two Dimensional Signal
and Image Processing ca tc gi Jae S.Lim)
3. Nguyn Kim Sch (1997), x l nh v video s, NXB Khoa hc k thut,
H Ni.
4. Ng Din Tp (1997) , x l nh bng my tnh, NXB Khoa hc k thut
H Ni.
Ting Anh:
1. David A. Forsyth & Jean Ponce (2003),Computer vision a modermapproach, Prentic Hall PTR.
2. D.H. Ballard & C.M.Brown (1997), Computer vision, Prentice Hall PTR.3. Jae S. Lim (1999),Two-Dimensional Signal and Image Processing.
Trang Web:
1.http://dientuvietnam.net.2.http://picvietnam.com.
3.http://sourceforge.net/opencv/library.
4.http://atmel.com.
5.http://ti.com/forum.
6.http://freescale.com. v mt s bi bo v tp ch x l nh trn th gii.
7/30/2019 Do an Tot Nghiep_thanh(Ok)
63/78
63
Ph lc
Chng trnh xl nh trn my tnh dng th vin OpenCV:
//Chng trnh giao din 1 chy trn MFC Application VC++// OpencvUIDlgDlg.cpp : implementation file
//Chuong Trinh Dieu Khien ma nguon mo.
//By HA TIEN THANH
//=================Chuong trnh xl================
#include "stdafx.h"#include "OpencvUIDlg.h"
#include "OpencvUIDlgDlg.h"#include "cv.h"#include "highgui.h"
/////////////////////////////////////////////////////////////#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif#define new DEBUG_NEW
////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App AboutCvvImage m_CvvImage;CvCapture * m_Video;IplImage* m_Frame;//IplImage* m_GrabFrame;//CRect rect;CDC *pDC;HDC hDC;CWnd *pwnd;bool b_flagProcess;
bool b_flagSaveMovie=0;bool b_flagTracking=0;CvVideoWriter* m_Movie;char chEdit[10];double m_vieoProtery;int m_fameCount=0;long m_x,m_y,m_z;
//===============================IplImage *imageTrack = 0, *hsvTrack = 0, *hueTrack = 0;IplImage *maskTrack = 0, *backprojectTrack = 0, *histimgTrack = 0;//
CvHistogram *histTrack = 0;//int backproject_mode = 0;int select_object = 0;
7/30/2019 Do an Tot Nghiep_thanh(Ok)
64/78
64
int track_object = 0;int show_hist = 1;CvPoint origin;CvRect selection;CvRect track_window;CvBox2D track_box; // MeanshiftCvConnectedComp track_comp;int hdims = 50; //float hranges_arr[] = {0,180};//float* hranges = hranges_arr;//int vmin = 10, vmax = 256, smin = 30;int pointx, pointy;
class CAboutDlg : public CDialog{public:
CAboutDlg();
// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV
support//}}AFX_VIRTUAL
// Implementationprotected:
//{{AFX_MSG(CAboutDlg)virtual void OnOK();
//}}AFX_MSGDECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){
//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);
7/30/2019 Do an Tot Nghiep_thanh(Ok)
65/78
65
//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////// COpencvUIDlgDlg dialog
COpencvUIDlgDlg::COpencvUIDlgDlg(CWnd* pParent /*=NULL*/): CDialog(COpencvUIDlgDlg::IDD, pParent)
{//{{AFX_DATA_INIT(COpencvUIDlgDlg)
// NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in
Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void COpencvUIDlgDlg::DoDataExchange(CDataExchange* pDX){
CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(COpencvUIDlgDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COpencvUIDlgDlg, CDialog)//{{AFX_MSG_MAP(COpencvUIDlgDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_TIMER()ON_BN_CLICKED(IDC_OPENCAMERA, OnOpencamera)ON_BN_CLICKED(IDC_CLOSECAMERA, OnClosecamera)ON_BN_CLICKED(IDC_GRABFRAME, OnGrabframe)ON_BN_CLICKED(IDC_SAVEMOVIE, OnSavemovie)ON_BN_CLICKED(IDC_STOPSAVEMOVIE, OnStopsavemovie)ON_BN_CLICKED(IDC_STARTTRACKING, OnStarttracking)ON_BN_CLICKED(IDC_STOPTRACKING, OnStoptracking)
ON_WM_MOUSEMOVE()ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()
7/30/2019 Do an Tot Nghiep_thanh(Ok)
66/78
66
//}}AFX_MSG_MAPEND_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////// COpencvUIDlgDlg message handlers
BOOL COpencvUIDlgDlg::OnInitDialog(){
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){
CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){
pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,
strAboutMenu);}
}
// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
pwnd = GetDlgItem(IDC_SHOWPIC);pwnd->MoveWindow(35,30,640,480);
pDC =pwnd->GetDC();//pDC =GetDC();
hDC= pDC->GetSafeHdc();pwnd->GetClientRect(&rect);
CDC MemDC;CBitmap m_Bitmap1;m_Bitmap1.LoadBitmap(IDB_BLANK);
7/30/2019 Do an Tot Nghiep_thanh(Ok)
67/78
67
MemDC.CreateCompatibleDC(NULL);MemDC.SelectObject(&m_Bitmap1);
//CClientDC dc(this);pDC-
>StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,0,0,48,48,SRCCOPY);
m_Bitmap1.DeleteObject();MemDC.DeleteDC();b_flagProcess=0;Invalidate();SetDlgItemText(IDC_EDIT_TIME,"Stop");SetDlgItemText(IDC_EDIT_FRAME_WIDTH,"Stop");SetDlgItemText(IDC_EDIT_FRAME_HEIGHT,"Stop");SetDlgItemText(IDC_EDIT_FPS,"Stop");SetDlgItemText(IDC_EDIT_FOURCC,"Stop");SetDlgItemText(IDC_EDIT_FRAME_COUNT,"Stop");SetDlgItemText(IDC_EDIT_X,"Stop");SetDlgItemText(IDC_EDIT_Y,"Stop");SetDlgItemText(IDC_EDIT_Z,"Stop");
//////////////////////////////////////////////////////
return TRUE; // return TRUE unless you set the focus to a control}
void COpencvUIDlgDlg::OnSysCommand(UINT nID, LPARAM lParam){
if ((nID & 0xFFF0) == IDM_ABOUTBOX){
CAboutDlg dlgAbout;dlgAbout.DoModal();
}else{
CDialog::OnSysCommand(nID, lParam);}
}
// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.
void COpencvUIDlgDlg::OnPaint(){if (IsIconic())
7/30/2019 Do an Tot Nghiep_thanh(Ok)
68/78
68
{CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);
// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icondc.DrawIcon(x, y, m_hIcon);
}else{
CDialog::OnPaint();}
if (!b_flagProcess){
CDC MemDC;CBitmap m_Bitmap1;m_Bitmap1.LoadBitmap(IDB_BLANK);MemDC.CreateCompatibleDC(NULL);MemDC.SelectObject(&m_Bitmap1);
//CClientDC dc(this);pDC-
>StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,0,0,48,48,SRCCOPY);
m_Bitmap1.DeleteObject();MemDC.DeleteDC();
}}
// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR COpencvUIDlgDlg::OnQueryDragIcon(){
return (HCURSOR) m_hIcon;}
7/30/2019 Do an Tot Nghiep_thanh(Ok)
69/78
69
void COpencvUIDlgDlg::OnTimer(UINT nIDEvent){
// TODO: Add your message handler code here and/or call default/**************************************************************
**********//* *//**************************************************************
**********/m_Frame=cvQueryFrame(m_Video);
// cvNamedWindow("new",1);// cvShowImage("new",m_Frame);m_CvvImage.CopyOf(m_Frame,1);if (!b_flagTracking){
m_CvvImage.DrawToHDC(hDC, &rect);//cvWaitKey(10);
}b_flagProcess=1;
// KillTimer(nIDEvent);
//=====================================================m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_POS_
MSEC);
m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRAME_WIDTH);
itoa(m_vieoProtery,chEdit,10);SetDlgItemText(IDC_EDIT_FRAME_WIDTH,chEdit);m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRA
ME_HEIGHT);itoa(m_vieoProtery,chEdit,10);SetDlgItemText(IDC_EDIT_FRAME_HEIGHT,chEdit);
m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FPS);itoa(m_vieoProtery,chEdit,10);SetDlgItemText(IDC_EDIT_FPS,chEdit);
m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FOURCC);
m_fameCount++;m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRA
ME_COUNT);itoa(m_fameCount,chEdit,10);
SetDlgItemText(IDC_EDIT_FRAME_COUNT,chEdit);//============to trackbox==================m_x=track_window.x+track_window.width/2;
7/30/2019 Do an Tot Nghiep_thanh(Ok)
70/78
70
itoa(m_x,chEdit,10);SetDlgItemText(IDC_EDIT_X,chEdit);
m_y=track_window.y+track_window.height/2;itoa(m_y,chEdit,10);SetDlgItemText(IDC_EDIT_Y,chEdit);
m_z=(track_window.width+track_window.height)/2;itoa(m_z,chEdit,10);SetDlgItemText(IDC_EDIT_Z,chEdit);
//=============================================if (b_flagSaveMovie){
if (!m_Movie)return;
cvWriteFrame(m_Movie,m_Frame);}
//=====Chuyn i khng gian mu RGB => HSV=======
int i, bin_w, c;if (!b_flagTracking)
return;
cvCopy( m_Frame, imageTrack, 0 );cvCvtColor( imageTrack, hsvTrack, CV_BGR2HSV ); //
if( track_object )//{
int _vmin = vmin, _vmax = vmax;
cvInRangeS( hsvTrack,cvScalar(0,smin,MIN(_vmin,_vmax),0),cvScalar(180,256,MAX(_vmin,_vmax),0), maskTrack ); //
cvSplit( hsvTrack, hueTrack, 0, 0, 0 ); //
if( track_object < 0 )//{
float max_val = 0.f;cvSetImageROI( hueTrack, selection ); //cvSetImageROI( maskTrack, selection ); //
cvCalcHist( &hueTrack, histTrack, 0, maskTrack ); //
cvGetMinMaxHistValue( histTrack, 0, &max_val, 0, 0 );
7/30/2019 Do an Tot Nghiep_thanh(Ok)
71/78
71
cvConvertScale( histTrack->bins, histTrack->bins, max_val ?255. / max_val : 0., 0 ); //
cvResetImageROI( hueTrack ); // remove ROIcvResetImageROI( maskTrack );track_window = selection;track_object = 1;
cvZero( histimgTrack );bin_w = histimgTrack->width / hdims;
for( i = 0; i < hdims; i++ ){
int val = cvRound(cvGetReal1D(histTrack->bins,i)*histimgTrack-
>height/255 );CvScalar color = hsv2rgb(i*180.f/hdims);cvRectangle( histimgTrack,
cvPoint(i*bin_w,histimgTrack->height),cvPoint((i+1)*bin_w,histimgTrack->height -
val),color, -1, 8, 0 );//}
}
cvCalcBackProject( &hueTrack, backprojectTrack, histTrack ); //
cvAnd( backprojectTrack, maskTrack, backprojectTrack, 0 );//cvCamShift( backprojectTrack, track_window,cvTermCriteria(
CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ),&track_comp,&track_box );//
track_window = track_comp.rect;//
if( backproject_mode )cvCvtColor( backprojectTrack, imageTrack, CV_GRAY2BGR
); //if( imageTrack->origin )
track_box.angle = -track_box.angle;cvEllipseBox( imageTrack, track_box, CV_RGB(255,0,0), 3, CV_AA, 0 );//
}
if( select_object && selection.width > 0 && selection.height > 0 )//{
cvSetImageROI( imageTrack, selection );cvXorS( imageTrack, cvScalarAll(255), imageTrack, 0 );cvResetImageROI( imageTrack );
}
7/30/2019 Do an Tot Nghiep_thanh(Ok)
72/78
72
m_CvvImage.CopyOf(imageTrack,1);m_CvvImage.DrawToHDC(hDC, &rect);
//=============Thit lp timer================CDialog::OnTimer(nIDEvent);}
CvScalar COpencvUIDlgDlg:: hsv2rgb( float hue )//{
int rgb[3], p, sector;static const int sector_data[][3]={{0,2,1}, {1,2,0}, {1,0,2}, {2,0,1}, {2,1,0},
{0,1,2}};hue *= 0.033333333333333333333333333333333f;sector = cvFloor(hue);p = cvRound(255*(hue - sector));p ^= sector & 1 ? 255 : 0;
rgb[sector_data[sector][0]] = 255;rgb[sector_data[sector][1]] = 0;rgb[sector_data[sector][2]] = p;
return cvScalar(rgb[2], rgb[1], rgb[0],0);//}
void COpencvUIDlgDlg::OnOpencamera(){
// TODO: Add your control notification handler code here
//m_Video=cvCaptureFromCAM(-1);if (!m_Video)
m_Video=cvCreateCameraCapture(-1);//HIGHGUI//
if (!m_Video){
int nChoice = MessageBox("NoCamera","Note!",MB_OK|MB_ICONWARNING);
if(nChoice=IDOK) {}
return;
}SetTimer(1,100,NULL);
7/30/2019 Do an Tot Nghiep_thanh(Ok)
73/78
73
}
void COpencvUIDlgDlg::OnClosecamera(){
// TODO: Add your control notification handler code hereKillTimer(1);cvReleaseCapture(&m_Video);cvReleaseVideoWriter(&m_Movie);b_flagProcess=0;m_fameCount=0;b_flagSaveMovie=0;
CDC MemDC;CBitmap m_Bitmap1;m_Bitmap1.LoadBitmap(IDB_BLANK);MemDC.CreateCompatibleDC(NULL);MemDC.SelectObject(&m_Bitmap1);pDC-
>StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,0,0,48,48,SRCCOPY);
m_Bitmap1.DeleteObject();MemDC.DeleteDC();
SetDlgItemText(IDC_EDIT_TIME,"Stop");SetDlgItemText(IDC_EDIT_FRAME_WIDTH,"Stop");SetDlgItemText(IDC_EDIT_FRAME_HEIGHT,"Stop");SetDlgItemText(IDC_EDIT_FPS,"Stop");SetDlgItemText(IDC_EDIT_FOURCC,"Stop");SetDlgItemText(IDC_EDIT_FRAME_COUNT,"Stop");SetDlgItemText(IDC_EDIT_X,"Stop");SetDlgItemText(IDC_EDIT_Y,"Stop");SetDlgItemText(IDC_EDIT_Z,"Stop");
}
void COpencvUIDlgDlg::OnGrabframe(){
if (!m_Video){
int nChoice = MessageBox("Nocamera!","Note",MB_OK|MB_ICONWARNING);
if(nChoice == IDOK){};return;
}m_GrabFrame=cvQueryFrame(m_Video);
7/30/2019 Do an Tot Nghiep_thanh(Ok)
74/78
74
if (!m_GrabFrame)return;
static char countsnap='1';CString m_name="";m_name=+countsnap;m_name+=".bmp";
IplImage *m_snap=cvCreateImage(cvGetSize(m_GrabFrame),m_GrabFrame->depth,m_GrabFrame->nChannels);
cvCopy(m_GrabFrame,m_snap,NULL);m_snap->origin=0;const char* pszStr = m_name.GetBuffer(m_name.GetLength());cvSaveImage(pszStr,m_snap); //
countsnap++;
}
void COpencvUIDlgDlg::OnSavemovie(){
// TODO: Add your control notification handler code here//m_Movie=cvCreateVideoWriter("video.avi",-1,10,cvSize(352,288),1);if (b_flagProcess){
//m_Movie=cvCreateVideoWriter("video.avi",CV_FOURCC('P','I','M','1'),10,cvSize(352,288),1);
m_Movie=cvCreateVideoWriter("video.avi",-1,10,cvSize(640,480),1);
b_flagSaveMovie=1;}else
MessageBox("NoCamera","Note",MB_OK|MB_ICONWARNING);
}
void COpencvUIDlgDlg::OnStopsavemovie(){
// TODO: Add your control notification handler code herecvReleaseVideoWriter(&m_Movie);b_flagSaveMovie=0;
}void COpencvUIDlgDlg::OnStarttracking()
7/30/2019 Do an Tot Nghiep_thanh(Ok)
75/78
75
{// TODO: Add your control notification handler code hereif (!b_flagProcess){
MessageBox("Press ButtonStart!","Note",MB_OK|MB_ICONWARNING);
return;}
b_flagTracking=1;imageTrack=0;track_object=-1;
if (!imageTrack){
imageTrack = cvCreateImage( cvGetSize(m_Frame), 8, 3 );//imageTrack->origin = m_Frame->origin;hsvTrack = cvCreateImage( cvGetSize(m_Frame), 8, 3 );hueTrack = cvCreateImage( cvGetSize(m_Frame), 8, 1 );maskTrack = cvCreateImage( cvGetSize(m_Frame), 8, 1 );//backprojectTrack = cvCreateImage( cvGetSize(m_Frame), 8, 1
);//histTrack = cvCreateHist( 1, &hdims, CV_HIST_ARRAY,
&hranges, 1 ); //histimgTrack = cvCreateImage( cvSize(320,200), 8, 3 );//cvZero( histimgTrack );//
}
origin = cvPoint(150,150);selection = cvRect(150,150,20,20);//
// cvNamedWindow( "CamShiftDemo", 1 );//// cvNamedWindow( "Histogram", 1 );// cvSetMouseCallback( "CamShiftDemo", on_mouse ); //
}
void COpencvUIDlgDlg::OnStoptracking(){
// TODO: Add your control notification handler code hereb_flagTracking=0;imageTrack=0;track_object=0;
}void COpencvUIDlgDlg::OnMouseMove(UINT nFlags, CPoint point)
7/30/2019 Do an Tot Nghiep_thanh(Ok)
76/78
76
{// TODO: Add your message handler code here and/or call default
//pwnd = GetDlgItem(IDC_SHOWPIC);//pwnd->GetWindowRect(&rect);//pwnd->MoveWindow(35,30,352,288);//if ((point.x>rect.left)&&(point.xrect.top)&&(point.y35)&&(point.x30)&&(point.yLoadCursor(IDC_CURSOR1));
if (select_object){
pointx=point.x-35;pointy=point.y-30;if( imageTrack->origin )pointy = 480 - pointy;//480selection.x = MIN(pointx,origin.x);selection.y = MIN(pointy,origin.y);selection.width = selection.x + CV_IABS(pointx - origin.x);selection.height = selection.y + CV_IABS(pointy - origin.y);selection.x = MAX( selection.x, 0 );selection.y = MAX( selection.y, 0 );selection.width = MIN( selection.width, imageTrack->width );selection.height = MIN( selection.height, imageTrack->height );selection.width -= selection.x;selection.height -= selection.y;
}}
CDialog::OnMouseMove(nFlags, point);}
void COpencvUIDlgDlg::OnLButtonDown(UINT nFlags, CPoint point){
// TODO: Add your message handler code here and/or call default
if( !imageTrack ){
MessageBox("Press Button
StartTracking!","Note!",MB_OK|MB_ICONWARNING);return;}
7/30/2019 Do an Tot Nghiep_thanh(Ok)
77/78
77
if ((point.x>35)&&(point.x30)&&(point.yorigin )
pointy = 288 - pointy;
if (imageTrack->width==800){
pointx=pointx*640/352;pointy=pointy*480/288;
}
origin.x = pointx;origin.y = pointy;
selection = cvRect(pointx,pointy,0,0);//
select_object = 1;//}
CDialog::OnLButtonDown(nFlags, point);}
void COpencvUIDlgDlg::OnLButtonUp(UINT nFlags, CPoint point){
// TODO: Add your message handler code here and/or call defaultselect_object = 0;//if( selection.width > 0 && selection.height > 0 )
track_object = -1;//
CDialog::OnLButtonUp(nFlags, point);}
void COpencvUIDlgDlg::OnAboutbox(){
// TODO: Add your control notification handler code hereCAboutDlg dlgAbout;
dlgAbout.DoModal();}
7/30/2019 Do an Tot Nghiep_thanh(Ok)
78/78
78
void CAboutDlg::OnOK(){
CDialog::OnOK();}
void COpencvUIDlgDlg::OnCancel(){
// TODO: Add extra cleanup hereint user_choice =
MessageBox("Exit?","Exit!",MB_OKCANCEL|MB_ICONWARNING);if(user_choice == IDOK)
/*{if(m_Video)
destoryWindow();};*/
CDialog::OnCancel();}
BEGIN_EVENTSINK_MAP(COpencvUIDlgDlg, CDialog)//{{AFX_EVENTSINK_MAP(COpencvUIDlgDlg)
//}}AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()