iv
LI CM T
Đầu tiên, tôi xin gửi lời cám ơn chân thành đến TS. Ngô Văn Thuyên – người
đã trực tiếp hướng dẫn tôi một cách tận tình và chu đáo từ khi xây dựng cho
đến lúc thực hiện và hoàn thành đề tài ny. Trong quá trình làm đề tài, thầy
luôn theo sát tiến trình thực hiện của tôi và có những gợi ý giúp tôi định
hướng gii quyết những vấn đề khó khăn gặp phi.
Bên cnh đó, gia đình luôn là chỗ dựa và là nguồn động viên vô cùng to lớn
tiếp sức cho tôi trong suốt quá trình nghiên cứu đề tài.
Cuối cùng tôi xin gửi lời cm ơn đến anh Nguyễn Hừng Đông và anh Nguyễn
Hoàng Anh là những người hỗ trợ tôi trong quá trình xây dựng đề tài. Những
ý kiến đóng góp của các anh đã giúp tôi hoàn thiện tốt hơn đề tài của mình.
Xin chân thành cm ơn!
Biên Hòa, ngày 10 tháng 10 nằm 2011
Học Viên
Nguyễn Hữu Nam
v
TÓM TT
CameraăngƠyăcƠngăđợcăsửădụngănhiềuătrongăcácăứngădụngătrênărobotădiăđộngădoă
khănĕngăcungăcấpăthôngătinăvềămôiătrngăchínhăxácăhnăcácăloiăcmăbiếnănhă
siêuăơm,ălaser.ăCameraăcóăthểăcungăcấpăcácăthôngătinăvềămƠuăsắc,ăhìnhădángăcủaăṿtă
thể,ăkhongăcáchătớiăṿtăthểătrongăkhiăcácăcmăbiếnănhăsiêuăơm,ălaserăchỉăcungăcấpă
thôngătinăvềăkhongăcách.ăĐềătƠiăxơyădựngăthụtătoánăquyăhochăqũăđoăchoărobotă
diăđộngăsửădụngăthịăgiácămáyătính.
Robotăcóăkhănĕngădiăchuyểnătrongămộtămôiătrngăđịnhăsẵn,ătrongăđóăbnăđồăcủaă
môiătrngăđợcăcungăcấpăchoărobot. Trongăquáătrìnhădiăchuyểnărobotăđịnhăhớngă
dựaătrênăbnăđồ.ăViệcăxácăđịnhăvịătríăcủaărobotătrongămôiătrngădiăchuyểnădựaătrênă
k̃ăthụtădeadăreckoningămƠăchủăyếuălƠădựaăvƠoăencoderăcủaăbánhăxeăchoăsaiăsốălớnă
vƠăcóătínhăchấtăcộngădồn.ăRobotăđợcătrangăbịăcameraăchoăphépăxácăđịnhăvịătríăcácă
cácăđiểmămốcăđợcăthêmăvƠoătrênăđngădiăchuyểnăđểăxácăđịnhăliăvịătríăcủaărobot.ă
ViệcăxácăđịnhăđiểmămốcădựaătrênăthụtătoánănḥnădngămƠuăsắc,ăđiểmămốcăcóămƠuă
đồngănhấtăvƠăđợcăđịnhătrớc.ăCácăṿtăcnăsẽăxuấtăhiệnăngẫuănhiênătrênăđngădiă
chuyển,ărobotăphiăcóăkhănĕngănḥnăbiếtăvƠădiăchuyểnăquaăṿtăcn.ăĐểătránhăṿtăcnă
robotăsửădụngăthôngătinăđộăsơuătừăcmăbiếnăđểăxơyădựngăbiểuăđồăhistogramăvềămôiă
trngătừăđóăxácăđịnhăvùngăanătoƠnăcóăthểădiăchuyểnăqua.ăBnăđồăchỉăchoăbiếtăvùngă
điểmăđíchăsẽăđợcăđặtămƠăkhôngăchoăbiếtăvịătríăchínhăxácăvìăthếărobotăsẽăphiăsửă
dụngăthụtătoánănḥnădngăđểătìmăkiếmăṿtăthểăđích.
MôăhìnhărobotădiăđộngăsửădụngălƠăloiăbaăbánhăxeăkiểuăláiăviăsai.ăCmăbiếnăđợcăsửă
dụngăchoărobotălƠăcameraăKinect.ăKinectăgồmăhaiăcameraăvƠămộtăcmăbiếnăchiếuăIRă
cungăcấpăchoărobotăhaiădữăliệuăchínhălƠănhăvƠădữăliệuăđộăsơu.ăMáyătínhăthuătḥpădữă
liệuătừăcamera,ăthựcăhiệnăcácăthụtătoánădựaătrênăcácăthăviệnăcủaăOpenCV.ăChngă
trìnhăxửălýăvƠăđiềuăkhiểnărobotăđợcăviết trênănềnăphầnă mềmămƣănguồnă măđiềuă
khiểnărobotăthôngădụngăPlayer.
vi
ABSTRACT
Cameras have been widely used on mobile robots due to the ability to provide more
accurate information of the working environment compared to ultrasonic and laser
sensor. Cameras can provide information about color, shapes of and distance to
objects whereas ultrasonic and laser sensors can only give information on distance.
This thesis presented a motion planning method for mobile robots using computer
vision.
The robot can move in a known environment with a map being provided. On
moving, the robot will localize its self based on the provided map. The position of
robot provides by dead reckoning method which is based on the encoders attached
with the robot wheels is inaccurate and accumulative in error. The robot is equipped
with a camera that allows it to determine its position at a certain point with beacons.
The recognition of beacons is based on their colors. The robot can also recognize
the obstacle on its course to avoid them. To avoid the obstacles, the robot constructs
an obstacle histogram of the environment from which it can determine the safe path.
The robot is not given the exact position of the goal object but only its area and
color. The robot moves to the goal using object recognition algorithm.
The mobile robot platform is equipped with 2 differential drive wheels and a caster
one. Kinect Camera is used in this thesis. The Kinect is equipped with two cameras,
and IR to provide the image and depth of each pixel. A computer is used collect the
data from the camera and perform motion planning algorithms using available
library of OpenCV. Control commands are sent to the robot based on the protocol in
Player, a popular open source code to link with robot.
vii
MC LC
LI CAM ĐOAN iii
LI CM T iv
TÓM TT v
MC LC vii
DANH SÁCH CÁC CH VIT TT x
DANH SÁCH CÁC BNG xi
DANH SÁCH CÁC HÌNH xii
Chng 1
Gii Thiu 1
1.1 Tổng quan chung về lƿnh vc nghiên cứu 1
1.2 Mc tiêu nghiên cứu 4
1.3 Phm vi nghiên cứu 4
1.4 Phng pháp nghiên cứu 4
Chng 2.
Th Giác Máy Tính vƠ Th Vin OpenCV 5
2.1 Gii thiu 5
2.2 S phát trin của th giác máy tính 7
2.3 Lƿnh vc ứng dng 9
2.4 H thng th giác máy tính 11
2.5 Th vin mã ngun mở OpenCV 12
Chng 3
Các Phng Pháp Quy Hoch Qu Đo Cho Robot 19
viii
3.1 Phng pháp đnh hng 19
3.1.1 Phng pháp đnh hng da trên bn đ 20
3.1.2 Đnh hng da trên xây dng bn đ 24
3.1.3 Đnh hng không da trên bn đ 25
3.2 Phng pháp tránh vt cn 28
3.2.1 Phng pháp Bug 28
3.2.2 Phng pháp Potential Field 29
3.2.3 Phng pháp Vecto Field Histogram (VFH) 32
3.3 Phng pháp nhn dng vt th 37
3.3.1 Phng pháp so khp đặc đim hình hc 38
3.3.2 Phng pháp nhn dng da trên din mo 39
3.3.3 Phng pháp nhn dng da trên đặc đim cc b 41
Chng 4
Thut Toán Quy Hoch Qu Đo 44
4.1 Quy hoch qu đo 44
4.1.1 Bn đ môi trng 44
4.1.2 Gii thut quy hoch qu do chuyn đng 46
4.2 Thut toán tránh vt cn 47
4.2.1 Xây dng biu đ histogram 47
4.2.2 Tính góc lái 49
4.3 Thut toán đnh v trí bằng đim mc 49
4.3.1 Tìm đim mc trên nh 50
4.3.2 Thut Toán Meanshift 52
ix
4.3.3 Đnh v trí bằng đim mc 55
4.4 Phát hin ca 56
4.4.1 Đặc đim ca 56
4.4.2 Thut toán phát hin ca 57
4.5 Tìm vt th đích 58
4.5.1 Thut toán nhn dng vt th đích 59
4.5.2 Phng pháp nhn dng SURF 59
Chng 5
Mô Hình Robot Di Đng VƠ Kt Qu Thc Nghim 64
5.1 Mô hình robot di đng 64
5.1.1 Mô hình h thng 64
5.1.2 Cm bin camera Kinect 66
5.2 Kt qu thc nghim 70
5.2.1 Bn đ môi trng 70
5.2.2 Kt qu thc nghim các thut toán 71
5.2.3 Kt qu thc nghim thut toán quy đo hoch cho robot 78
Chng 6
Kt Lun 83
6.1 Kt qu đt đc 83
6.2 Hn ch của đề tài 83
6.3 Hng phát trin của đề tài 84
TÀI LIU THAM KHO 85
x
DANH SÁCH CÁC CH VIT TT
ADC – Analog to Digital Converter
AGV – Autonomous Guided Vehicles
API – Application Programming Interface
AUV – Autonomous Underwater Vehicles
FPS – Frames Per Second
HighGUI – High level Graphical User Interface
KDE – Kernel Density Estimation
MCU – Micro Controler Unit
OpenCV – Open Source Computer Vision
PCA – Principal Component Analysis
PCM – Pulse Code Modulation
POD – Polar Obstacle Density
QVGA – Video Graphics Array
SDK – Software development kit
SURF – Speeded Up Robust Features
UAV – Unmanned Arial Vehicles
VCP – Vehicle Center Point
VGA – Video Graphics Array
VHF – Vecto Field Histogram
xi
DANH SÁCH CÁC BNG
BNG
TRANG
Bng 2.1: MôătămộtăsốăthụtătoánăriêngăbiệtăcủaăthƠnhăphầnăCvAux
Bng 2.2: Mô t chngătrìnhătìmăđng thẳng sử dụng biếnăđổi Hough
Bng 5.1: Mô t thông số k̃ thụt của camera Kinect
15
16
68
xii
DANH SÁCH CÁC HÌNH
HÌNH
Hình 1.1. Một số loi robot đã và đang được nghiên cứu.
Hình 2.1. Mối tương quan giữa thị giác máy tính và các lĩnh vực khác
(nguồn: truy c̣p
ngày 1/10/2011).
Hình 2.2. Một số thuật toán của thị giác máy tính .
Hình 2.3. Một số ứng dụng của thị giác máy tính. (a) xe tự hành thám
hiểm sao Hỏa. (b) nh y sinh. (c) kiểm tra lỗi của sn phẩm. (d) Kiểm
soát lưu lượng xe.
Hình 2.4. Cấu trúc hệ thống thị giác máy tính.
Hình 2.5. Cấu trúc cơ bn của OpenCV.
Hình 2.6. nh trước và sau khi sử dụng biến đổi Hough.
Hình 2.7. Thuật toán tìm đường tròn sử dụng biến đổi ảough.
Hình 2.8. Thuật toán nhận dng khuôn mặt.
Hình 2.9. Thuật toán tìm màu áo.
Hình 3.1. Bn đồ môi trường với những điểm mốc bằng hình tròn.
Hình 3.2. Vị trí ban đầu và vị trí sau khi di chuyển của robot.
(a) Di chuyển tịnh tiến. (b) Di chuyển quay.
Hình 3.3. Mô hình robot di chuyển theo đường dẫn.
Hình 3.4. Điểm mốc dng mã vch.
Hình 3.5. Bn đồ môi trường. (a) bn đồ lý tưởng. (b) bn đồ do robot
xây dựng.
Hình 3.6. Mô t phương pháp định hướng dựa trên chuyển động quang
TRANG
2
6
8
10
11
13
17
17
18
18
22
22
23
24
25
26
xiii
học.
Hình 3.7. Định hướng dựa trên nhận dng diện mo.
Hình 3.8. Phương pháp tránh vật cn Bug.
Hình 3.9. Trường lực hút biểu diễn dưới dng biểu đồ điềm và vecto lực.
Hình 3.10. Trường lực đẩy biểu diễn dưới dng biểu đồ điềm.
Hình 3.11. Tổng hợp lực o tác động lên robot.
Hình 3.12. Bn đồ ô mắt lưới hai chiều
Hình 3.13. Bn đồ ô luới vùng cửa sổ tích cực.
Hình 3.14. ảướng và biên độ của một vecto cn.
Hình 3.15. Biểu đồ cực một chiều.
Hình 3.16. Mức ngưỡng trên sơ đồ cực để chọn hướng di chuyển.
Hình 3.17. Mức ngưỡng và góc .
Hình 3.18. Cấu trúc hình học của vật thể. (a) nh ban đầu. (b) nh đo
hàm.(c) Kết nối đường thẳng. (d) nh vật thể ở một góc nhìn khác.
(nguồn: truy cập
ngày 1/10/2011 ).
Hình 3.19. Biểuă diễnă ṿtă thểă trongă khôngă giană đaă điểmă (nguồn:ă
truyă c̣pă ngƠyă
1/10/2011).
Hình 3.20. nh và biểu đồ màu không gian ba chiều của vật mẫu.
Hình 3.21. So sánh vật thể trong hai hình sử dụng đặc điểm cục bộ.
Hình 4.1. Bn đồ môi trường cung cấp cho robot.
Hình 4.2. Gii thuật quy hoch quỹ đo của robot.
Hình 4.3. Mối tương quan về góc giữa robot và vật cn.
27
28
29
30
31
32
33
34
35
36
37
39
40
41
42
45
46
48
xiv
Hình 4.4. Biểu đồ histogram.
Hình 4.5. Góc lái của robot.
Hình 4.6. Các bước định vị trí bằng điểm mốc.
Hình 4.7. Xây dựng biểu đồ histogram màu mẫu.
(a) Màu mẫu so sánh. (b) Biểu đồ màu.
Hình 4.8. Quá trình so sánh màu.
(a) nh camera (b)nh so sánh màu.
Hình 4.9. Biểu đồ hàm phân bố vùng điểm dữ liệu.
Hình 4.10. Thuật toán Meanshift.
Hình 4.11. Mô t hình học của công thức Meanshift.
Hình 4.12. Cơ chế hot động của thuật toán MeanShift.
Hình 4.13. Xác định vị trí robot sử dụng điểm mốc.
Hình 4.14. ảình dáng đặc trưng của khung cửa. (a) dng U ngược (b)
dng hai cnh bên song song.
Hình 4.15. Thuật toán phát hiện cửa.
Hình 4.16. Thuật toán nhận dng vật thể đích.
Hình 4.17. Thuật toán nhận dng SURF.
Hình 4.18. Vùng điểm lân cận xung quanh điểm nổi bật (a) Vùng điềm
lân cận tròn có bán kính 6s. (b) Cửa sồ trượt.
Hinh 4.19. Vùng điểm lân cận vuông xung quanh điểm nổi bật.
Hình 4.20. Bốn thành phần trong vecto mô t.
Hình 5.1. Mô hình hệ thống robot di động.
Hình 5.2. Cấu to hệ thống robot di động thực nghiệm
48
49
50
51
52
52
53
54
55
56
57
58
59
60
61
62
63
65
65
xv
Hình 5.3. nh chụp robot thực nghiệm.
Hình 5.4. Cm biến camera Kinect.
Hình 5.5. Tương tác phần mềm và phần cứng.
Hình 5.6. Cấu trúc SDK của Kinect.
Hình 5.7. Bn đồ môi trường thực nghiệm.
Hình 5.8. nh môi trường thực nghiệm.
Hình 5.9. nh camera tránh vật cn.
Hình 5.10. nh độ sâu.
Hình 5.11. Biểu đồ histogram.
Hình 5.12. nh so sánh màu điềm mốc với màu mẫu.
Hình 5.13. Phát hiện hai điềm mốc được gắn hai bên tường.
Hình 5.14. nh camera nhận dng cửa
Hình 5.15. Phát hiện cnh trong nh sử dụng thuật toán Canny
Hình 5.16. Tìm đường thẳng sử dụng thuật toán biến đổi Hough
Hình 5.17. Phát hiện cửa
Hình 5.18. Vật thể đích được nhận dng đúng.
Hình 5.19. Kết qu snapshot từ 0s đến 28s
Hình 5.20. Kết qu snapshot từ 32s đến 60s
Hình 5.21. Kết qu snapshot từ 64s đến 92s
Hình 5.22. Kết qu snapshot từ 96s đến 124s
Hình 5.23. ảướng di chuyển của robot
66
67
68
69
70
71
72
72
73
74
74
75
76
76
77
77
78
79
80
81
82
1. Giới Thiệu
1
Chương 1.
Gii Thiu
1.1 Tổng quan chung về lƿnh vc nghiên cứu
Trongăhnănửa thế kỷ hình thành và phát triển, lĩnhăvực nghiên cứu, chế to robot
đƣăcóă nhiều nhữngăbớc tiếnăđángăkể. Robotăđầuătiênăđợc ứng dụng trong công
nghiệp vào tḥpăniênă60ăđể thay thế conăngi làm các công việc nặng nhọc, nguy
hiểm trongămôiătrngăđộc hi [1]. Banăđầu, robot chủ yếuăđợc ứng dụng trong các
nhà máy xí nghiệp nhngăđến nay robotăđƣăcóănhững ứng dụngăkhácănhătrongăyătế,
nông nghiệp, xây dựng, an ninh quốc phòng, thám hiểm không gian và trong gia
đình [2]. Từ nhu cầu ngày càng lớnăvƠăđaădngănhăṿyăđƣăto ra sự thúcăđẩy lớn
choălĩnhăvực nghiên cứu robot phát triển. Xu hớng nghiên cứu của thế giới hiện
nayălƠăhớng về dịch vụ và hotăđộng củaărobotătrongămôiătrng tự nhiên.
Có thể phân loi một số loi robot đƣăvƠăđangăđợc nghiên cứuănh tay máy robot
(RobotăManipulators),ărobotădiăđộng (Mobile Robots), robot phỏng sinh học (Bio
Inspired Robots) và robot cá nhân (Personal Robots) [2]. Tay máy robot bao gồm
các loi robot công nghiệp (Industrial Robot) nhăhìnhă 1.1a, robot y tế (Medical
Robot) và robot trợ giúpăngi tàn ṭtă(Rehabilitationărobot).ăRobotădiăđộngăđợc
nghiên cứu nhiềuă nhă xeă tự hành trên mặtă đất AGV (Autonomous Guided
Vehicles), robot tự hƠnhădớiănớc AUV (Autonomous Underwater Vehicles) nhă
hình 1.1b, robot tự hƠnhătrênăkhôngăUAVă(UnmannedăArialăVehicles)ăvƠărobotăvũă
trụ (Space robots). Với robot phỏng sinh học, các nghiên cứu ṭp trung vào 2 loi
1. Giới Thiệu
2
chínhălƠă robotăđiă(Walkingă robots) 1.1c vƠărobotă dángăngi (Humanoid Robots)
nhăhìnhă1.1d.
Ti Việt Nam, lĩnhăvực nghiên cứu, chế toărobotăđợc cḥm so với thế giới song
cũngăđƣăđtăđợc nhữngăbớc tiến đángăkhíchălệ.ăĐƣăcóănhiều nghiên cứuăcăbn và
nghiên cứu ứng dụng về robot đợc thực hiện kháăđaădng và theoăsátă đợc các
hớng nghiên cứu thế giới [2]. Trong nhữngănĕmăgầnăđơyăcóămộtăhớng nghiên cứu
đợc nhiềuăngiăquanătơmăđóălƠăsử dụng thị giácămáyătínhăchoărobotăđặc biệtăđối
với robot tự hành. Việc sử dụng thị giác máy tính cho robot là sử dụng các camera
để chụp li những hình nh từ môiătrngăxungăquanhăsauăđóănhững hình nh này
đợc chuyển tớiămáyătínhăđể xử lý trích xuất ra nhữngăthôngătinăđặcăđiểm từ môi
trng, quá trình này giốngănhăquáătrìnhătổng hợp hình nh của thị giácăconăngi.
Hình 1.1. Một số loi robot đã và đang được nghiên cứu.
1. Giới Thiệu
3
K̃ thụt này mang nhiềuă đặcă điểm nổi ḅtăhnă soăvới những k̃ thụt cm biến
truyền thống vì nó có thể xây dựngăđợc bnăđồ 2D, 3D về môiătrng xung quanh
vớiăđộ chính xác cao trong khi với những cm biếnăthôngăthngăđợc sử dụngănhă
cm biến quang, siêu âm hay lade chỉ dừng mức phát hiện ṿt thể và khong cách
giữa robot với ṿt thể. K̃ thụt thị giác cũngăgiúp robot có thể nḥn dngăđợc ṿt
thể về hìnhădáng,ăkíchăthớc, màu sắc.
Để đtăđợc hiệu qu trong việc xây dựng những hệ thống robot dựa trên k̃ thụt
thị giác, thì cần phi kết hợp sử dụng với cácăchngătrìnhăvƠăthăviện xử lý thông
tin cho robot bi vì việc xây dựng phần mềm cho robot là rất phức tp.
Cácăchngă
trình thông dụng trên thế giới có thể kể đếnă nhă Webots,ă Microsoft Robot
Development Studio, ARIA, Player/Stage. Mỗiăchngătrìnhăcóănhữngăđặtăđiểm và
uă khuyếtă điểm riêng. Tuy nhiên, trong các phần mềmăđiều khiển robot trên thì
Player đợc sử dụng rộng rãi trong nghiên cứu và ging dy robot do tính m của
nó. Player là mộtănetworkăserverăđiều khiển robot. Player chy trên robot và cung
cấp giao tiếp với các cm biến và bộ truyềnăđộng qua mngăIP.ăChngătrìnhăclientă
giao tiếp với Player qua TCP socket và đọc dữ liệu từ các cm biến, truyền lệnh
xuống bộ điều khiển chuyểnăđộng và cấu hình thiết bị. Player hỗ trợ hầu hết các
phần cứng củaă cácă robotă thngă mi và chy trên nền Linux (PC và hệ thống
nhúng). Stage là giao diện mô phỏng liên kết với Player. Stage cho phép thử nghiệm
các thụtătoánăđiều khiểnătrớc khi thực hiện trên robot thực với Player. Có cùng
tính m nhăchngătrìnhăPlayer,ăthăviện OpenCV cũngăđợc sử dụng phổ biến
nhălƠămột công cụ hỗ trợ đắc lựcăchoăngi nghiên cứu trong việc xử lý thông tin
nh cho robot. OpenCV bao gồm những thụtătoánăđƣăđợc tốiăuă hóaă dƠnhăchoă
việc xử lý nh.
Với nhữngăđặcăđiểm nổi ḅt và tính mới mẻ củaăhớng nghiên cứu này ti Việt Nam
nên k̃ thụt thị giác máy tính sử đợc sử dụngălƠăhớng nghiên cứuătrongăđề tài
này.
1. Giới Thiệu
4
1.2 Mc tiêu nghiên cứu
Mục tiêu đề tài là xây dựng thụt toán quy hoch qũ đo cho robot dựa trên thị
giác máy tính. Thụtătoánăđợc thực nghiệm trên mô hình robot thựcăđiều khiển trên
Player và OpenCV. Khi di chuyển từ điểmăbanăđầuăđếnăđích,ărobotăphi có kh nĕngă
tránh ṿt cn.ăĐể di chuyển, robot dựa trên vị trí cho bi encoder kết hợp vớiăđịnh
vị dựaătrênăcácăđiểm mốc sử dụng thị giác máy tính. Robot có kh nĕngăxácăđịnh ṿt
đíchăqua thụt toán nḥn dng màu sắcăvƠăcácăđặcăđiểm cục bộ của nh ṿt thể.
1.3 Phm vi nghiên cứu
Phm vi nghiên cứu củaăđề tài giới hn trong những ứng dụng trong nhà. Robot sẽ
di chuyển trong bnă đồ môiătrngă đƣăđợc xây dựngă trớc. Trong quá trình di
chuyển robot sẽ định vị trí bằng thông tin encoder kết hợp với điểm mốc với màu
sắcăđnăgin và từ đóăđịnhăhớng di chuyểnăđếnăđích.ăRobot sử dụngăthôngătinăđộ
sơuăđể xây dựng biểuăđồ histogram cho việc tránh ṿt cn và sử dụng thụt toán
nḥn dngăđể phát hiện ṿt thể đích.
1.4 Phng pháp nghiên cứu
Cácăphngăphápănghiênăcứuăđợc sử dụngătrongăđề tài là:
PhngăphápănghiênăcứuătƠiăliệu:ăthuătḥpăthôngătinătƠiăliệu,ăsáchăbáoăđiệnă
tửăliênăquanăđếnălĩnhăvựcănghiênăcứu.ăNghiênăcứuălýăthuyếtăđểăxơyădựngă
thụtătoánăquyăhochăqũăđo cho robot.
Phngăphápăkhoăsát:ăkhoăsátănhữngămôăhình robotătựăhƠnhăhiệnăcó.
Phngăphápăthựcănghiệm:ăápădụngănhữngăthụtătoánăđƣăxơyădựngăvƠoămôă
hình robot.
2. Thị Giác Máy Tính Và Thư Viện OpenCV
5
Chương 2.
Th Giác Máy Tính vƠ Th Vin
OpenCV
Phầnăđầuăchngă2ăgiớiăthiệuătổngăquanăvềălĩnhăvựcăthịăgiácămáyătínhăvớiănhữngă
hớngăphátătriểnăkhácănhauăvƠănhữngăứngădụng,ălợiăíchămangăliăchoăđiăsốngăcủaă
conăngiătrongăvòngă40ănĕmăqua.ăThăviệnămƣănguồnămăOpenCVăđợcătrìnhăbƠyă
ă phầnă cuốiă củaă chng.ă OpenCVă đợcă xơyă dựngă trênă nềnă nhữngă thụtă toánă đƣă
đợcătốiăuăhóaădƠnhăchoănhữngăứngădụngăthịăgiác máy tính.
2.1 Gii thiu
Với sự phát triển mnh mẽ của công nghệ máyătínhăđƣăkéoătheoăsự phát triểnăvợt
ḅc của nhiềuălĩnhăvực khác. Trong số đóălƠăthị giác máy tính, mộtălĩnhăvực nghiên
cứu phức tpăđòiăhỏi nhiều về sức mnh tính toán. Từ nhữngănĕmă1970ăkhi mƠănĕngă
lực tính toán của máy tính tr nên mnh mẽ giúp cho công việc xử lý những ṭp dữ
liệu lớnănhăhìnhănh tr nên nhanh chóng và dễ dƠng,ăthìălĩnhăvực thị giác máy tính
đợc nhắcăđến và nghiên cứu nhiềuăhnăchoătới ngày nay. Hiệnănayălĩnhăvực này
đợcăđánhăgiáălƠăvẫnăcònă“nonănớt”ăvƠăcóăsự phát triển mnh mẽ trong thi gian tới.
Thị giác máy tính bao gồm lý thuyết và các k̃ thụt liên quan nhằm mụcăđíchăto ra
một hệ thống nhân to có thể tiếp nḥn thông tin từ các hình nhăthuăđợc hoặc các
ṭp dữ liệuăđaăchiều.ăĐối với mỗiăconăngi, quá trình nḥn thức thế giới bên ngoài
là mộtăđiều dễ dàng. Quá trình nḥn thứcăđóăđợcă“học”ăthôngăquaăquáătrìnhăsống
2. Thị Giác Máy Tính Và Thư Viện OpenCV
6
của mỗiăngi.ăConăngi có thể cm nḥnăđợc một bình hoa sặc sỡ sắcămƠuăđặt
trên chiếcăbƠnăđẹpănhăthế nào, hay nḥn biết tên và sắc thái biểu cm của từng
ngi qua một tấm nh chụp. Tuy nhiên với các ṿtăvôătriăvôăgiácănhămáyătính,ă
robot v v. thìăđiều này thực sự là mộtăbớc tiến rất gian nan. Thị giác máy tính
cung cấp cho các máy móc, thiết bị có cáiă“nhìn”ătḥt với thế giới bên ngoài. Cái
“nhìn”ănƠyăquaăquáătrìnhăphơnătích,ăxử lý và kết hợp vớiăcácămôăhìnhănhămáyăhọc,
mngănronăv v. sẽ giúp cho thiết bị tiến dần tới một hệ thống nhân to có kh nĕngă
ra quyếtăđịnh chính xác và linh hotăhnărất nhiều.
Lĩnhăvực nghiên cứu của thị giác máy tính rấtăđaădngăvƠăcóăliênăquanăđến rất nhiều
lĩnhăvựcăkhácănhătrongăhìnhă2.1,ădoăđóăkhôngăthể xây dựngăđợc một tiêu chuẩn
chung cho các bài toán về thị giácămáyătính.ăThayăvƠoăđóămỗiăhớng gii quyết, mỗi
phngă phápă đềuă đtă đợc một kết qu nhấtă định cho nhữngă trng hợp cụ thể
trong các ứng dụng khác nhau.
Hình 2.1. Mối tương quan giữa thị giác máy tính và các lĩnh vực khác(nguồn:
truy cập ngày 1/10/2011)
2. Thị Giác Máy Tính Và Thư Viện OpenCV
7
2.2 S phát trin của th giác máy tính
Những khái niệmăđầu tiên về thị giácămáyătínhăđợcăhìnhăthƠnhăvƠoăđầu nhữngănĕmă
1970.ăĐơyălƠă mộtă đề tƠiă đầy tham vọng nhằm bắtăchớc trí thông minh của con
ngi và làm cho robot có những hành vi thông minh. Vào thiăđiểmăđó,ăniềm tin
vƠoăhớng nghiên cứu này xuất phát từ một số nhữngăngiătiênăphongăđầu tiên về
lĩnhăvực trí thông minh nhân toăvƠărobotănhăMIT,ăStanford,ăvƠăCMU.ăNhững nhà
nghiên cứuăđƣăgii quyết vấnăđề "đầu vào thị giác" và to ra tiềnăđề để gii quyết
các vấnăđề khóăkhĕnăhn.ă
Điều khác biệt giữa thị giác máy tính với cácălĩnhăvực xử lý nh số là việc mong
muốn khôi phục li không gian ba chiều của thế giới từ những hình nh và sử dụng
nh là một bớcăđệm hớng tới sự hiểu biếtăđầyăđủ về cnh ṿt. Những nỗ lựcăđầu
tiên về sự hiểu biết cnh ṿt là trích xuất cnh và sau đó xây dựng cấu trúc 3D của
đốiătợng hoặc một "thế giới khối" từ cấu trúc tô pô to nên bi nhữngăđng thẳng
2D của Roberts (1965). Ti thiăđiểmăđóămột số thụt toán đánhănhƣnăđng thẳng
(hình 2.3a) đợc phát triểnă nhă trongă nghiênă cứu của Huffman (1971), Clowes
(1971), Waltz (1975), Rosenfeld và các cộng sự (1976), Kanade (1980). Fischler và
Elschlager (1973) đề xuấtăphng pháp sắp xếp đƠnăhồi các bộ pḥn cấu trúc trực
quan (Hình 2.3b),ăđơyălƠămột trong cácăphngăphápătiếp c̣n đợc sử dụng nhiều
trong nḥn dng đốiătợng. Mô hình ba chiều của các đốiătợng có hình dáng không
phi khốiăđaădiện cũng đợc nghiên cứu vào thiăđiểmăđóăbi Baum-gart (1974),
Baker (1977), cách tiếp c̣n phổ biến đợc sử dụng là hình trụ suy rộng, tức là, khối
trụ tròn và quét đng cong kín thng đợc sắp xếp thành các quan hệ thành phần
(Hình 2.3c). Ngoài ra còn có nghiên cứu của Barrow và Tanenbaum (1981) về sự
thayăđổi về cngăđộ ánh sáng và sự đổ bóng, và gii thích nhữngăđiều này bằng tác
động của hiệnătợng hình thành nh, chẳng hn nh địnhăhớng bề mặt và đổ bóng
(hình 2.3d), phát triển cùngăýătng này là bn tho về không gian 2,5 chiều của
Marr (1982). Bên cnhăđóălƠăthụt toán tìm sự tngăứng của nhiềuăđặcăđiểm dựa
trên thụt toán stereo (Hình 2.3e) đợc nghiên cứu bi Dev (1974) và tiếp tục phát
triển bi Marr và Poggio (1976), Moravec (1977), Marr và Poggio (1979), Mayhew
2. Thị Giác Máy Tính Và Thư Viện OpenCV
8
và Frisby (1981), Baker (1982), Barnard và Fischler (1982), Ohta và Kanade
(1985), Grimson (1985), Pollard và các cộng sự (1985), Prazdny (1985). Các thụt
toán dựa trên chuyểnăđộng quang học (hình 2.3f) phát triển bi Horn và Schunck
(1981), Huang (1981), Lucas và Kanade (1981), Nagel (1986).
Tới tḥp niên 1980 việc nghiên cứu đợc ṭp trung vào các k̃ thụt toán học phức
tp để thực hiện phân tích nhănhăthụt toán pyramid ứng dụng cho việc thực hiện
các nhiệm vụ nh pha trộn hình nh và tìm sự tngăquan của Rosenfeld (1980),
Burt và Adelson (1983), Rosenfeld (1984), Quam (1984), Anandan (1989). Thụt
toán stereo m rộng ứng dụng cho tìm hình dng ṿt thể của Horn (1975), Pentland
(1984), BlakeăvƠăcácăđồng sự (1985) hoặc việc sử dụngămôăhìnhătrng ri rc ngẫu
nhiên Markov (MRF) của Geman (1984) sử dụng cho thụt toán tìm kiếm và tốiăuă
hóa.
Hình 2.2. Một số thuật toán của thị giác máy tính [3] .
2. Thị Giác Máy Tính Và Thư Viện OpenCV
9
Qua tḥpăniênă1990,ăCácăhớng nghiên cứuăđợcăđề c̣pătrớcăđơyăđợc nghiên cứu
sơuăhn.ăTrongăđóăcóămột số hớngăđtăđợc những kết qu tốtănhăchuyểnăđộng
quang học của Nagel và Enkelmann (1986),ăBollesăvƠăcácăđồng sự (1987), Horn và
Jr.Weldon (1988), Anandan (1989). Thụt toán stereo từ nhiềuăhớng nghiên cứu
biă Seitză vƠă Dyeră (1999),ă Kutulakosă vƠă Seitză (2000)ă để to ra bề mặt 3D hoàn
chỉnh.ăĐặc biệt là thụt toán Tracking có nhiều nghiên cứu ci thiện m rộng bao
gồm theo vếtăđng biên sử dụngăđngăbiênăđộngăcùaăKassăvƠăcácăđồng sự (1988),
bộ lọcăđiểm của Blake và Isard (1998), theo dõi khuôn mặtăngi của Lanitis và các
đồng sự (1997) hay tracking toàn thân củaăSidenbladhăvƠăcácăđồng sự (2000). Ngoài
ra k̃ thụt học thống kê bắtăđầu xuất hiệnăđầu tiên trong ứng dụng phân tích thành
phầnăchínhăeigenfaceăđể nḥn dng khuôn mặt đợc phát triển bi Turk và Pentland
(1991) và hệ thống tuyến tính độngă để theo dõi đng cong của Blake và Isard
(1998). Mộtăhớngăkhácăcũngăcóăsự phát triểnăđángăchúăýălƠăsự tngătácăgiữa thị
giácămáyătínhăvƠăđồ họa máy tính nghiên cứu biăSeitzăvƠăSzeliskiă(1999),ăđặc biệt
trong phối cnh và mô mình hóa dựa trên nh.
Đến tḥp niên 2000, có thể thấyăđợc sự nhăhng lẫn nhau giữa thị giác máy tính
vƠăđồ họa máy tính ngày càng tr nên sâu rộngăhn,ărất nhiều chủ đề đề c̣păđến
việc phối cnh dựa trên nhănhăghépănối nh, mô hình hóa dựa trên nh của Mann
và Picard (1995), Debevec và Malik (1997). Ngoài ra một số hớng phát triển có sự
kết hợp lẫnănhauănhăk̃ thụt xử lý nh kết hợp với máy học sử dụng cho thụt toán
nḥn dng củaăPonceăvƠăcácăđồng sự (2006).
Quaăhnă40ănĕmăhìnhăthƠnhăvƠăphátătriểnălĩnhăvực thị giácămáyătínhăđƣăđt những
kết qu nhấtăđịnhăsongăđể có thể đt tớiăđợc mụcătiêuălƠmăchoămáyămócăcóăđợc
nhữngăhƠnhăviăthôngăminhănhăconăngi thì còn là mộtăbớc tiến rất dài phía
trớc.
2.3 Lƿnh vc ứng dng
Thịăgiácămáyătínhăcóătínhăứngădụngăcao,ătừănhữngălĩnhăvựcăkhoaăhọc,ăyăhọc,ăsnă
xuấtăchoăđếnăquơnăsự.ăĐầuătiênăcóăthểăkểăđếnălƠăứngădụngătrongăyăhọc.ăViệcăchuẩnă
2. Thị Giác Máy Tính Và Thư Viện OpenCV
10
đoánăbệnhăchoăcácăbệnhănhơnăcóăthểăđợcăhỗătrợătừăhệăthốngăthịăgiácămáyătínhăthôngă
quaăviệcăphơnătíchăvƠătríchăxuấtănhữngăthôngătinăđặcătrngătừănh.ăNhữngănhănƠyă
đợcă chụpă từăkínhă hiểnăvi,ă máyăXă quang,ă chụpăđộngă mch,ă siêuăơmăhayătừă máyă
chụpăcắtălớp.ăNgoƠiăraăthịăgiácămáyătínhăcũngăcóăthểăhỗătrợăviệcăđoăkíchăthớcăcă
quan,ăluălợngămáu,ăcấuătrúcătếăbƠo.ăThứăhaiălƠătrongăcôngănghiệp,ătrongălĩnhăvựcă
nƠyăthịăgiácămáyătínhăđôiăkhiăcònăđợcăgọiălƠăthịăgiác máyă(machineăvision).ăNhữngă
thôngătinăđặcătrngătrongănhăgiúpăkiểmăsoátăquáătrìnhăsnăxuấtănhăchấtălợngăsnă
phẩm,ătìmăkiếmălỗiăkhuyếtăṭt,ăkíchăthớcăsnăphẩmăhayăvịătríăvƠăhớngăcủaăcánhătayă
robot.ăTrongăquơnăsựăhệăthốngăthịăgiácămáyătínhăđợcăứngădụngătrongăcácăhệăthốngă
phátăhiệnăchuyểnăđộng,ănḥnădng,ăhayăphứcătpăhnălƠăhớngădẫnăhệăthốngătênălửa.ă
MộtăứngădụngăkhácăkháăphổăbiếnăcủaăthịăgiácămáyătínhălƠăchoăphngătiệnătựăhƠnh,ă
từătƠuălặn,ămáyăbayăkhôngăngiălái,ăhệăthốngăhỗătrợăláiăxeăphátăhiệnăṿtăcn.ăNgoƠiă
raă cònă rấtănhiềuă nhữngă ứngădụngăhữuă íchăkhácătrongă thựcătế,ă mộtăsốă nhữngăứngă
dụngătiêuăbiểuătrongănhữngălĩnhăvựcăkểătrênăđợcăminhăhọaătrongăhìnhă2.4.
Hình 2.3. Một số ứng dụng của thị giác máy tính. (a) xe tự hành thám hiểm sao
ảỏa. (b) nh y sinh. (c) kiểm tra lỗi của sn phẩm. (d) Kiểm soát lưu lượng xe.
2. Thị Giác Máy Tính Và Thư Viện OpenCV
11
2.4 H thng th giác máy tính
CấuătrúcăcủaămộtăhệăthốngăthịăgiácămáyătínhăphụăthuộcănhiềuăvƠoăứngădụngăcụăthểă
củaăhệăthốngăđó,ăvìăthếămỗiămộtăhệăthốngăliăcóămộtăcấuătrúcăriêngăbiệt.ăTuyănhiên,
khiătổngăhợpănhữngăcấuătrúcănƠyăliăthìăcóăthểănḥnăthấyăđợcăcácăthƠnhăphầnăđặcă
trngăthngăxuấtăhiệnătrongămộtăhệăthốngăthịăgiácănhătrìnhăbƠyătrongăhìnhă2.5.
Thu thập hình nh: Quá trình này thuătḥpădữăliệuănhătừăcácăcmăbiếnănh
Tiền xử lý:ănhăsauăkhiăđợcăthuătḥpăcầnăphiăquaăquáătrìnhătiềnăxửălýănhă
đểăthỏaămƣnămộtăsốăyêuăcầuănhălấyămẫuăliăđểăhiệuăchỉnhătọaăđộăđiểmăcácă
nhăliênătiếp,ăloiăbỏănhiễuăđểăgimăthôngătinăsaiăhayătĕngăđộătngăphnă
đểăđmăboăxácăđịnhăđợcăcácăthôngătinăcầnăthiết.
Trích xuất đặc điểm:ăDữăliệuătrongămộtănhălƠărấtănhiểuătuyănhiênăkhôngă
phiădữăliệuănƠoăcũngăhữuăích.ăVìăthếătrongăgiaiăđonănƠy,ăhệăthốngăsẽătríchă
xuấtăraănhữngăđặcăđiểmăcăbnănhấtătrongănhăphụcăvụăchoăcácăquáătrìnhă
tiếpă theo.ăNhữngăđặcăđiểmănƠyă thngălƠăđngăthẳng,ă cnh,ăgócăvƠăđặcă
điểmăphứcătpănhădấuăvơn,ăhìnhădángăhayăchuyểnăđộng.
Hình 2.4. Cấu trúc hệ thống thị giác máy tính.
Thu tḥp
hình nh
Tiền xử lý
Trích xuấtăđặc
điểm nh
Dò tìm/phân
vùng
Xử lý mức cao
nh
2. Thị Giác Máy Tính Và Thư Viện OpenCV
12
Dò tìm hay phân vùng:ăĐốiătợngăcầnăquanătơmăcóăthểănằmăăbấtăkỳăđơuă
trongămộtănh,ăvìăthếăcầnăphơnănhăthƠnhănhữngăvùngănhăvƠătìmăraăvùngă
nhăquană tơmă hoặcă chứaă đốiătợngăquană tơmă đểă xửă lý.ă Muốnăphơnă vùngă
phiădựaăvƠoănhữngăđặcăđiểmăcủaănh.
Xử lý mức cao:ă ă bớcă nƠyă thìă cácă ṭpă dữă liệuă chỉă lƠă mộtă ṭpă điểmă nhă
hoặcă vùngănhă chứaăđốiă tợngă cầnă quanătơmă vƠă nhữngăđặcăđiểmăcủaăđốiă
tợngăđƣăđợcătríchăxuấtăra.ăVấnăđềăcònăliălƠăsửădụngăcácăthụtătoánăđểăxửă
lýăđốiătợngătheoăyêuăcầuăđềăra.
2.5 Th vin mã ngun mở OpenCV
OpenCV (Open Source Computer Vision) là mộtăthăviện m gồmăcácăhƠmăđợc
xây dựng phục vụ cho việc xử lý thị giác máy thi gian thực (Real time computer
vision). Các thụt toán xử lý nhăthôngăthng lẫn cao cấpăđềuăđợc tốiăuăhóaăbi
các nhà phát triểnăthƠnhăcácăhƠmăđnăgin và rất dễ sử dụng. OpenCV hỗ trợ hai
ngôn ngữ chính C/C++, python và chy trên hệ điều hành Linux, Windows và Mac
OS X.
Một trong những mụcăđíchăcủa OpenCV là cung cấp một cấu trúc h tầngăđnăgin
cho việc sử dụng thị giácămáyăgiúpăngi sử dụng xây dựng các ứng dụng thị giác
máy phức tp mộtăcáchănhanhăchóng.ăThăviện OpenCV chứa trên 500 hàm dùng
trong nhiềuălĩnhăvực của xử lý nh, gồm kiểm tra sn phẩm trong công nghiệp, nh
y sinh, an ninh, nḥn dng, hiệu chỉnh camera, stereo vision, và robot tự động.
2.5.1 Cấu trúc th vin OpenCV
Cấu trúc chính của OpenCV gồm 5 phần: CV, MLL, HighGUI, CXCORE. Bốn
trong số nƠyăđợc trình bày trong hình 2.6.
Thành phần CV chứaănhữngăthụtătoánăxửălýănhăcăbnăvƠăthụtătoánăthịă
giácă máyă tínhă mứcă cao.ă Trongă đóă cácă hƠmă đợcă xơyă dựngă vƠă tốiă uă hóaă
nhằmătìmăthôngătin,ăđặcăđiểmăcủaămộtănhălƠmăcăsăphụcăvụăchoăviệcăgiiă
thíchăhayăhiểuărõăvềăcnhăṿtătrongănh.ă
2. Thị Giác Máy Tính Và Thư Viện OpenCV
13
Hình 2.5. Cấu trúc cơ bn của OpenCV.
Thành phần MLL lƠă thă việnă máyă họcă baoă gồmă nhiềuă côngă cụă phơnă loiă
thốngăkêăvƠăphơnănhómănhăphơnăloiăNormal/NaïveăBaye,ăsăđồăquyếtăđịnhă
dngăcơyă(Decisionătrees),ămngănronăv.v
Thành phần ảighẢUI (high-levelă graphicală useră interface)ă lƠă thƠnhă phầnă
giúpă tngă tácă vớiă hệă điềuă hƠnh,ă trongă đóă chứaă cácă hƠmă vƠă thủă tụcă xuấtă
nḥpăI/O,ăcácăhƠmătoăcửaăsổăhiểnăthịăhìnhănh,ăđọcăvƠăghiădữăliệuănhăv.v ă
ThƠnhăphầnănƠy đợcăchiaăthƠnhă3ăphầnănhỏ:
Phần cứng liênăquanăđến các hotăđộngăvƠătngătácăvới camera. Các hàm
thu tḥp dữ liệu từ camera.