1
LỜI NÓI ĐẦU
Trong những năm gần đây, trên thế giới nghiên cứu ứng dụng công nghệ xử
lý và nhận dạng ảnh đang là hướng nghiên cứu tập trung của rất nhiều nhà khoa học
trong các lĩnh vực. Từ những năm 1970 khi mà năng lực tính toán của máy tính
ngày càng trở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được những tập
dữ liệu lớn như các hình ảnh, các đoạn video thì một khái niệm nữa về xử lý ảnh
nữa ra đời đó là: Thị giác máy - Computer vision.Có thể nói xử lý ảnh số và thị giác
máy đã được phát triển và trở thành một lĩnh vực khoa học. Xử lý ảnh số không chỉ
nâng cao chất lượng của ảnh mà còn phân tích và lý giải tìm ra giải thuật để ứng
dụng vào thực tiễn. Thị giác máy bao gồm lý thuyết và các kỹ thuậ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 nhận thông tin từ các hình ảnh thu
được hoặc các tạp dữ liệu đa chiều. Việc kết hợp giữa thị giác máy với các kỹ thuật
khác như công nghệ thông tin, truyền thông, điện tử, điều khiển tự động, cơ khí…
cho chúng ta rất nhiều ứng dụng trong đời sống hàng ngày cũng như trong khoa
học, an ninh, y học, quân sự… Ngày nay, ứng dụng của thị giác máy đã 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 tòa nhà
.
Trong thời gian qua dưới sự hướng dẫn tận tình của Cô HÀ THỊ KIM
DUYÊN em đã dành thời gian nghiên cứu về xử lý ảnh và nhận dạng ảnh hay nói
đúng hơn là thuật toán xử lý ảnh bám đối tượng – Tracking. Những nội dung mà em
nghiên cứu được ở đây bao gồm:
• Nghiên cứu tổng quan về xử lý ảnh số và hệ bám đối tượng
• Tìm hiểu và nghiên cứu về thư viện mã nguồn mở OpenCV trên
nền C
• Nghiên cứu và xây dựng thuật toán bám ảnh di động tối ưu dựa trên
thư viện mã nguồn mở OpenCV của Intel
• Xây dựng được một hệ thống camera di động (phần cứng lẫn phần
mềm) bám theo mục tiêu di dộng ứng dụng thuật toán bám ảnh Camshitf.
• Đánh giá được kết quả đạt được trong thời gian nghiên cứu.
1.1.1 Trong lĩnh vực quân sự
Các hệ thống tích hợp quang hồng ngoại có khả năng tự động điều khiển dàn
hỏa lực (pháo, tên lửa) được lắp đặt cho các trận địa cao xạ, trên xe tăng, tàu chiến,
máy bay, tên lửa hoặc vệ tinh (Hình 1.1). Chúng được thay thế và hỗ trợ các dàn
rada dễ bị nhiễu trong việc tự động phát hiện, cảnh giới, bám bắt mục tiêu. Đặc biệt
có những loại lắp trên máy bay có khả năng điều khiển hỏa lực đánh phá hàng chục
mục tiêu một lúc. Ngoài ra còn phải kể đến các đầu tự dẫn tên lửa và đạn thông
minh.
1.1.2 Trong an ninh, phòng chống tội phạm, bảo vệ pháp luật
Các hệ thống camera nhận dạng khuôn mặt vân tay tự động cũng như phát
hiện, theo dõi, cảnh báo các âm mưu và hoạt động khủng bố. Các xe robốt tự hành
có gắn các camera cũng được ứng dụng trong các môi trường độc hại, dò phá bom
mìn (Hình 1.1).
4
1.1.3 Trong lĩnh vực hàng không vũ trụ
Các hệ thống ống kính chụp ảnh viễn thám (remote sensing) lắp trên các vệ
tinh bay quanh trái đất có thể chụp và quan sát được các vật kích cỡ 0,5 m từ độ cao
750 km trong mọi điều kiện thời tiết (Hình 1.1) Việc nối ghép các ống kính này
với hệ thống GPS sẽ cho phép xây dựng các bản đồ số có những lĩnh vực ứng dụng
cực kỳ quan trọng trong quốc phòng an ninh, phát triển kinh tế, xã hội
1.1.4 Trong công nghiệp, giao thông, xây dựng
Hệ thống quang điện tử đóng vai trò của các thị giác máy (machine vision) có
khả năng tự động đo đạc kiểm tra chất lượng sản phẩm trong các dây truyền sản
xuất: phân loại hạt ngũ cốc, cà phê; tìm lỗi lắp ráp linh kiện các bản vi mạch và
khuyết tật các mối hàn và động cơ Các hệ thống quang điện tử cũng được ứng
dụng ngày càng nhiều trong giao thông như đo tốc độ, tự động kiểm soát điều khiển
và phân luồng giao thông (Hình 1.2).
1.1.5 Trong nghiên cứu y sinh dược học
Các kính hiển vi có khả năng tự động nhận dạng và đo đếm các tế bào với độ
chính xác cao. Các kính hiển vi có hệ thống dẫn đường laser cho phép thực hiện
tự hoạt động.Về lĩnh vực người máy thì Nhật Bản đang đi đầu về lĩnh vực này.
Ngày nay, Rô bốt đang là tâm điểm của một cuộc cách mạng lớn sau Internet.
Rô bốt ngày càng được sử dụng rộng rãi trong công nghiệp, y tế, giáo dục và đào
tạo, giải trí và an ninh quốc phòng, thám hiểm không gian.
Rô bốt là sản phẩm công nghệ có độ phức tạp cao chứa hàm lượng tri thức vô
cùng phong phú về tất cả cac lĩnh vực của khoa học và công nghệ.
Ngày nay người ta vẫn còn tranh cãi về vấn đề “Một loại máy đủ những tiêu
chuẩn gì để được coi là một rô bốt???” Một cách gần chính xác, rô bốt phải có một
vài (không nhất thiết phải đầy đủ) đặc điểm sau đây:
1. Không phải tự nhiên, tức là do con người chế tạo ra.
2. Có khả năng nhận biết môi trường xung quanh.
3. Có thể tương tác với các vật thể trong môi trường.
4. Có sự thông minh và có khả năng đưa ra các lựa chọn dựa trên môi trường
và có thể hoạt động theo 1 chu trình đã được lập trình sẵn.
5. Có khả năng điều khiển bằng các lệnh để có thể thay đổi tùy theo yêu cầu
của người sử dụng.
6. Có thể di chuyển quay tịnh tiến một chiều hay nhiều chiều.
7. Có sự khéo léo trong vận động.
7
1.3 Giới thiệu tổng quan về hệ thống rô bốt camera bám đối tượng (Tracking
mobile robot)
Hệ thống rô bốt hoạt động bằng các cảm biến như cảm biến màu sắc, hồng
ngoại, cảm biến dò đường, siêu âm giờ đây đã dần dần được phát triển và tích hợp
thêm “thị giác”.Với sự phát triển của khoa học công nghệ, việc tích hợp trên rô bốt
hệ thống camera thông minh ứng dụng công nghệ xử lý ảnh là rất cần thiết phục vụ
cho công nghiệp, quốc phòng và xã hội.
Hệ thống thị giác có thể phân thành 2 lớp, theo như cấu trúc của hệ, đó là hệ
có camera gắn cố định và hệ có camera gắn trên tay máy (eye-in-hand). Trong hệ
camera cố định, camera được gắn cố định so với hệ trục tọa độ thực, thu thập ảnh
của cả mục tiêu và cả môi trường. Mục tiêu của hệ camera cố định này là cung cấp
in
-
hand
V
ậ
t th
ể
c
ầ
n giám sát
9
Ngày nay việc xây dựng một hệ thống rô bốt thông minh và có khả năng thay
thế con người làm việc trong các điều kiện khắc nghiệt và nguy hiểm là rất cần
Hình 1.6: PAN robot và Robot Pops (nguồn: www.mobilerobot.org)
Hình 1.7: Robot Talon và Robot MARRS (nguồn Internet)
Hình 1.8: Robot thám hiểm sao hỏa và Robot MIDbo
10
thiết, đơn cử như việc làm việc trong các hầm mỏ các nhà máy hạt nhân và các vùng
nguy hiểm bom mìn…thì khi ấy các rô bốt như thế này hoàn toàn hữu dụng và là
lựa chọn tối ưu.
Với mục tiêu hướng tới xây dựng một hệ thống rô bốt camera thông minh có
thể phục vụ trong công tác dò mìn cứu trợ cứu nạn, và có khả năng do thám, tôi
cũng đã tìm hiểu và đi vào nghiên cứu chế tạo một hệ tracking thông minh có khả
năng tự hành và bám mục tiêu di động dựa trên công nghệ xử lý ảnh có giao tiếp và
kiểm soát, lưu trữ thông tin bằng máy tính.
Có thể hệ thống lại rằng, một hệ thống bám đối tượng bao gồm:
Mục đích của hệ thống bám video, ảnh tự động là duy trì một đường ngắm viết
tắt là LOS (Line Of Sight) giữa cảm biến – mục tiêu một cách ổn định và hoàn toàn
Đế và
cảm biến
điện tử này đi qua bộ biến đổi để lấy ra được mức điện áp quy định tương ứng với
mỗi màu sắc. Và tập hợp những tín hiệu điện này sẽ được xử lý để khôi phục lại
hình ảnh của đối tượng thông qua thiết bị chuyên dụng chuyển đổi.
12
Có thể nói rằng, khối cảm biến hình ảnh có thể sử dụng các cảm biến màu sắc
hoặc camera, tuy nhiên có thể khẳng định rằng, khối này có ảnh hưởng rất lớn đến
chất lượng và tốc độ của một hệ bám ảnh. Vì tốc độ thu thập dữ liệu để gửi về bộ vi
xử lý rất quan trọng, nó ảnh hưởng đến việc tính toán của bộ vi xử lý để nhanh
chóng đưa ra luật điều khiển cho cơ cấu chấp hành.Camera tốc độ và chất lượng
càng cao thì hệ bám sẽ hoạt động với xác suất chính xác cao.
Ngày nay với sự phát triển của khoa học công nghệ thì cảm biến hình ảnh
cũng được hiện đại hóa và cải thiện được tốc độ cũng như chất lượng hình ảnh, điển
hình là các hệ thống camera tích hợp, hồng ngoại, lade, không dây…
Với yêu cầu mục đích của đồ án thì khối cảm biến hình ảnh của tôi sử dụng ở
đây là hệ thống camera không dây tích hợp hồng ngoại quan sát ban đêm. Vì
camera là lựa chọn tối ưu trong việc xây dựng một hệ thống triển khai thực nghiệm,
trong khi các cảm biến hình ảnh khác chỉ dùng trong một mục đích nghiên cứu nhất
định, tốc độ không cao và khó sử dụng và khó tiếp cận. Ngược lại camera thì hoàn
toàn đáp ứng đủ yêu cầu để xây dựng một hệ thống bám ảnh thực nghiệm và dễ tiếp
cận.
Hình 1.11: Cảm biến CCD
13
Về hệ cơ cấu chấp hành thì có thể sử dụng là khí nén hoặc động cơ để điều
khiển. Tuy nhiên tùy vào mục đích sử dụng và yêu cầu riêng của hệ thống ta có thể
sử dụng cơ cấu chấp hành nào để phù hợp nhất. Ở đây ta có thể sử dụng hệ thống đế
xoay dùng động cơ điều khiển và kiểm soát góc độ và tốc độ quay. Các hệ trên thị
trường hiện nay như các hệ PTS, HN (đế xoay camera) tuy nhiên các hệ này thường
là các động cơ xoay chiều điều khiển cho nên việc điều khiển tốc độ và kiểm soát
góc quay cũng gặp nhiều khó khăn.
Trong hệ thống của tôi sử dụng hoàn toàn là động cơ 1 chiều có gắn encoder
nhằm phục vụ những yêu cầu của người sử dụng, sử dụng đơn giản, phổ biến đáp
ứng được những yêu cầu của hệ thống. Hiện nay máy tính cá nhân cũng đã được
thiết kế nhỏ gọn với đầy đủ chức năng. Do vậy trong khuôn khổ đề tài này tôi đã lựa
chọn máy tính laptop để xử lý và có thể lưu trữ được thông tin hình ảnh và video,
âm thanh.Giúp người điều khiển có thể quan sát trực tiếp mục tiêu và khi cần thiết
sẽ can thiệp trực tiếp vào quá trình điều khiển. Như vậy việc lựa chọn máy tính
laptop là phù hợp với yêu cầu đề tài.
Như vậy, mục tiêu của đề tài là xây dựng được một hệ thống bám ảnh di động
bao gồm một hệ tích hợp rô bốt điều khiển camera thông minh thu thập dữ liệu gửi
về trung tâm lưu trữ và điều khiển từ xa thông qua hệ thống máy tính. Rôbốt và
camera có thể hoàn toàn hoạt động tự động bám ảnh, vật thể hoặc có thể can thiệp
điều khiển bởi người sử dụng, phục vụ cho công tác nghiên cứu, công tác cứu hộ,
dò phá bom mìn, phục vụ nhiều mục đích trong cuộc sống.
16
Chương 2: TỔNG QUAN VỀ THƯ VIỆN MÃ NGUỒN
MỞ OPENCV TRÊN NỀN C
2.1 Thư viện OpenCV
2.1.1 OpenCV là gì?
OpenCV viết tắt của Open Source Computer Vision Library. Nó có chứa hon
500 hàm sử dụng thị giác máy, và được phát triển bởi tập đoàn Intel. OpenCV là
một thư viện mã nguồn mở (open source) tham khảo tại:
Thư viện được viết bằng ngôn ngữ C và C++ có thể chạy trên các hệ điều
hành như Linux, Window và Max OS X. OpenCV được thiết kế để nâng cao hiệu
suất tính toán và nhấn mạnh đến hệ thống thời gian thực. Một điều tuyệt vời của
OpenCV là nó đưa ra một hệ thống đơn giản, dễ sử dụng giúp mọi người nhanh
chóng xây dựng các ứng dụng trong thị giác máy, kể cả các hệ thống kiểm tra trong
nhà máy, bức ảnh trong các lĩnh vực y học, bảo mật, rô bốt học… Nó chứa các lạp
trình xử lý ảnh rất đơn giản, kể cả khi thực thi các hàm bậc cao như dò tìm khuôn
mặt, theo dõi khuôn mặt, nhận dạng khuôn mặt, lọc Kalman.
Kể từ khi được giới thiệu và sử dụng vào tháng 1 năm 1999, OpenCV đã được
chứa các định nghĩa kiểu dữ liệu cơ sở. Ví dụ, các cấu trúc dữ liệu
cho ảnh, điểm và hình chữ nhật được định nghĩa trong cxtypes.h . CXCORE cũng
chứa đại số tuyến tính và phương pháp thống kê, chức năng duy trì và điều khiển
chuỗi. Một số ít, các chức năng đồ họa để vẽ trên ảnh cũng được đặt ở đây.
CV
chứa các thuật toán về xử lý ảnh và định kích cỡ camera. Các chức năng
hình họa máy tính cũng được đặt ở đây.
CVAUX
được mô tả trong tài liệu của OpenCV như chứa các mã cũ và thứ
nghiệm. Tuy nhiên, các giao diện đơn cho sự nhận diện ảnh ở trong module này.
Code sau này chúng được chuyên dụng cho nhận diện mặt và chúng được ứng dụng
rộng rãi cho mục đích đó.
HIGHGUI
và CVCAM được đặt trong cùng thư mục là “otherlibs”.
CV
Xử lý ảnh và thuật toán
về thị giác máy
MLL
Thống kê và tập hợp
các công cụ xử lý
HighGUI
Giao diện, truy xuất
ảnh và video
CXCORE
Cấu trúc cơ sở và các thuật toán, hỗ trợ XML, các
hàm vẽ
Hình 2.2: Cấu trúc của OpenCV
19
HIGHGUI
chứa các giao diện vào ra cơ bản, nó cũng chứa các khả năng cửa
Hình 2.3: Setup OpenCV 2.1
Hình 2.4: Chọn I Agree
21
Click I Agree để tiếp tục:
Chọn Add OpenCV to the system PATH for all users, để chạy trên tất cả quyền
Admin lẫn users, sau đó click Next chọn mặc định và tiếp tục cho đến khi cài đặt
xong finish.
Sau khi cài đặt ta tiến hành copy tất cả các file trong thư mục bin, include
và lib của OpenCV cho vào thư mục bin, include và lib của VC++2008 để sử
dụng thư viện OpenCV.
Hình 2.5: Chon Add OpenCV to the system PATH
Hình 2.6: Click Finish để kết thúc
22
2.2.2 Tạo một dự án bằng VC++ 2008
Mở phần mềm Visual C 2008, chọn Create project ở MFC sau đó tiến
hành MFC Application chọn tên dự án và đường dẫn lưu dự án của mình sau
đó ấn Ok.
Sau đó chọn thiết kế giao diện Dialog based và chọn Next:
Hình 2.7: Tạo một dự án trong VC++ 2008
23
Sau đó chọn Next và Finish, như vậy ta đã thiết lập được một dự án bây giờ ta
có thể thiết kế và lập trình theo ý muốn.
Sau đây là kết quả của một của một chương trình nhận diện khuôn mặt được
sử dụng thư viện mã nguồn mở của OpenCV và đếm số người trong bức ảnh.
Hình 2.8: Chọn thiết kế Dialog based và môi
trường làm việc của dự án
24
Hình 2.9: Kết quả thử nghiệm của lập trình nhận diện khuôn
mặt
25
// Release the image
cvReleaseImage(&img);
std::cout << "co tat ca"<<dem << " nguoi//";
// Destroy the window previously created with filename: "result"
cvDestroyWindow("result");
//MessageBox(dem);
// return 0 to indicate successfull execution of the program