Tải bản đầy đủ (.pdf) (99 trang)

Quy hoạch quỹ đạo cho robot di động dựa trên thị giác máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.29 MB, 99 trang )


iv

LI CM 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 ny. 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 gii quyết những vấn đề khó khăn gặp phi.
Bên cnh đó, 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 cm ơ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 cm ơ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 TT
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ătrngăchínhăxácăhnăcácăloiăcmă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ể,ăkhongăcáchătớiăṿtăthểătrongăkhiăcácăcmăbiếnănhăsiêuăơm,ălaserăchỉăcungăcấpă


thôngătinăvềăkhongăcách.ăĐềătƠiăxơyădựngăthụtătoánăquyăhochă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ătrngăđịnhăsẵn,ătrongăđóăbnăđồăcủaă
môiătrngăđợcăcungăcấpăchoărobot. Trongăquáătrìnhădiăchuyểnărobotăđịnhăhớngă
dựaătrênăbnăđồ.ăViệcăxácăđịnhăvịătríăcủaărobotătrongămôiătrngă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ăliăvịătríăcủaărobot.ă
ViệcăxácăđịnhăđiểmămốcădựaătrênăthụtătoánănḥnădngămƠuăsắc,ăđiểmămốcăcóămƠuă
đồngănhấtăvƠăđợcăđịnhătrớc.ăCácăṿtăcnăsẽăxuấtăhiệnăngẫuănhiênătrênăđngădiă
chuyển,ărobotăphiăcóăkhănĕngănḥnăbiếtăvƠădiăchuyểnăquaăṿtăcn.ăĐểătránhăṿtăcnă
robotăsửădụngăthôngătinăđộăsơuătừăcmăbiếnăđểăxơyădựngăbiểuăđồăhistogramăvềămôiă
trngătừăđóăxácăđịnhăvùngăanătoƠnăcóăthểădiăchuyểnăqua.ăBnăđồă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ẽăphiăsửă
dụngăthụtătoánănḥnădngăđểătìmăkiếmăṿtăthểăđích.
MôăhìnhărobotădiăđộngăsửădụngălƠăloiăbaăbánhăxeăkiểuăláiăviăsai.ăCmăbiếnăđợcăsửă
dụngăchoărobotălƠăcameraăKinect.ăKinectăgồmăhaiăcameraăvƠămộtăcmă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.ăChngă
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

MC LC
LI CAM ĐOAN iii
LI CM T iv
TÓM TT v
MC LC vii
DANH SÁCH CÁC CH VIT TT x

DANH SÁCH CÁC BNG xi
DANH SÁCH CÁC HÌNH xii
Chng 1
Gii Thiu 1
1.1 Tổng quan chung về lƿnh vc nghiên cứu 1
1.2 Mc tiêu nghiên cứu 4
1.3 Phm vi nghiên cứu 4
1.4 Phng pháp nghiên cứu 4
Chng 2.
Th Giác Máy Tính vƠ Th Vin OpenCV 5
2.1 Gii thiu 5
2.2 S phát trin của th giác máy tính 7
2.3 Lƿnh vc ứng dng 9
2.4 H thng th giác máy tính 11
2.5 Th vin mã ngun mở OpenCV 12
Chng 3
Các Phng Pháp Quy Hoch Qu Đo Cho Robot 19

viii

3.1 Phng pháp đnh hng 19
3.1.1 Phng pháp đnh hng da trên bn đ 20
3.1.2 Đnh hng da trên xây dng bn đ 24
3.1.3 Đnh hng không da trên bn đ 25
3.2 Phng pháp tránh vt cn 28
3.2.1 Phng pháp Bug 28
3.2.2 Phng pháp Potential Field 29
3.2.3 Phng pháp Vecto Field Histogram (VFH) 32
3.3 Phng pháp nhn dng vt th 37
3.3.1 Phng pháp so khp đặc đim hình hc 38

3.3.2 Phng pháp nhn dng da trên din mo 39
3.3.3 Phng pháp nhn dng da trên đặc đim cc b 41
Chng 4
Thut Toán Quy Hoch Qu Đo 44
4.1 Quy hoch qu đo 44
4.1.1 Bn đ môi trng 44
4.1.2 Gii thut quy hoch qu do chuyn đng 46
4.2 Thut toán tránh vt cn 47
4.2.1 Xây dng biu đ histogram 47
4.2.2 Tính góc lái 49
4.3 Thut toán đnh v trí bằng đim mc 49
4.3.1 Tìm đim mc trên nh 50
4.3.2 Thut Toán Meanshift 52

ix

4.3.3 Đnh v trí bằng đim mc 55
4.4 Phát hin ca 56
4.4.1 Đặc đim ca 56
4.4.2 Thut toán phát hin ca 57
4.5 Tìm vt th đích 58
4.5.1 Thut toán nhn dng vt th đích 59
4.5.2 Phng pháp nhn dng SURF 59
Chng 5
Mô Hình Robot Di Đng VƠ Kt Qu Thc Nghim 64
5.1 Mô hình robot di đng 64
5.1.1 Mô hình h thng 64
5.1.2 Cm bin camera Kinect 66
5.2 Kt qu thc nghim 70
5.2.1 Bn đ môi trng 70

5.2.2 Kt qu thc nghim các thut toán 71
5.2.3 Kt qu thc nghim thut toán quy đo hoch cho robot 78
Chng 6
Kt Lun 83
6.1 Kt qu đt đc 83
6.2 Hn ch của đề tài 83
6.3 Hng phát trin của đề tài 84
TÀI LIU THAM KHO 85

x

DANH SÁCH CÁC CH VIT TT

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 BNG
BNG
TRANG
Bng 2.1: MôătămộtăsốăthụtătoánăriêngăbiệtăcủaăthƠnhăphầnăCvAux
Bng 2.2: Mô t chngătrìnhătìmăđng thẳng sử dụng biếnăđổi Hough
Bng 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ố loi 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 sn 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ơ bn 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 dng khuôn mặt.
Hình 2.9. Thuật toán tìm màu áo.
Hình 3.1. Bn đồ 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 dng mã vch.
Hình 3.5. Bn đồ môi trường. (a) bn đồ lý tưởng. (b) bn đồ 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 dng diện mo.
Hình 3.8. Phương pháp tránh vật cn Bug.
Hình 3.9. Trường lực hút biểu diễn dưới dng biểu đồ điềm và vecto lực.
Hình 3.10. Trường lực đẩy biểu diễn dưới dng 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. Bn đồ ô mắt lưới hai chiều

Hình 3.13. Bn đồ ô luới vùng cửa sổ tích cực.
Hình 3.14. ảướng và biên độ của một vecto cn.
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. Bn đồ môi trường cung cấp cho robot.
Hình 4.2. Gii thuật quy hoch quỹ đo của robot.
Hình 4.3. Mối tương quan về góc giữa robot và vật cn.

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ế hot độ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) dng U ngược (b)
dng hai cnh 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 dng vật thể đích.

Hình 4.17. Thuật toán nhận dng 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 to 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. Cm 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. Bn đồ 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 cn.
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 dng cửa
Hình 5.15. Phát hiện cnh 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 dng đú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.
Gii Thiu




1.1 Tổng quan chung về lƿnh vc nghiên cứu

Trongăhnănửa thế kỷ hình thành và phát triển, lĩnhăvực nghiên cứu, chế to 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ăngi làm các công việc nặng nhọc, nguy
hiểm trongămôiătrngăđộc hi [1]. Banăđầu, robot chủ yếuăđợc ứng dụng trong các
nhà máy xí nghiệp nhngăđế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ădngănhăṿyăđƣăto 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à hotăđộng củaărobotătrongămôiătrng tự nhiên.
Có thể phân loi một số loi 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 loi robot công nghiệp (Industrial Robot) nhăhìnhă 1.1a, robot y tế (Medical
Robot) và robot trợ giúpăngi 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 loi
1. Giới Thiệu


2

chínhălƠă robotăđiă(Walkingă robots) 1.1c vƠărobotă dángăngi (Humanoid Robots)
nhăhìnhă1.1d.
Ti Việt Nam, lĩnhăvực nghiên cứu, chế toă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ăbn và
nghiên cứu ứng dụng về robot đợc thực hiện kháăđaădng 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ăngiă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 li những hình nh từ môiătrngă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
trng, quá trình này giốngănhăquáătrìnhătổng hợp hình nh của thị giácăconăngi.

Hình 1.1. Một số loi 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ăhnă soăvới những k̃ thụt cm biến
truyền thống vì nó có thể xây dựngăđợc bnăđồ 2D, 3D về môiătrng xung quanh
vớiăđộ chính xác cao trong khi với những cm biếnăthôngăthngăđợc sử dụngănhă
cm biến quang, siêu âm hay lade chỉ dừng  mức phát hiện ṿt thể và khong cách
giữa robot với ṿt thể. K̃ thụt thị giác cũngăgiúp robot có thể nḥn dngăđợ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 phi kết hợp sử dụng với cácăchngătrìnhăvƠăthăviện xử lý thông
tin cho robot bi vì việc xây dựng phần mềm cho robot là rất phức tp.
Cácăchngă
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ăchngă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à ging dy robot do tính m của
nó. Player là mộtănetworkăserverăđiều khiển robot. Player chy trên robot và cung
cấp giao tiếp với các cm biến và bộ truyềnăđộng qua mngăIP.ăChngătrìnhăclientă
giao tiếp với Player qua TCP socket và đọc dữ liệu từ các cm 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ă thngă mi và chy 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ăchngă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ăngi 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 ti 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 Mc tiêu nghiên cứu
Mục tiêu đề tài là xây dựng thụt toán quy hoch 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ăphi có kh nĕngă
tránh ṿt cn.ăĐể di chuyển, robot dựa trên vị trí cho bi 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 dng màu sắcăvƠăcácăđặcăđiểm cục bộ của nh ṿt thể.
1.3 Phm vi nghiên cứu
Phm vi nghiên cứu củaăđề tài giới hn trong những ứng dụng trong nhà. Robot sẽ
di chuyển trong bnă đồ môiătrngă đƣăđợ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ăgin 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 cn và sử dụng thụt toán
nḥn dngăđể phát hiện ṿt thể đích.
1.4 Phng pháp nghiên cứu
Cácăphngăphápănghiênăcứuăđợc sử dụngătrongăđề tài là:

 Phngă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ăhochăqũăđo cho robot.
 Phngăphápăkhoăsát:ăkhoăsátănhữngămôăhình robotătựăhƠnhăhiệnăcó.
 Phngă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 Vin
OpenCV


Phầnăđầuăchngă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ăliăchoăđiăsốngăcủaă
conăngiă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ă chng.ă 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 Gii thiu
Với sự phát triển mnh 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 tpăđòiăhỏi nhiều về sức mnh 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 mnh 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ăhnă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 mnh mẽ trong thi 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ăto ra

một hệ thống nhân to 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ăngi, 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ăngi.ăConăngi có thể cm 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 cm của từng
ngi 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,
mngănronăv v. sẽ giúp cho thiết bị tiến dần tới một hệ thống nhân to có kh nĕngă
ra quyếtăđịnh chính xác và linh hotăhnărất nhiều.
Lĩnhăvực nghiên cứu của thị giác máy tính rấtăđaădngă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 gii quyết, mỗi
phngă phápă đềuă đtă đợc một kết qu nhấtă định cho nhữngă trng 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 trin 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
ngi và làm cho robot có những hành vi thông minh. Vào thiăđ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ăngiătiênăphongăđầu tiên về
lĩnhăvực trí thông minh nhân toăvƠărobotănhăMIT,ăStanford,ăvƠăCMU.ăNhững nhà
nghiên cứuăđƣăgii quyết vấnăđề "đầu vào thị giác" và to ra tiềnăđề để gii quyết
các vấnăđề khóăkhĕnăhn.ă
Đ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 li 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ề cnh ṿt. Những nỗ lựcăđầu
tiên về sự hiểu biết cnh ṿt là trích xuất cnh 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ô to nên bi nhữngăđng thẳng
2D của Roberts (1965). Ti thiăđ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ăphng 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ăphngăphápătiếp c̣n đợc sử dụng nhiều
trong nḥn dng đốiătợng. Mô hình ba chiều của các đốiătợng có hình dáng không
phi khốiăđaădiện cũng đợc nghiên cứu vào thiăđiểmăđóăbi 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 thng đợ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ề cngăđộ ánh sáng và sự đổ bóng, và gii 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 hn nh địnhăhớng bề mặt và đổ bóng
(hình 2.3d), phát triển cùngăýătng này là bn tho về không gian 2,5 chiều của
Marr (1982). Bên cnhăđóălƠăthụt toán tìm sự tngăứ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 bi Dev (1974) và tiếp tục phát
triển bi 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 bi 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
tp để 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ự tngă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 dng ṿ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ătrng ri rc 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ăhn.ă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
biă Seitză vƠă Dyeră (1999),ă Kutulakosă vƠă Seitză (2000)ă để to 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 ci 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ăngi 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 dng khuôn mặt đợc phát triển bi 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ự tngătácăgiữa thị
giácămáyătínhăvƠăđồ họa máy tính nghiên cứu biăSeitzăvƠăSzeliskiă(1999),ăđặc biệt
trong phối cnh và mô mình hóa dựa trên nh.
Đến tḥp niên 2000, có thể thấyăđợc sự nhăhng 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ăhn,ărất nhiều chủ đề đề c̣păđến
việc phối cnh 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 dng củaăPonceăvƠăcácăđồng sự (2006).
Quaăhnă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ăngi thì còn là mộtăbớc tiến rất dài  phía
trớc.
2.3 Lƿnh vc ứng dng
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,ăsnă
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ătrngătừănh.ăNhữngănhănƠyă
đợcă chụpă từăkínhă hiểnăvi,ă máyăXă quang,ă chụpăđộngă mch,ă 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,ăluă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ătrngătrongănhăgiúpăkiểmăsoátăquáătrìnhăsnăxuấtănhăchấtălợngăsnă
phẩm,ătìmăkiếmălỗiăkhuyếtăṭt,ăkíchăthớcăsnă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ădng,ăhayăphứcătpăhnă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ăphngătiệnătựăhƠnh,ă
từătƠuălặn,ămáyăbayăkhôngăngiălái,ăhệăthốngăhỗătrợăláiăxeăphátăhiệnăṿtăcn.ă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 sn 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 thng 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ăliă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ăliăthìăcóăthểănḥnăthấyăđợcăcácăthƠnhăphầnăđặcă
trngăthngă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ăcmăbiếnănh
 Tiền xử lý:ănhăsauăkhiăđợcăthuătḥpăcầnăphiă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ăliăđểăhiệuăchỉnhătọaăđộăđiểmăcácă
nhăliênătiếp,ăloiăbỏănhiễuăđểăgimăthôngătinăsaiăhayătĕngăđộătngăphnă
đểăđmăboă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ă
phiădữăliệuănƠoăcũngăhữuăích.ăVìăthếătrongăgiaiăđonănƠy,ăhệăthốngăsẽătríchă
xuấtăraănhữngăđặcăđiểmăcăbnănhấtătrongănhăphụcăvụăchoăcácăquáătrìnhă

tiếpă theo.ăNhữngăđặcăđiểmănƠyă thngălƠăđngăthẳng,ă cnh,ăgócăvƠăđặcă
điểmăphứcătpă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ă
phiă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ăliălƠăsửădụngăcácăthụtătoánăđểăxửă
lýăđốiătợngătheoăyêuăcầuăđềăra.
2.5 Th vin mã ngun 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 thi gian thực (Real time computer

vision). Các thụt toán xử lý nhăthôngăthng lẫn cao cấpăđềuăđợc tốiăuăhóaăbi
các nhà phát triểnăthƠnhăcácăhƠmăđnăgin và rất dễ sử dụng. OpenCV hỗ trợ hai
ngôn ngữ chính C/C++, python và chy 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ăgin
cho việc sử dụng thị giácămáyăgiúpăngi sử dụng xây dựng các ứng dụng thị giác
máy phức tp 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 sn phẩm trong công nghiệp, nh
y sinh, an ninh, nḥn dng, hiệu chỉnh camera, stereo vision, và robot tự động.
2.5.1 Cấu trúc th vin 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ăbnă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ăgiiă
thíchăhayăhiểuărõăvềăcnhăṿ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ơ bn 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ă loiă
thốngăkêăvƠăphơnănhómănhăphơnăloiăNormal/NaïveăBaye,ăsăđồăquyếtăđịnhă
dngăcơyă(Decisionătrees),ămngănronăv.v
 Thành phần ảighẢUI (high-levelă graphicală useră interface)ă lƠă thƠnhă phầnă
giúpă tngă 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ătoă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 hotăđộngăvƠătngătácăvới camera. Các hàm
thu tḥp dữ liệu từ camera.

×