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

đồ án tốt nghiệp robot bám đối tượng

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 (3.85 MB, 72 trang )




NHNG DN

Giáo viên hướng dẫn: ThS. Phạm Hoàng Thông
Sinh viên thực hiện: Nguyễn Đình Tuấn MSSV: 08118063
Huỳnh Hữu Thái MSSV: 09118085
Lớp: 09118CL1
Ngành: Công nghệ điện tự động
Tên đề tài: NG DNG X U KHIN XE T .
 Nha gng dn:











Kt lun:
Điểm xếp loại: Bằng số: ……… Bằng chữ: ………


TP. Hồ Chí Minh, ngày…… tháng…… năm 2014
ng dn




ThS. Phạm Hoàng Thông



NHN BIN

Giáo viên phản biện: ……………………………………………………
Sinh viên thực hiện: Nguyễn Đình Tuấn MSSV: 08118063
Huỳnh Hữu Thái MSSV: 09118085
Lớp: 09118CL1
Ngành: Công nghệ điện tự động
Tên đề tài: NG DNG X U KHIN XE T .
 Nha gn bin:











Kt lun:
Điểm xếp loại: Bằng số: ……… Bằng chữ: ………


TP. Hồ Chí Minh, ngày…… tháng…… năm 2014

n bin








 t Nghip i



LI M U
Ngày nay với sự phát triển của khoa học công nghệ, cùng với việc ứng dụng
mạnh mẽ khoa học kỹ thuật, các lĩnh vực thăm dò thám hiểm trong những khu vực
mà con người có thể gặp nguy hiểm, để giải quyết vấn đề này robot tự hành đã được
nghiên cứu và chế tạo. Trong đó, việc tạo ra trí tuệ hay thị giác nhân tạo cho robot
đang rất được coi trọng và phát triển. Những năm gần đây, các thế hệ robot tự hành
đóng vai trò quan trọng trong sự phát triển, tiến bộ của nền văn minh nhân loại. Các
lĩnh vực đang ứng dụng robot tự hành cụ thể như thám hiểm (địa hình khó khăn,
nguy hiểm, không gian…), kiểm tra các khu vực độc hại với con người (phóng xạ,
chất hóa học, bệnh dịch …), lĩnh vực quân sự (dò phá bom mìn, do thám, cứu hộ…)
và các ứng dụng khác trong lĩnh vực công nghiệp, đời sống.
Việc nghiên cứu, ứng dụng những gì đã học vào thực tế cuộc sống là một điều rất
cần thiết trong vai trò làm chủ công nghệ hiện nay. Để góp phần tạo nền tảng vững
chắc cho việc học tập, tìm hiểu kỹ thuật điều khiển tự động, nhóm thực hiện đã lựa
chọn nghiên cứu đề tài:   . Với việc
ứng dụng các mô hình, kết nối, truyền tải dữ liệu và giám sát từ xa qua mạng truyền
thông, nhóm đã học hỏi và rút ra rất nhiều kinh nghiệm quý báu cho bản thân.

Ngoài việc hoàn thành đồ án tốt nghiệp, sinh viên được trải nghiệm thực tế,
những kiến thức học được từ ghế nhà trường sẽ giúp sinh viên hoàn thiện những kỹ
năng cần thiết sau này. Trong quá trình tiến hành còn gặp những khó khăn vấp phải,
do đó sinh viên tư duy để tìm ra phương án tối ưu, đồng thời trao đổi thảo luận lẫn
nhau nhằm mục đích hình thành thói quen làm việc nhóm và phương pháp làm việc
có hiệu quả.
Tuy nhiên do hạn chế về thời gian thực hiện, việc thực hiện đề tài không thể
tránh khỏi những thiếu sót. Rất mong sự chỉ bảo thêm của quý thầy cô cũng như
những đóng góp của các bạn sinh viên.
Xin chân thành cảm ơn!

Nhóm thực hiện đề tài
Nguyn
Hunh H





 t Nghip ii



LI C
Lời đầu tiên nhóm thực hiện xin gửi lời cảm ơn đến tất cả quý thầy cô giảng
dạy tại trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, đặc biệt là quý
thầy cô Khoa Đào Tạo Chất Lượng Cao đã giảng dạy và cung cấp những kiến thức
bổ ích tạo tiền đề cho nhóm thực hiện đồ án này.
Nhóm xin gửi lời cảm ơn chân thành đến giáo viên hướng dẫn là thầy Phạm
Hoàng Thông, thầy đã cung cấp ý tưởng, trang thiết bị, đồng thời tận tình hướng

dẫn, giúp đỡ tạo mọi điều kiện thuận lợi cho nhóm trong suốt quá trình thực hiện đề
tài.
Nhóm cũng xin gửi lời cảm ơn đến thầy Nguyễn Minh Tâm, thầy Nguyễn Văn
Đông Hải và quý thầy cô giảng dạy tại xưởng điện đã tận tình giúp đỡ và tạo điều
kiện thuận lợi cho nhóm có cơ hội nghiên cứu và thực hành tại phòng thí nghiệm.
Cảm ơn đến thầy cô trong Khoa Điện - Điện Tử và các bạn đã chia sẻ, trao đổi
kiến thức giúp nhóm thực hiện tốt đề tài.
Cảm ơn cha mẹ, những người thân đã góp ý kiến, giúp đỡ và động viên nhóm
hoàn thành đề tài này.
Xin chân thành cảm ơn!

Nhóm thực hiện đề tài
Nguyn
Hunh H













 t Nghip iii





: TNG QUAN 1
1.1 t v 1
1.2 M  3
1.3 Gii h  3
1.4 u 3
1.5 N  4
:  T 5
2.1 Xe t c t 5
2.1.1 Tng quan v xe t  5
2.1.2 ng dng ca xe t c t 5
2.1.3 Cn ca mt xe t  6
2.2 Gii thiu v u khin 6
2.3 ng hc robot 7
2.4 Gii thiu v n OpenCV 7
2.4.1 m ca OpenCV 8
2.4.2 Gii thiu OpenCV 2.4.7 10
2.5 t chung v thu Cam-shift 10
2.5.1 Gii thiu v Camshift 10
2.5.2 SV 10
2.5.3 t Camshift 12
2.5.4 nh v  14
2.6 Giao thc UDP (User Datagram Protocol) 15
3: THIT K H THNG 16
3.1 t k    16
3.1.1 u thit k  16
3.1.2 u thit k u khi 16
3.2 iu khin ARM 17
3.2.1  u khin ARM Cortex-M3 17

 t Nghip iv



3.2.2 Kiu khin Cortex-M3 19
3.2.3 u khin STM32F103C8T6 29
3.3  30
3.4 u khi 31
3.5  32
3.6 Camera 32
3.7   33
3.8 Mng lc 33
3.8.1 IC  33
3.8.2 Opto 4N35 34
3.8.3 IC giao tip v- UART) 35
3.8.4 Modem wifi 35
T K GIAO DIN 37
4.1 ng phn cng 37
4.1.1   37
4.1.2 Mu khiu khin 38
4.2 Thit k giao diu khin 42
4.2.1 Gii thic giao din Visual Studio 2010 42
4.2.2 Kt h 43
4.2.3  43
4.2.4 Thit k giao diu khin 44
4.2.5  u khin 45
T QU THC NGHIM 47
5.1 Kt qu 47
5.1.1 Ly histogram 47
5.1.2 Nhn dii ng 48

5.2 Kt qu theo vng 49
5.2.1 t 49
5.2.2 i 50
 t Nghip v



5.3 Truyn lu khin qua cng COM 52
5.3.1 Ch  u khin bng tay 52
5.3.2 Ch  t ng 54
5.4 Kt nu khin bng wifi 56
5.4.1 Truyn nhn video 56
5.4.2 Truyn nhu khin 57
 :KT LUN 58
6.1 Kt lun 58
ng dng 58
PH LC 60
ng dn s d 60
u tham kho 61


















 t Nghip vi



DANH M
 Một số hệ thống camera trong robot tự hành trong sản xuất và vũ trụ. 1
 Cánh tay máy gắn camera và xe tự hành thám hiểm. 2
 Máy bay và xe tăng không người lái. 2
 2.1: Xe tự hành của Google. 5
 Cấu trúc cơ bản của xe tự hành. 6
 Phân tích chuyển động của robot. 7
Cấu trúc cơ sở của OpenCV. 9
 Không gian màu HSV. 11
Chuyển đổi không gian màu. 11
 2.7: Biểu đồ xác định giá trị lớn nhất bằng cách thay đổi y. 12
 2.8: Kỹ thuật dịch chuyển cửa sổ tìm kiếm của mean-shift. 12
 2.9: Giải thuật Camshift theo vết đối tượng. 14
 Mô tả gói dữ liệu truyền theo giao thức UDP. 15
1: Bộ vi điều khiển Cortex-M3 20
 Bản đồ bộ nhớ 21
Hiệu suất tương đối và kích thước mã lệnh của ARM. 23
 Hệ thống theo vết Cortex-M3 28
 Vi điều khiển STM32F103C8T. 29
 Cấu trúc vi điều khiển STM32 29

Động cơ KM3448A-24VDC 30
 IC L298N. 31
Sơ đồ chân IC L298N 31
Sơ đồ khối IC L298N. 31
Bánh xe dùng cho động cơ có bộ giảm tốc đường kính 100mm. 32
Logitech C170. 32
Acer Iconia W3 8.1 inch. 33
 LM2576T-5. 33
Sơ đồ mắc mạch. 34
 AMS1117-3.3. 34
 4N35. 34
H FT232. 35
Modem wifi Tenda W311R 35
 4.1: Sơ đồ các khối điều khiển 37
 Mô hình T2-Mobi robot 38
 Cấu trúc bên trong T2-Mobi robot 38
 t Nghip vii



 4.4: Cụm nguồn cấp điện cho mạch. 39
 4.5: Sơ đồ nguyên lý cụm điều khiển. 39
 4.6: Sơ đồ nguyên lí cụm công suất. 40
 4.7: Mạch điều khiển. 40
 Sơ đồ nguyên lý mạch ARM. 41
 4.9: Mạch ARM. 41
 Giao diện Visual Studio 2010 42
 Giao diện chương trình uVision4 43
 4.12: Giao diện điều khiển robot 44
 4.13:Giao diện điều khiển từ xa 45

H 4.14: Lưu đồ hoạt động của chương trình điều khiển. 46
 Theo dõi vật có màu vàng. 47
 Theo dõi vật có màu đỏ. 47
 Xác định các thông số vị trí của đồ vật. 48
 Xác định các thông số vị trí của khuôn mặt 48
 Xác định vị trí vật (a) 49
 Xác định vị trí vật (b) 49
: Xác định vị trí vật (c) 50
 Xác định vị trí người(a) 50
 Xác định vị trí người(b) 51
 Xác định vị trí người(c) 51
 Điều khiển chạy lùi. 52
 Điều khiển tiến tới. 52
 Điều khiển quay phải. 53
 Điều khiển quay trái. 53
 Vị trí gần và lệnh lùi 54
 Vị trí phải và lệnh quay trái. 54
 Vị trí trái và lệnh quay phải. 55
 Vị trí giữa và lệnh dừng. 55
 Vị trí xa và lệnh tiến. 56
 Truyền nhận video qua wifi. 56
 5.21: Master lấy quyền điều khiển. 57
 5.22: Nhận lệnh quay trái. 57
 5.23: Nhận lệnh tiến tới. 57
 5.24: Nhận lệnh quay phải 57
 5.25: Nhận lệnh chạy lùi. 57
 t Nghip viii




DANH MNG
Bng 2.1: So sánh giữa Camshift và Meanshift. 13
Bng 3.1: Thông số kỹ thuật động cơ KM3448A-24VDC . 30
Bng 3.2: Bảng thông số modem Tenda W311R 36
 4.1: Bảng trạng thái hoạt động của robot 45
























 t Nghip ix




DANH M VIT TT
OpenCV – Open Source Computer Vision Library.
Camshift – Continuously Adaptive Mean Shift.
CAN – Controller Area Network .
USB – Universal Serial Bus.
UART – Universal Asynchronous Reciver/Transmitter.
FIFO – First In First Out.
NMI – Non_Maskable Interrupt.
UDP - User Datagram Protocol.
LAN – Local area network.
WLAN – Wireless Local area network.
TCP/IP – Transmission Control Protocol/Internet Protocol.
SWD - Serial Wire Debug.
JTAG – Joint Test Action Group.
FET – Field Effect Transistor.
CPU – Central Processing Unit.
RAM – Randum Acess Memory.
ALM – Application lifecycle management.
 t Nghip 1


C 1: TNG QUAN

C 1: 
1.1 t v
Nghiên cứu điều khiển robot là bài toán được các nhà khoa học quan tâm, nhằm
phục vụ cho con người ở nhiều lĩnh vực ứng dụng như: robot khuân hàng hóa tự

động, robot dọn rác, lau nhà, hỗ trợ người khuyết tật, robot trong công nghiệp ôtô,
thăm dò khai thác mỏ Do có tính ứng dụng cao nên các nhà nghiên cứu đã bắt tay
vào phát triển các robot thông minh hơn, phục vụ tốt cho nhu cầu phát triển kinh tế,
xã hội. Để làm được điều đó, cần có sự kết nối giữa “bộ não thông minh” và robot
để tạo nên những robot thông minh như ngày nay. Máy học chính là nền tảng giúp
robot có thể thông minh, hoạt động tinh vi hơn.     u
   r          t trong
nhc ng dng nhiu trong thc t. Những Robot này có
thể thực hiện nhiều hành động khác nhau thông qua hành vi của đối tượng để đáp
ứng tốt cho con người nhờ vào sử dụng các mô hình máy học tự động.

: Một số hệ thống camera trong robot tự hành trong sản xuất và vũ trụ.
Thị giác máy tính đã và đang rất phát triển. Khái niệm xử lý ảnh và thị giác máy
(Computer vision) có liên quan đến nhiều ngành học và hướng nghiên cứu khác
nhau. Với trình độ công nghệ tiến bộ hiện nay, các tập dữ liệu lớn như hình ảnh, các
đoạn phim thì khái niệm kỹ thuật và thị giác máy càng được nhắc đến và nghiên
cứu nhiều hơn hiện nay. Thị giác máy bao gồm lý thuyết và các kỹ thuật liên quan
 t Nghip 2


C 1: TNG QUAN

nhằm mục đích tạo ra một hệ thống nhân tạo có thể tiếp nhận thông tin từ các ảnh
thu được hoặc các tập dữ liệu đa chiều. Việc kết hợp thị giác máy tính với các công
nghệ khác (như công nghệ thông tin, truyền thông, điện tử, công nghệ tự động, cơ
khí…) giúp cho chúng ta phát triển rất nhiều ứng dụng trong đời sống hằng ngày,
cũng như trong khoa học, an ninh, quân sự… Ngày nay, ứng dụng thị giác máy tính
đã trở nên rất rộng lớn và đa dạng, len lỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ
trụ, cho đến y học, sản xuất và tự động hóa.  x nh bao gm nhiu
u, mt trong nhng h thng

ng bng thu nh ca OpenCV.

: Cánh tay máy gắn camera và xe tự hành thám hiểm.

: Máy bay và xe tăng không người lái.

 t Nghip 3


C 1: TNG QUAN

1.2 M 
Mục tiêu đề tài là nhằm thiết kế một robot di động có khả năng tự di chuyển theo
đối tượng được chọn sẵn, với cấu trúc đơn giản đồng thời điều khiển và giám sát
thông qua màn hình camera từ robot truyền về.
Vận dụng hiểu biết về thư viện OpenCV xây dựng thị giác và trí thông minh cho
robot cụ thể là mô hình xe tự hành.
Toàn bộ các thông số của quá trình điều khiển robot có thể được cài đặt và giám
sát từ xa, giúp người giám sát có thể theo dõi và kịp thời xử lý nếu robot gặp bất cứ
vấn đề nào.
1.3 Gii h 
Đề tài mô phỏng mô hình hoạt động của một robot tự hành hiện đang hoạt động
trong một số lĩnh vực khoa học và quân sự. Việc giám sát và điều khiển chúng hoạt
động trong không gian phòng thí nghiệm chứ không nghiên cứu cả một robot hoàn
chỉnh ngoài thực tế. Trong phần thiết kế điều khiển, robot chỉ có thể di chuyển trên
bề mặt phẳng bằng 2 động cơ DC, đồng thời có gắn thêm các đèn led mô phỏng các
ứng dụng khác kèm theo của một xe tự hành thực sự. Mạch điều khiển đơn giản, dễ
dàng lắp đặt và thay thế nếu có sự cố, kết hợp đèn báo. Chương trình giám sát được
viết bằng Microsoft Visual Studio 2010 trên nền Windows Forms dễ quan sát,
không quá phức tạp khi vận hành mô hình và có thể theo dõi được đường đi của

robot. Xe chỉ có thể di chuyển ổn định với các bề mặt phẳng và ít gập ghềnh.
1.4 u
Dựa vào mô hình các ứng dụng xe tự hành đang hoạt động ngoài thực tế trong
các lĩnh vực khác nhau, nhóm chế tạo ra một mô hình thu nhỏ và đơn giản phục vụ
cho việc nghiên cứu. Áp dụng những kiến thức đã được đào tạo ở trường, các tài
liệu giáo khoa có sẵn và những tài liệu tìm kiếm trên mạng internet chế tạo mạch
điều khiển phù hợp với thiết kế của robot. Trong một phạm vi hoạt động cho phép,
mô hình có thể vận hành tốt. Hai bánh xe có thể hoạt động tương đối chính xác.
Chương trình điều khiển giám sát có thể cho thấy đường đi và những việc xảy ra
phía trước robot, thu thập hình ảnh, cảnh báo sự cố giúp cho người vận hành có thể
quan sát và khắc phục.




 t Nghip 4


C 1: TNG QUAN

1.5 N 
Phần còn lại của đề tài như sau.
Chương 2 Cơ sở lý thuyết
Chương này trình bày
 Tổng quan về hoạt động của một xe tự hành.
 Tính toán, trình bày yêu cầu thiết kế của hệ thống.
 Giới thiệu về OpenCV và thuật toán Camshift.
 Ứng dụng cụ thể trong một số lĩnh vực của robot.
Chương 3 Mô tả về Robot
Chương này trình bày

 Yêu cầu thiết kế phần cứng, lựa chọn thiết bị cho mô hình.
 Chi tiết thiết bị sử dụng trong mô hình, phương pháp lựa chọn các
thiết bị ngõ vào/ra trong hệ thống.
 Sơ đồ kết nối phần cứng giúp người vận hành hiểu rõ về cấu trúc của
toàn hệ thống.
Chương 4 Lưu đồ điều khiển và giám sát của Robot
Chương này trình bày
 Trình bày lưu đồ, giải thuật điều khiển.
 Phương pháp sử dụng để theo dõi và nhận biết đối tượng.
 Trình bày về chương trình giao diện điều khiển và giám sát của robot.
Chương 5 Kết quả
Chương này trình bày
 Kết quả sau khi thiết kế, thi công mô hình.
 Kết quả kết hợp giữa mô hình và giao diện điều khiển giám sát.
Chương 6 Kết luận và hướng phát triển
Chương này trình bày
 Kết quả nhận được sau khi hoàn thành đề tài.
 Đưa ra các phương pháp phát triển và hoàn thiện về mô hình cũng
như giao diện điều khiển giám sát nhằm tối ưu hóa hệ thống trong tương lai.


 t Nghip 5


C 2:  T

C 2: 
2.1 Xe t c t
2.1.1 Tng quan v xe t 
Xã hội ngày càng phát triển, kèm theo đó nhu cầu tận hưởng tiện nghi của con

người ngày càng cao. Để đáp ứng nhu cầu này, nhiều công ty đang tập trung
nghiên cứu, phát triển các thiết bị hoạt động một cách tự động nhằm đáp ứng
nhu cầu đó. Các thành tựu hiện nay chúng ta đã đạt được như chế độ bay tự động
ở máy bay, chế độ lái tự động ở tàu thủy và đặc biệt là chế độ lái tự động đang
được thử nghiệm trên xe hơi.
2.1.2 ng dng ca xe t c t
Xe tự hành có khả năng di chuyển trên đường mà không cần sự điều khiển của
con người.Trong tương lai gần, xe tự hành có thể được sử dụng làm taxi không
người lái, phương tiện di chuyển cho người tàn tật.


 2.1: Xe tự hành của Google.





 t Nghip 6


C 2:  T

2.1.3 Cn ca mt xe t 
Bao gồm các phần như hình sau:










 2.2: Cấu trúc cơ bản của xe tự hành.
2.2 Gii thiu v vi u khin
Trong vài năm trở lại đây, một trong những xu hướng chủ yếu trong thiết kế với
vi điều khiển là sử dụng các chip ARM7 và ARM9 như một vi điều khiển đa dụng.
Tập đoàn STMicroelectronic vừa cho ra đời dòng sản phẩm STM32, vi điều khiển
đầu tiên dựa trên nền lõi ARM Cortex-M3 thế hệ mới nhất do hãng ARM thiết kế.
Lõi ARM Cortex-M3 là sự cải tiến của lõi ARM7 truyền thống, từng mang lại thành
công vang dội cho công ty ARM. Ưu điểm của dòng STM32 là hiệu suất cao, chi
phi thấp, cũng như khả năng đáp ứng các ứng dụng yêu cầu tiêu thụ năng lượng
thấp và tính điều khiển thời gian thực khắc khe.
Khối trung tâm của STM32 là bộ xử lý Cortex-M3. Bộ xử lý Cortex-M3 là 1 vi
điều khiển được tiêu chuẩn hóa gồm 1 CPU 32bit, cấu trúc bus (bus structure), đơn
vị xử lý ngắt có hỗ trợ tính năng ngắt lồng vào nhau NVIC, hệ thống kiểm lỗi
(debug system) và tiêu chuẩn bố trí bộ nhớ (standard memory layout).
Một trong những thành phần chính của lõi Cortex-M3 là NVIC (Nested Vector
Interrupt Controller). NVIC là thành phần tích hợp của bộ vi điều khiển CortexM3
có khả năng xử lý ngắt rất linh hoạt và nhanh chóng. Trong cài đặt chuẩn, nó cung
cấp một NMI (Non- Maskable Interrupt) và 32 ngắt vật lý đa dụng với 8 mức ưu
tiên. Nó có thể được cấu hình từ 1 đến 240 ngắt vật lý với tối đa 256 mức độ ưu
tiên. NVIC hỗ trợ ngắt lồng vào nhau, cho phép một ngắt được xử lý trước một ngắt
khác dựa trên mức độ ưu tiên. Nó cũng hỗ trợ cấu hình mức ưu tiên động cho các
ngắt. Độ ưu tiên có thể được thay đổi bằng phần mềm trong thời gian chạy (run
Tín hiệu từ cảm biến,
camera…
Bộ xử lý trung tâm
Tín hiệu điều khiển
Cơ cấu chấp hành

 t Nghip 7


C 2:  T

time). Các ngắt đang được xử lý đều bị khóa đến khi hàm xử lý ngắt hoàn thành, do
đó độ ưu tiên của ngắt có thể thay đổi mà không cần lo đến chuyện trùng lặp.
STM32F1 là dòng cơ bản, hỗ trợ gần như đầy đủ các ứng dụng cơ bản mà
những dòng vi điều khiển 8 bit đang có đồng thời nâng cấp 1 số ứng dụng cấp cao
như CAN, USB, Ethernet
2.3 ng hc robot
Đặt robot trong hệ trục toạ độ 



 gắn với mặt đất và hệ trục toạ độ  gắn
vào trọng tâm của robot. Gọi 



lần lượt là vận tốc góc của bánh trái, bánh
phải và của robot;  lần lượt là bán kính và khoảng cách từ tâm robot đến bánh
xe;  là vận tốc tịnh tiến của robot.

 Phân tích chuyển động của robot.
Phân tích theo hình ta được ta được phương trình biểu diễn mối quan hệ giữa vận
tốc góc của bánh xe và vận tốc tịnh tiến của robot.

















 (2.1)
2.4 Gii thiu v n OpenCV
Ngày nay, thế giới đang tràn ngập với ảnh và video số, máy tính có tốc độ xử lý
ngày càng cao, và thị giác máy đã có nhiều ứng dụng thực tế được ghi nhận như
nhận dạng biển số, nhận dạng vân tay, mã vạch, tương tác người-máy, tương tác
thực ảo ….Vì thế nghiên cứu thị giác máy là một xu hướng của thế giới số. Muốn
xây dựng các ứng dụng với thị giác máy, chúng ta cần có các công cụ và OpenCV
(Open Computer Vision) là một chọn lựa hoàn hảo để bắt đầu, đây là thư viện mã
nguồn mở được phát triển bởi hãng Intel với hơn 500 thuật toán tối ưu cho phân
 t Nghip 8


C 2:  T

tích, xử lý ảnh và video số vẫn đang được phát triển bởi nhiều nhà nghiên cứu trên
thế giới.
Hiện tại, thị trường thị giác máy đang ngày càng mở rộng và liên tục phát triển.

Thư viện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dàng hơn,
đặc biệt là tối ưu khi sử dụng cấu trúc của Intel. Tạo ra các mẫu ứng dụng bằng các
thư viện được cập nhật thường xuyên và thực hiện được các thuật toán rất nặng như
dò tìm khuôn mặt, bám theo đối tượng, nhận dạng vân tay… Có rất nhiều công nghệ
hiện đại và các công ty lớn sử dụng thư viện OpenCV trong ứng dụng của họ (điển
hình như Intel, Microsoft, IBM, Siemens, Google v v…) và các trung tâm nghiên
cứu như (Stanford, MIT, CMU, Cambridge, INRIA…). Tất cả điều đó có thể khẳng
định OpenCV thực sự đã góp phần vô cùng lớn trong lĩnh vực thị giác máy tính.
2.4.1  c m ca OpenCV
OpenCV có rất nhiều chức năng với rất nhiều hàm và thuật toán khác nhau, ở
đây nhóm chỉ xin đề cập đến một vài chức năng chính của nó. Sau đây là những tóm
tắt cơ bản về hệ thống các chức năng của các hàm trong OpenCV.
2.4.1.1 Cn ca OpenCV
Để hiểu OpenCV làm việc như thế nào chúng ta bắt đầu từ sự phân chia cấu
trúc và nội dung của OpenCV ở 5 phần. Cấu trúc của OpenCV được chia thành 5
phần chính, 4 trong số đó được chỉ ra trong hình dưới đây:
- CV (Computer Vision) là thành phần chứa những xử lý ảnh cơ sở và thuật
toán thị giác máy ở mức cao.
- MLL (Machine Learning Library) là thư viện machine learning, cái này bao
gồm rất nhiều lớp thống kê và gộp các công cụ xử lý.
- HighGUI chứa các thủ tục vào/ra và các hàm cho việc lưu trữ và tải ảnh của
video.
- CXCore chứa cấu trúc và nội dung dữ liệu cơ sở.

 t Nghip 9


C 2:  T



2.4: Cấu trúc cơ sở của OpenCV.
2.4.1.2 OpenCV
OpenCV cung cấp các hàm cho phép chúng ta tương tác trực tiếp với hệ
điều hành, các file hệ thống, các phần cứng như Webcam. Các hàm này nằm
trong thư viện HighGUI.h cho phép mở một window, hiển thị bức ảnh, đọc
các file liên quan đến đồ hoạ (ảnh, video) các file ảnh như jpg, bmp … Các
file video như avi,wma, mp4 Ngoài ra nó còn xử lý được các sự kiện như
chuột, bàn phím, OpenCV còn cho phép người dùng lựa chọn thuật toán linh
động hơn bằng cách cung cấp các hàm tạo thanh trượt slider, switch … Để
làm việc với OpenCV trước hết phải đọc trước các hàm trong thư viện này.
2.4.1.3 c hin x nh trong OpenCV
Thư viện HighGUI cung cấp các hàm thực hiện vào/ra bức ảnh, nhưng
vấn đề xử lý ảnh mới thực sự là quan trọng và khó khăn. OpenCV cung cấp
các hàm thực hiện xử lý ảnh nằm trong thư viện cv. Một bức ảnh không chỉ
đơn giản là một mảng giá trị màu sắc, khi người dùng đề cập đến xử lý ảnh
thì nó bao gồm cả các hàm xử lý liên quan đến cấu trúc của bức ảnh.
2.4.1.4  OpenCV
Trong việc phân tích hình ảnh thông tin về đối tượng và video, người sử
dụng thường muốn biểu diễn chúng giống như là một histogram. Histogram
có thể sử dụng để biểu diễn rất nhiều dạng khác nhau như phân bố màu của
đối tượng, độ dốc mẫu cạnh của một đối tượng, hay xác suất phân bố vị trí
của đối tượng.



 t Nghip 10


C 2:  T


2.4.1.5  trong OpenCV
Mặc dù thuật toán như dò tìm cạnh candy có thể sử dụng để tìm ra cạnh
pixel để phân bức ảnh thành các phần khác nhau. Bước tiếp theo là xây dựng
các cạnh này thành contours.
2.4.2 Gii thiu OpenCV 2.4.7
Thư viện OpenCV 2.4.7 được đăng tải vào ngày 11/11/2013 trên trang web
hiện là bản OpenCV được cập nhật mới nhất trong thời điểm
hiện tại. Thư viện có hơn 2500 thuật toán tối ưu hóa, trong đó bao gồm một tập hợp
toàn diện của cả hai là thị giác máy tính và các thuật toán máy học. Trong bản cập
nhật lần này, thư viện OpenCV 2.4.7 hỗ trợ thêm các hàm mới, tăng tốc độ xử lý
của một số hàm cũ và sửa lại một số lỗi xảy ra ở bản cập nhật trước (OpenCV
2.4.6). Việc cài đặt và sử dụng OpenCV 2.4.7 rất đơn giản và tương tự như các bản
cập nhật trước.
2.5 t chung v thu Cam-shift
2.5.1 Gii thiu v Camshift
Camshift viết gọn của “Continuously Adaptive Mean Shift” là cơ sở của thuật
toán theo dõi khuôn mặt trong OpenCV. Nó bao gồm thuật toán cơ sở Mean Shift
với thích ứng các bước thay đổi kích cỡ của vùng. Nhân là một hàm step đơn giản
nằm trong một bản đồ vỏ xác suất (skin-probability). Vỏ xác suất của mỗi một điểm
ảnh được tính toán dựa trên màu sắc bằng cách sử dụng một phương pháp gọi là
Histogram Backprojection. Màu sắc được đưa ra như Hue từ mô hình màu HSV.
Ban đầu Camshift được phát triển để phục vụ cho game. Nó được thiết kế để
chạy nhanh và “nhẹ” vì vậy máy tính có thể làm nhiều việc khác nhau trong khi
đang theo dõi. Camshift cũng bắt đầu có khả năng dò tìm các thay đổi ở những vị trí
quan trọng như theo dõi chuyển động của đồ vật hoặc con người.
2.5.2 
Không gian màu HSV (Hue, Saturation, Value) thường được sử dụng bởi
những người cần phải lựa chọn màu sắc (chẳng hạn để in hoặc vẽ) từ một đĩa màu
vì vậy nó tương ứng tốt hơn (kinh nghiệm màu sắc) không gian màu RGB đem lại.
Hàm CV_BGR2HSV và CV_HSV2BGR chuyển đổi ảnh giữa các không gian màu

RGB và HSV.
 t Nghip 11


C 2:  T


 2.5: Không gian màu HSV.
Khi giá trị Hue nằm trong khoảng 0 và 255 thì màu tương ứng sẽ biến đổi từ red,
yellow, green, cyan, blue, magenta và black sang red. Vì vậy, giá trị thực của red là
từ 0 đến 255. Cũng vậy, khi saturation biến thiên từ 0 đến 255, màu tương ứng
(hues) biến đổi từ chưa bão hoà đến hoàn toàn bão hoà (unsaturated to fully
saturated ). Cuối cùng, nếu value (hay độ sáng) biến đổi từ 0 đến 255 màu tương
ứng sẽ càng sáng hơn.


2.6: Chuyển đổi không gian màu.
 t Nghip 12


C 2:  T

2.5.3 t Camshift
Nhân Camshift là một hàm step hay Mean-Shift ở mỗi một lần lặp thì chỉ đơn
giản là giá trị trung bình x và y của vỏ xác suất đóng góp trong vùng hiện tại. Thuật
toán Mean-Shift tìm giá trị lớn nhất trong 1 khoảng nào đó của hàm mật độ:
 












(2.2)
Trong đó K là hàm Kernel
K(




) = 

exp(-




) (2.3)
Một giá trị lớn nhất trong khoảng nào đó sẽ được tìm ra bằng cách thay đổi y
liên tục đến một giá trị trọng số trung bình 

đã tính với đạo hàm Kernel K’:


=






































(2.4)

 2.7: Biểu đồ xác định giá trị lớn nhất bằng cách thay đổi y.
Thuật toán Mean-Shift tỏ ra rất hiệu quả trong những tình huống mà hình dạng
của đối tượng thay đổi do máy quay chuyển động, ảnh nền thay đổi hay mục tiêu
thay đổi tỉ lệ.

 2.8: Kỹ thuật dịch chuyển cửa sổ tìm kiếm của mean-shift.
Trong thuật toán CamShift, một bức ảnh về xác suất phân bố màu sắc của bức
ảnh trong chuỗi video được tạo ra. Đầu tiên nó tạo ra một mẫu mô tả Hue sử
dụng một biểu đồ màu sắc (colorHistogram) và sử dụng không gian màu Hue
 t Nghip 13


C 2:  T

Saturation Value (HSV) được tham chiếu từ không gian màu tiêu chuẩn RGB. Vì
phân bố màu sắc của các bức ảnh trong video thay đổi theo thời gian nên thuật
toán CamShift đã được sửa đổi để dễ dàng thích ứng với sự thay đổi phân bố xác
suất màu sắc của mục tiêu nó theo dõi. Giải thuật Camshift được sử dụng với
mục tiêu hiệu chỉnh giá trị cửa sổ tìm kiếm và vùng tính 1 cách hợp lí nhất để
đảm bảo thời gian tính toán nhanh và theo vết chính xác.
Bng 2.1: So sánh giữa Camshift và Meanshift.


MeanShift
Camshift
Trng
Tĩnh, chỉ tịnh tiến.
Động, có thể xoay.
ng
Cố định.
Thay đổi.
D li
Phân bố màu tĩnh, chỉ cập
nhật khi có sự thay đổi lớn.
Phân bố màu liên tục cập nhật
liên tục frame by frame.
c ca s
m
Cố định.
Thay đổi.

Cố định.
Thay đổi.
n
Dựa trên khoảng cách
trọng tâm thay đổi.
Dựa trên moment cấp 2 để tìm
và dự đoán vector di chuyển.

Trong OpenCV thuật toán CamShift được điều chỉnh từ thuật toán Mean-Shift và
nó được tính toán như sau:
1) Chọn vị trí ban đầu của Search Window.
2) Dùng thuật toán Mean-Shift (lặp lại một hoặc nhiều lần), lưu moment thứ 0 này.

3) Đặt kích cỡ của cửa sổ tìm kiếm bằng một hàm của moment thứ 0 tìm được
trong bước 2.
4) Lặp lại bước 2 và 3 cho đến khi hội tụ (vị trí dịch chuyển chính ít hơn giá trị
threshold hiện tại).
Tìm các moment:



 


(2.5)
Với : giá trị xác suất phân bố màu của pixel ở tọa độ .
 t Nghip 14


C 2:  T


 2.9: Giải thuật Camshift theo vết đối tượng.
2.5.4 nh v 
Trong OpenCV có hỗ trợ lệnh cho thuật toán CamShift với C++ :
RotatedRectCamShift(InputArrayprobImage,Rect&window,TermCriteriacriteria)
 probImage  giá trị chiếu lại của biểu đồ mức xám đối tượng.
Xem thêm lệnh calcBackProject ().
 window  cửa sổ tìm kiếm ban đầu.
 criteria  tiêu chuẩn dừng vòng lặp meanshift. Xem thêm lệnh meanShift().
Lệnh này giúp tính toán và cho biết một trung tâm đối tượng, kích thước và định
hướng. Đầu tiên, nó tìm thấy một trung tâm đối tượng sử dụng meanshift và sau đó
điều chỉnh kích thước cửa sổ và tìm thấy sự quay tối ưu. Hàm trả về cấu trúc hình

chữ nhật xoay bao gồm các vị trí đối tượng, kích thước và định hướng. Các vị trí
tiếp theo của cửa sổ tìm kiếm có thể thu được với thông số của kiểu định nghĩa
RotatedRect::boundingRect() hay nói cách khác là các giá trị của hình chữ nhật
xoay kế tiếp.
Dựa vào các giá trị trả về của hình chữ nhất xoay, ta có được:
- Tâm của hình chữ nhật xoay chính là tâm đối tượng cần theo dõi.
- Khoảng cách từ tâm đến góc hình chữ nhật xoay được tính toán và gán giá trị
cho biến r, với các giá trị y là chiếu dài và x là chiều rộng hình chữ nhật.
r =






(2.6)

×