Tải bản đầy đủ (.docx) (100 trang)

NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

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 (2.46 MB, 100 trang )

TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN TỰ ĐỘNG HÓA

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGHIÊN CỨU
KHẢ NĂNG ỨNG DỤNG
THƯ VIỆN XỬ LÝ ẢNH OPENCV
TRÊN HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ
ANDROID

Cán bộ hướng dẫn

Sinh viên thưc hiên
••

Khưu Thiện Phúc

GV. Ks. Nguyễn Văn Khanh

Tạ Minh Lễ

Cần Thơ, 4-2012


TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC


NGHIÊN CỨU
KHẢ NĂNG ỨNG DỤNG
THƯ VIỆN XỬ LÝ ẢNH OPENCV
TRÊN HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ
ANDROID
Sinh viên thực hiện

Cán bộ hướng dẫn

Khưu Thiện Phúc
MSSV: 1080992
Tạ Minh Lễ
MSSV: 1080920

Ks.GV. Nguyễn Văn Khanh

Cán bộ^ phản biện:
Ts.GV.Trần Thanh Hùng
Ths.GV.Nguyễn Văn Mướt

Luận văn được bảo vệ tại: Hội đồng chấm luận văn tốt nghiệp Bộ môn Tự
động hóa, Khoa Công Nghệ, Trường Đại Học Cần Thơ vào ngày 5 tháng 5 năm 2012.

Mã số đề tài:


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

LỜI CAM ĐOAN

Ngày nay với sự phát triển bùng no của khoa học kỹ thuật, hệ điều hành mã mở
Android của hãng Google ngày càng được phát triển mạnh mẽ. Nó xuất hiện trên phần
lớn các điện thoại thông minh và máy tính bảng. Bên cạnh đó, thư viện mã mở
OpenCV là một thư viện có thế mạnh trên phương diện xử lý

ảnh.



vậy
chúng tôi chọn đề tài “Nghiên cứu khả năng ứng dụng thư viện xử lý ảnh OpenCV
trên hệ điều hành mã mở Android” để làm luận văn tốt nghiệp cho mình.
Trong quá trình

thực hiện đề tài, có thể còn nhiều thiếu sót do kiến thức
hạn

chế nhưng những nội dung trình bày trong quyển báo cáo này là những hiểu biết và
thành quả của chúng tôi đạt được dưới sự giúp đỡ của giảng viên hướng dẫn là thầy
Nguyễn Văn Khanh.
Chúng tôi xin cam đoan rằng: những nội dung trình bày trong quyển báo cáo
luận văn tốt nghiệp này không có sự sao chép từ bất kỳ công trình đã có trước nào,
riêng những nội dung được trích dẫn từ những nguồn tài liệu tham khảo sẽ được chú
thích đầy đủ, rõ ràng. Nếu không đúng sự thật, chúng tôi xin chịu mọi trách nhiệm
trước nhà trường.
Cần Thơ, ngày tháng năm 20...
Sinh viên thực hiện

1



LỜI CẢM TẠ
Để có thể nghiên cứu và hoàn thành được đề tài này, chúng tôi đã nhận được sự
giúp đỡ, hỗ trợ và hướng dẫn từ nhiều phía. Chúng tôi xin chân thành cảm ơn:
- Quý thầy cô đã giảng dạy, cung cấp những kiến thức trong quá trình học tập
để chúng tôi có thể thực hiện đề tài.
- Giảng viên Ks. Nguyễn Văn Khanh đã nhiệt tình hướng dẫn cho chúng tôi
trong suốt quá trình thực hiện đề tài.
- Khoa Công Nghệ nói chung và bộ môn Tự Động Hóa nói riêng đã tạo điều
kiện thuận lợi cho chúng tôi trong quá trình nghiên cứu đề tài.

Cần Thơ, ngày......tháng........năm 20...
Sinh viên thực hiện


MỤC LỤC
LỜI CAM ĐOAN................................................................................................................................. I
LỜI CẢM TẠ..................................................................................................................................... II
MỤC LỤC......................................................................................................................................... III
DANH MỤC HÌNH............................................................................................................................ V
DANH MỤC BẢNG........................................................................................................................ VII
TÓM TẮT....................................................................................................................................... VIII
ABTRACT...................................................................................................................................... VIII
PHẦN TỔNG QUAN...............................................................................................................................1
1. Đặt vấn đề:.................................................................................................................................... 1
2. Lịch sử giải quyết vấn đề:............................................................................................................. 2
3. Phạm vi của đề tài:........................................................................................................................ 2
4.. Phương pháp nghiên cứu và hướng giải quyết vấn đề:..................................................................2
PHẦN NỘI DUNG.................................................................................................................................. 3
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT..................................................................................................3

1.1. Lý thuyết về xử lý ảnh................................................................................................................... 3
1.1.1.
Các phương pháp phát hiện biên................................................................................3
1.1.2.
Tổng quan về nhận dạng ảnh..................................................................................... 5
1.1.3.
Không gian màu HSV/HSB:.....................................................................................7
1.1.4.
Biểu đồ phân bố xác suất màu sắc Histograms...........................................................7
1.2. Lý Thuyết Haartraining................................................................................................................... 8
1.2.1.
Haar-like F eatures:................................................................................................... 8
1.2.2.
Adaboost:.................................................................................................................. 9
1.3. Lý thuyết thuật toán Camshift....................................................................................................... 11
1.3.1.
Thuật toán Meanshift............................................................................................... 11
1.3.2.
Thuật toán Camshift................................................................................................ 13
1.4. Giới thiệu về thư viện xử lý ảnh OpenCV..................................................................................... 16
1.4.1.
OpenCV là gì?........................................................................................................ 16
1.4.2.
Ai dùng OpenCV?................................................................................................... 17
1.4.3.
Tìm hiểu về thư viện hàm của OpenCV:..................................................................18
1.5. Cơ bản về Hệ điều hành Android.................................................................................................. 22
1.5.1.
Giới thiệu về Hệ điều hành Android........................................................................22
1.5.2.

Sơ lược các thành phần trong Android.....................................................................23
CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU.................................................................................................25
2.1. Quy trình phát triển ứng dụng Android.......................................................................................... 25
2.1.1.
Giả lập hệ điều hành Android SDK vào trong Eclipse trên Hệ điều hành Window. 25
2.2. Thư viện Opencv có thể sử dụng trên hệ điều hành Android hay không ?......................................32
2.2.1.
Tích hợp thư viện OpenCV vào trong Eclipse [17]..................................................32
2.2.2.
Khảo sát vài ứng dụng có sử dụng thư viện xử lý ảnh OpenCV trên HDH Android 36
2.3. Nghiên cứu ứng dụng nhận dạng bàn tay người trong điều khiển tự động......................................48
2.3.1.
Hướng dẫn phương pháp Haar-Trainning bàn tay người..........................................48
2.3.2.
Lập trình nhận diện bàn tay người...........................................................................53
2.4. Nghiên cứu ứng dụng theo vết hướng nghiên của đầu người..........................................................59
2.4.1.
Hướng dẫn theo vết hướng nghiêng của đầu người dùng thuật toán
Camshift: 59
2.4.2.
Lập trình ứng dụng theo vết hướng nghiên của đầu người dùng Camshift: 59
PHẦN KẾT LUẬN VÀ ĐỀ NGHỊ................................................................................70
Kết luận..................................................................................................................................................70


Đề nghị....................................................................................................................................................71

PHỤ LUC 1: HƯỚNG DẪN LẬP TRÌNH ANDROID TRÊN ECLIPSE......................73
PHỤ LỤC 2: HƯỚNG DẪN LẬP TRÌNH JAVA CHO ANDROID...............................80
TÀI LIỆU THAM KHẢO.........................................................................................................................89



DANH MỤC HÌNH

Figure 1: Mô hình đạo hàm bậc 1 và bậc 2 của biên...........................................................................4
Figure 2: Mô phỏng kỹ thuật Laplace................................................................................................ 4
Figure 3: Mô hình tính của phương pháp Canny................................................................................5
Figure 4: Mô phỏng phương pháp Canny với kích thước khác nhau...................................................5
Figure 5: Mô hình nhận dạng đối tượng............................................................................................. 6
Figure 6: Hệ màu HSV...................................................................................................................... 7
Figure 7: Biểu đồ Histogram của một bức ảnh...................................................................................8
Figure 8: Đặt trưng Haar-like............................................................................................................. 8
Figure 9: Edge Features( đặc trưng 2 hình chữ nhật)..........................................................................9
Figure 10: Line Features (đặc trưng 3 hình chữ nhật).........................................................................9
Figure 11: Center-surround Features -------------------------------------------------------------------------- 9
Figure 12: Ví dụ về Phương pháp Adaboost....................................................................................... 10
Figure 13: Sơ đồ khối cho thuật toán Adaboost..................................................................................11
Figure 14: Sơ đồ khối thuật toán Camshift......................................................................................... 16
Figure 15: Các tính năng của thư viện OpenCV................................................................................. 17
Figure 16: Install SDK 1 .....................-— ........................................................................................27
Figure 17: Install SDK 2.................................................................................................................... 28
Figure 18: Install ADT Plugin 1......................................................................................................... 29
Figure 19: Install ADT Plugin 2......................................................................................................... 29
Figure 20: Tích hợp Android SDK vào trong Eclipse.........................................................................30
Figure 21: Edit Android Virtual Device(AVD)...................................................................................31
Figure 22: Giải nén thư viện OpenCV-2.3.1 ......................................................................................32
Figure 23: Tạo Workspace cho Eclipse.............................................................................................. 33
Figure 24: Mỡ cửa sổ Preferences panel trong Eclipse.......................................................................33
Figure 25: Tích hợp OpenCVvào trong Eclipse 1 ----------------------------------------------------------- 34
Figure 26: Tích hợp OpenCVvào trong Eclipse 2 ----------------------------------------------------------- 34

Figure 27: Tích hợp OpenCVvào trong Eclipse 3 ----------------------------------------------------------- 35
Figure 28: Tích hợp OpenCVvào trong Eclipse 4 ----------------------------------------------------------- 35
Figure 29: Hoàn thành tích hợp OpenCV vào trong Eclipse...............................................................36
Figure 30: Sơ đồ khối ứng dụng HieuUngAnh................................................................................... 40
Figure 31: Kết quả mô phỏng ứng dụng HieuUngAnh_ Preview RGBA............................................43
Figure 32: Kết quả mô
phỏng ứng dụng HieuUng Anh_Ấn phím Menu...................................43
Figure 33: Kết quả mô
phỏng ứng dụng HieuUng Anh _Canny................................................44
Figure 34: Kết quả mô
phỏng ứng dụng HieuUng Anh_ Sepia.................................................44
Figure 35: Kết quả mô
phỏng ứng dụng HieuUng Anh_Sobel..................................................45
Figure 36: Kết quả mô
phỏng ứng dụng HieuUng Anh_Blur....................................................45
Figure 37: Sơ đồ khối ứng dụng "Tracking Orange"..........................................................................46
Figure 38: Kết quả thực thi ứng dụng "Tracking Orange" .................................................................48
Figure 39: Thực thi file objectmarker.exe.......................................................................................... 49
Figure 40: Kết quả file info.txt........................................................................................................... 50
Figure 41: Kết quả thực thi file create_list.bat.................................................................................... 50
Figure 42: Kết quả thực thi ứng dụng createsample.exe.....................................................................51
Figure 43: Quá trình thực thi ứng dụng haartraining.exe _1................................................................52
Figure 44: Quá trình thực thi ứng dụng haartraining.exe _2................................................................52
Figure 45: Kết quả thực thi file convert_cascade ----------------------------------------------------------- 53


Figure 46: Sơ đồ khối ứng dụng lập trình nhận diện bàn tay người.....................................................54
Figure 47: Kết quả thực thi ứng dụng nhận diện bàn tay người...........................................................58
Figure 48: Sơ đồ khối chính của ứng dụng "Tracking Object"..........................................................60
Figure 49:Chương trình con tính toán Histogram của khuôn mặt......................................................61

Figure 50:Chương trình con lấy giá trị Hue của bức ảnh...................................................................61
Figure 51: Chương trình con theo vết khuôn mặt...............................................................................62
Figure 52: Chương trình con hiển thị ảnh sau khi xử lý......................................................................63
Figure 53: Kết quả thực thi ứng dụng " TrackingObject" khi không
cóđối tượng..............67
Figure 54 : Kết quả thực thi ứng dụng " TrackingObject" khi có đối
tượng............................67
Figure 55: Kết quả thực thi ứng dụng " TrackingObject" khi đối tượng nghiêng sang phải
. . .............................................----------................------......................—--------.................------- 68
Figure 56: Kết quả thực thi ứng dụng " TrackingObject" khi đối tượng nghiêng sang trái 68 Figure 57:
Tạo Android Project 1........................................................................................................................ 73


DANH MỤC BẢNG

Table 1: Kiểu dữ liệu nguyên thủy trong Java...................................................................................82
Table 2: Kiểu dữ liệu tham chiếu trong Java.....................................................................................83
Table 3: Khai báo mảng trong Java................................................................................................... 84


TÓM TẮT
Ngày nay, với sự bùng no của khoa học kỹ thuật, hệ điều hành mã mở Android
của hãng Google ngày càng phát triển mạnh mẽ. Nó được ứng dụng trên phần lớn các
điện thoại thông minh và máy tính bảng. Còn OpenCV là một thư viện mã mở có thế
mạnh trong lĩnh vực xử lý ảnh. Vì vậy, việc lập trình xử lý ảnh trên hệ
điều hành Android (Linux) sử dụng thư viện OpenCV tạo giá trị về một hướng đi mới
cho việc nghiên cứu các ứng dụng trên những thiết bị cầm tay nhỏ gọn. Mặt
khác chúng ta có thể sử dụng những nghiên cứu đó trong điều khiển tự động ở các
thiết bị di động này. Để thực hiện đề tài, chúng tôi bắt đầu nghiên cứu về hệ điều hành
Android, thư viện xử lý ảnh Opencv và các phần mềm hỗ trợ. Sau đó chúng tôi sử

dụng thư viện Opencv trên hệ điều hành Android để tạo ra vài ứng dụng phục vụ trong
việc điều khiển thiết bị.
ABTRACT
Today, with the explosion of science and technology, Android open source
operating system of Google growing its strong growth. It is used on most smart
phones and tablets. And OpenCV is an open source library is strong in the field of
image processing. Therefore, the image processing program on the Android operating
system (Linux) using the OpenCV library to create value on a new direction for
research applications on the handset is compact. On the other hand we can use that
research in automatic control at this device. To implement the project, we started
research on the Android operating system, library OpenCV image processing and
software support. Then we use the OpenCV library on Android operating system to
create several applications in the service control device.
Keyword : Android, Opencv, Image processing, Detecting, Training, Java...


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

PHẦN TỔNG QUAN
1. Đặt vấn đề:
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một ngành
khoa học còn mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của
nó rất nhanh. Ngoài các ứng dụng truyền thống như phục hồi, nâng cao chất lượng
ảnh, các ứng dụng nhận dạng, an ninh, điều khiến ngày càng phổ biến. Bên cạnh đó,
OpenCV (Open Source Computer Vision) lại là một trong những thư viện mã nguồn
mở đang được ưa chuộng nhất hiện nay. Với hơn 2,5 triệu người sử dụng và hơn 2500
thuật toán tối ưu dùng cho lập trình xử lý ảnh và thị giác máy tính thời gian thực, càng
chứng minh OpenCV rất hữu ích trong vấn đề xử lý ảnh.
Mặt khác, hệ điều hành mã mở Android của hãng Google đang phát triển mạnh

mẽ trong lĩnh vực di động. Nó xuất hiện trên phần lớn các điện thoại thông minh và
máy tính bảng. “Theo ông Andy Rubin, phó chủ tịch bộ phận di động của Google,
hiện trên thế giới có khoảng 300 triệu chiếc điện thoại Android đang sử dụng. Mỗi
ngày có 850.000 điện thoại mới được kích hoạt, tăng hơn 250% so với con số của
Google công bố tại MWC năm 2011 ” [9]. Thị trường điện thoại thông minh và máy
tính bảng đang diễn biến theo chiều hướng tốt cho người sử dụng. Các hảng điện tử
đang cạnh tranh quyết liệt dẫn đến giá thành của hai sản phẩm này ngày càng giảm.
“MWC 2012 đang diễn ra chứng kiến các màn trình diễn của những chiếc điện thoại
Android mới mạnh mẽ từ các ông lớn HTC, Samsung, LG... ”
Vì những lý do trên, việc nghiên cứu lập trình xử lý ảnh với thư viện mã mở
OpenCV trên nền tảng Android (Linux) đã trở nên cần thiết và hết sức hữu ích.

1


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

2. Lịch sử giải quyết vấn đề:
Hiện nay, những nghiên cứu về vấn đề xử lý ảnh với thư viện Opencv trên máy
tính PC của các trường đại học- cao đẳng không phải là ít, hơn nữa chúng đã
đem lại những thành công

nhất định khi ứng dụng vào thực

tế.

Nhưng vấn đề xử lý ảnh trên hệ điều hành Androi với OpenCV thì vẫn còn mới lạ đối
với sinh viên ngành kỹ thuật ở Việt Nam và chưa có một nghiên cứu cụ thể chuyên sâu
nào.


3. Phạm vi của đề tài:
Đề tài đi

sâu vào nghiên

cứu khả năng ứng dụng thư viện xử lý ảnh

OpenCV trên hệ điều hành Android. Đồng thời xây dựng những ứng dụng cơ bản để
chứng minh kết quả nghiên cứu.

4. Phương pháp nghiên cứu và hướng giải quyết vấn đề:
■ Nghiên cứu cài đặt thư viện xử lý ảnh trên hệ điều hành Android.
■ Nghiên cứu kiến thức cơ bản về xử lý ảnh.
■ Nghiên cứu lập trình Java cho Android .
■ Nghiên cứu quy trình phát triển ứng dụng android.


Xây dựng một số ứng dụng cơ bản sử dụng OpenCV.

2


PHẦN NỘI DUNG
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Lý thuyết về xử lý ảnh
1.1.1.

Các phương pháp phát hiện biên.


a. Khái niệm về biên:
Biên là một vấn đề chủ yếu trong phân tích ảnh vì các kỹ thuật phân đoạn ảnh chủ
yếu dựa vào biên. Nhìn chung về mặt toán học, người ta coi điểm biên của ảnh là điểm có
sự biến đối đột ngột về độ xám. [1] ( trang 116)
Định nghĩa toán học của biên ở trên là cơ sở cho các kỹ thuật phát hiện biên. Điều
quan

trọng là sự biến thiên mức xám giữa các điểm ảnh trong một vùng

thường là nhỏ, trong khi đó biến thiên mức xám của những điểm ảnh ở vùng giáp ranh (khi
qua biên) lại khá lớn.
Có hai kỹ thuật phát hiện biên từ định nghĩa toán học là:
■ Phương pháp phát hiện biên trực tiếp: phương pháp này nhằm làm nối biên
dựa vào sự biến thiên giá trị độ sáng của điểm ảnh (thường dùng kỹ thuật đạo hàm).
■ Phương pháp gián tiếp: nếu bằng cách nào đó ta phân được ảnh thành các vùng khác
nhau thì đường phân ranh giữa các đường chính là biên.
b. Quy trình phát hiện biên
■ Bước 1: Khử nhiễu ảnh thu được.
■ Bước 2: Làm nối biên bởi các toán tử đạo hàm.
■ Bước 3: Định vị điểm biên. Vì các kỹ thuật làm nối biên thường có hiệu ứng phụ là
tăng nhiễu, do vậy sẽ có một số điểm biên giả cần phải loại bỏ.
■ Bước 4: Liên kết và trích chọn biên.
c. Phương pháp phát hiện biên cục bộ
■ Kỹ thuật Gradient: có 4 toán tử tiêu biểu là toán tử Robert, Sobel, Prewitt và toán tử
Kirsh,.. (dùng đạo hàm bậc nhất). Kỹ thuật này tỏ ra không hiệu quả
khi mức xám thay đổi chậm [1] (trang 123).


Figure 1: Mô hình đạo hàm bậc 1 và bậc 2 của biên


■ Kỹ thuật Laplace(dùng đạo hàm bậc hai). Điểm biên được xác định bằng điểm cắt điểm
không do đó đường biên chỉ có độ rộng 1 pixel. Tuy nhiên, kỹ thuật này rất
cảm với nhiễu

nhạy

do đạo hàm bậc hai thường không ổn định.[1]

(trang 125)

Figure 2: Mô phỏng kỹ thuật Laplace

■ Kỹ thuật đạo hàm tích chập - Phương pháp Canny: Phương pháp này thực hiện bằng
cách lấy đạo hàm của một ảnh chập với bộ lọc Gauss.[1](trang 127)


Figure 3: Mô hình tính của phương pháp Canny

Để kiểm tra tính nhạy cảm của toán tử với
nhiễu, người ta thay đối kích thước của đường
Anh gốc

Anh thu được với kích thước lả 3

Ảnh thu được với kích thước 11 Anh thu được với kích thước
21 Figure 4: Mô phỏng phương pháp Canny với kích thước
khác nhau

cong Gauss.


Ql
1.1.2.

Tổng quan về nhận dạng ảnh

a. Định nghĩa :
Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô hình nào đó và
gán cho chúng vào một lớp( gán cho đối tượng một tên gọi) dựa vào


những quy luật và các mẫu chuẩn. Quá trình nhận dạng dựa vào những mẫu học biết
trước gọi là nhận dạng có thày hay học có thày( supervised learning); trong trường hợp
ngược lại gọi là học không có thày( non supervised learning).[1] (trang 170]
b. Mô hình nhận dạng:
Tùy theo họ mô tả mà có hai loại mô hình nhận dạng: mô hình theo tham số và mô
hình theo cấu trúc.
■ Mô hình tham

sốsử dụng một vector để đặc tả đối tượng. Mỗi phần tử của

vector mô tả một đặc tính của đối tượng.[1] (trang 171)
■ Mô hình cấu trúc: cách tiếp cận của mô hình này dựa vào việc mô tả đối tượng
nhờ một số khái niệm biểu thị các đối tượng cơ sở trong ngôn ngữ tự nhiên. Để
mô tả đối tượng người ta thường dùng một số dạng nguyên thủy như đoạn thẳng,
cung,... Ngoài ra có dùng một tập các luật sản xuất để mô tả cách xây dựng các
đối tượng phù hợp dựa trên các đối tượng đơn giản hơn hoặc đối tượng nguyên
thủy,.
c.

Bản chất của quá trình nhận dạng

Quá trình nhận dạng gồm 3 giai đoạn chính:

■ Lựa chọn mô hình biểu diễn đối tượng.
■ Lựa chọn luật ra quyết định( phương pháp nhận dạng) và suy diễn quá trình học.
■ Học nhận dạng.
Việc nhận dạng chính là tìm ra quy luật và các thuật toán để có thể gán đối tượng vào
một lớp hay nói một cách khác là gán cho đối tượng một tên.

Figure 5: Mô hình nhận dạng đối tượng

1.1.3.

Không gian màu HSV/HSB:

Chế độ màu HSV (Hue, Saturation, Valua) hay HSB (Hue, Saturation, Brightness)
được định nghĩa là một không gian màu với 3 thành phần: [8]


■ Hue (H): biểu diễn cho dãy màu. Nó dao động từ 0 đến 360 độ, với màu đỏ ở 0
độ, màu xanh lá cây ở 120 độ, màu xanh dương ở 240 độ.
■ Saturation (S) : được gọi là độ tinh khiết của màu hay là độ bão hòa màu. Nó dao
động từ 0% đến 100%. Nếu ta giảm độ bão hòa màu thì màu sắc càng nhạt.
■ Value (V)/ Brightness(B) : được gọi là độ sáng của màu. Nó dao động từ 0% đến
100%. Nó là một biến đối phi tuyến của không gian màu RGB.
Thường thì hệ màu này thích hợp hơn khi làm việc với các vật liệu nghệ thuật, hình
ảnh số hóa, hay các phương tiện truyền thông khác. Nó được dùng để thay thế cho các
hệ màu RGB hay CMYK.

Figure 6: Hệ màu HSV


1.1.4.

Biểu đồ phân bố xác suất màu sắc Histograms

Trong xử lý ảnh thì Histogram có thể hiểu là một biểu đồ màu sắc, nó là đại diện của sự
phân bố màu sắc trong hình ảnh. Biểu đồ màu sắc sẽ đại diện cho số lượng điểm ảnh có
màu sắc khác nhau trong phạm vi màu, nó là tập hợp các


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN
HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

màu sắc trong một bức ảnh. Biểu đồ có thể được xây dựng cho bất kỳ loại không gian
nào, và thường được sử dụng trong không gian ba chiều RGB hoặc HSV.

Figure 7: Biếu đồ Histogram của một bức ảnh

1.2. Lý Thuyết Haartraining
1.2.1.

Haar-like Features:

Haar- like Features là một loại đặt trưng thường được dùng cho thuật toán nhận dạng
trên ảnh. Haar-like Feartures được xây dựng từ các hình chữ nhật bằng nhau, dùng để
tính toán độ chênh lệch giữa các giá trị điểm ảnh trong các vùng kề nhau. Về cơ bản,
ta có 3 dạng đặt trưng: đặt trưng 2 hình chữ nhật, đặt trưng 3 hình chữ
nhật, đặt trưng 4 hình chữ nhật. [18][23]

Figure 8: Đặt trưng Haar-like


Trong quá trình huấn luyện, số lượng xử lý trên Haar Features là rất lớn. việc tính tống
các điểm ảnh cho từng đặt trưng là cho thời gian tính toán tăng lên rất nhiều. Để khắc
phục, Viola và Jones đưa ra khái niệm Intergral Image. Lienhart kế thừa và phát triển
thành SAT (Summed Area Table) (Figure 10 a, b, c, d, a; Figure 9 a, b;
Figure 11a) và RSAT (Rotated Summed Area Table) (Figure 10 e, f, g, h, b; Figure 9 c,
d; Figure 11b) để tính toán nhanh cho các đặt trưng xoay góc 45 độ. [23]

(a) íb) (c)

8

(d)


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID
Figure 9: Edge Features( đặc trưng 2 hình chữ nhật)

Figure 10: Line Features (đặc trưng 3 hình chữ nhật)

Figure 11: Center-surround Features

1.2.2.
a.

Adaboost:

Lý thuyết:


Adaboost (adaptive boosting) là một thuật toán để xây dựng một công cụ phân loại
tuyến tính hữu hiệu kết hợp từ những phân loại đơn giản h t(x). Khái niệm Adaboost
được phát triển từ các thuật toán đơn giản: Boostrapping, Bagging, Boosting,... nhằm
phục vụ cho việc huấn luyện để xử lý đối tượng. Khái niệm này được đưa ra và phát
triển bởi Yoav Freund và Robert Schapire vào năm 1995.
Từ Boosting, Adaboost sử dụng thêm khái niệm trọng số(weight) để đánh dấu riêng
các mẫu khó nhận dạng. Trong quá trình huấn luyện cứ mỗi trọng số đơn giãn được
xây dựng thì thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây
dựng các bộ phân loại đơn giản kế tiếp: tăng trọng số của các mẫu nhận dạng sai, giảm
trọng số của các mẫu được nhận dạng đúng bởi phân loại đơn giản vừa được xây dựng.
Bằng cách này, các phân loại đơn giản sau có thể tập trung vào các mẫu mà các phân
loại đơn giản trước đó chưa làm tốt. Sự lặp lại liên tục thực hiện vá các kết quả cuối
cùng sẽ là một chuỗi cascade các kết hợp tuyến tính của các bộ phân loại đôn giãn, tạo
ra một bộ phân loại hiệu quả, giúp tạo được độ chính xác mong

9


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

muốn. Hình sau là một ví dụ về phương pháp Adaboost với việc xây dựng một phân loại
hiệu quả từ 3 bộ phân loại đơn giãn.

Figure 12: Ví dụ về Phương pháp Adaboost Các phân loại đơn giãn (weak classifiers)

hk(x) có dạng:
(1)

J1

* íQ
k

nếu P k f Á ) < P k
ngược lại
x



k

■ x= (x1 , x 2 , x 3 . ,xn): vector đặc trưng mẫu
■ d : ngưỡng
■ fk: hàm


pk : hệ số quyết định chiều của

phương trình. Thuật toán được đưa ra:
T
f(
x) = Y,atht(x)

(2)

t=1
Trong đó:
■ t= 1,.. ,,T số phân loại đơn giãn.



ht(x): phân loại đơn giản.

■ at: trọng số (weight)

H(x) =sign(f(x)) : phân loại hiệu quả

1
0

(3)


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID
Các dang Adaboost:



Tăng tốc thích nghi rời rạc(Discrete Adaboost - DAB)

■ Tăng tốc thích nghi thực (Real Adaboost - RAB).


Tăng tốc thích nghi linh hoạt (Gentle Adaboost - GAB)

b. Sơ đồ khối cho thuật toán Adaboost trong thuật toán nhân dạng ảnh:

Figure 13: Sơ đồ khối cho thuật toán Adaboost

1.3. Lý thuyết thuật toán Camshift

1.3.1.

Thuật toán Meanshift

Meanshift là một thuật toán dịch chuyển đệ quy một điểm dữ liệu đến trung bình
của các điểm dữ liệu tại vùng lân cận của nó, tương tự như việc gom các điểm dữ
liệu lại tạo thành một nhóm. [3] (chapter 9 trang 298)
Hàm CvMeanShift trong OpenCV được thực hiện lặp đi lặp lại nhằm tìm kiếm
đối tượng, nó có ngõ vào là vị trí ban đầu của đối tượng...
Các bước thực hiện thuật toán Meanshift

11


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN
HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID



B1: Chọn kích thước cửa số tìm kiếm và vị trí ban đầu cửa số tìm kiếm.



B2: Tính vị trí trung bình của cửa số tìm kiếm.

■ B3: Xác định được trung tâm cửa số tìm kiếm ở bước 2.
■ B4: Lặp lại B2 và B3 cho đến khi vị trí di chuyển trung bình ít hơn
ngưỡng được đặt trước.
Giả sử ta có không gian phân phối Euclidean chứa phân phối f, các chứng

minh bên dưới sẽ làm rõ cho các bước ở trên:
■ B1: Một cửa số W dược chọn với kích thước s.
■ B2: Cửa số tìm kiếm hiện tại được lấy trọng tâm ở pk.


B3: Công thức tính vị trí trung bình trong cửa số tìm kiếm:

(4)
Công thức tính độ dịch chuyển trung bình của f(p)

(5)
■ B4: Trung tâm của cửa số ở điểm:

(6)
■ B5: Thực hiện lại B3 và B4 cho đến khi:
f\p)=0

(7)

Thì thuật toán mean shift hội tụ tại đây.
Đối với phân bố xác suất ảnh 2D, vị trí trung bình với cửa số tìm kiếm (B3
và B4) được tìm như bên dưới:
Moment thứ 0 được tính theo công thức:

1
2


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID


Mw=ỵỵi(x.y).
Xy

(8)

Moment đầu tiên cho x và y được tính

theo công thức:

(9)

(10)
Vị trí cửa số tìm kiếm trung bình là:
(11)

(12)
Với I(x,y) là giá trị pixel ở vị trí (x,y) trong ảnh, vùng x và y đề cập đến cửa số tìm
kiếm.
1.3.2.

Thuật toán Camshift

Camshift (Continue Adaptive Mean-shift) là một thuật toán theo vết khác được phát
triển từ Meanshift. Về cơ bản, thuật toán này giống với Meanshift. Tuy nhiên, đối với
thuật toán Camshift, cửa sổ tìm kiếm có thể tự điều chỉnh kích thước. [ 3] (chapter 9
trang 337)
Hàm CvCamShift trong OpenCV dùng để tìm trung tâm đối tượng, kích thước và
hướng xoay của đối tượng. Đầu tiên sẽ sử dụng thuật toán Meanshift để tìm trung tâm
của đối tượng và hiệu chỉnh kích thước cửa số chứa đối tượng và tìm được góc quay.

Hàm này sẽ trả về góc quay chứa vị trí của đối tượng, kích thước và hướng đối tượng.

1
3


NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊN HỆ
ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID

Các bước thực hiện thuật toán Camshift :
■ B1: Đầu tiên, ta sẽ thiết lập khu vực tính toán phân phối xác suất cho toàn bộ
đối tượng.
■ B2: Chọn vị trí ban đầu của đối tượng trong cửa số tìm kiếm bằng Meanshift.
Các mục tiêu được chọn sẽ được theo dõi.
■ B3: Tính toán sự phân phối màu sắc của khu vực trung tâm trong cửa số tìm
kiếm.
■ B4: Thuật toán Meanshift tìm ra được trọng tâm của đối tượng. Lưu trữ vị trí 0
và vị trí trọng tâm.
■ B5: Tại khung hình của video hay của Camera tiếp theo, trung tâm cửa số tìm
kiếm được lưu trữ ở B4 và thiết lập kích cỡ cửa số về thời điểm 0, sau đó thực
hiện lại B3 cho đến khi tìm được góc quay chứa vị trí của đối tượng, kích thước
và hướng đối tượng thì dừng lại. [2] (trang 5)
Định hướng 2D của phân phối xác suất cũng dễ dàng có được bằng cách sử
dụng moment thứ 2 trong quá trình tính Camshift ở vùng cửa số tìm kiếm (x,y):
Moment thứ hai là:
m

2 0 = ỵ ỵ x 2i ( x , y ĩ ,

(13)


Định hướng đối tuợng là:

(14)
Chiều dài l và chiều rộng m của phân bố xác suất “blob” được tìm bởi thuật toán
Camshift có thể được tính theo công thức:

1
4


(15)

Với giá trị của a, b và c là:

(16)

(17)

(18)

(19)
S ơ đồ kh ố i củ a thu ậ t toán Camshift :


×