MỤC LỤCLỜI CAM ĐOANILỜI CẢM TẠIIMỤC LỤC...IIIDANH MỤC HÌNHVDANH MỤC BẢNGVIITÓM TẮTVIIIABTRACTVIIIPHẦN TỔNG QUAN11.Đặt vấn đề:12.Lịch sử giải quyết vấn đề:23.Phạm vi của đề tài:24.. Phương pháp nghiên cứu và hướng giải quyết vấn đề:2PHẦN NỘI DUNG 3CHƯƠNG 1: CƠ SỞ LÝ THUYẾT31.1.Lý thuyết về xử lý ảnh31.1.1.Các phương pháp phát hiện biên31.1.2.Tổng quan về nhận dạng ảnh51.1.3.Không gian màu HSVHSB:.71.1.4.Biểu đồ phân bố xác suất màu sắc Histograms71.2.Lý Thuyết Haartraining81.2.1.Haarlike F eatures:81.2.2.Adaboost:91.3.Lý thuyết thuật toán Camshift111.3.1.Thuật toán Meanshift111.3.2.Thuật toán Camshift131.4.Giới thiệu về thư viện xử lý ảnh OpenCV161.4.1.OpenCV là gì?.161.4.2.Ai dùng OpenCV?171.4.3.Tìm hiểu về thư viện hàm của OpenCV:181.5.Cơ bản về Hệ điều hành Android221.5.1.Giới thiệu về Hệ điều hành Android221.5.2.Sơ lược các thành phần trong Android23CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU252.1.Quy trình phát triển ứng dụng Android252.1.1.Giả lập hệ điều hành Android SDK vào trong Eclipse trên Hệ điều hành Window. 252.2.Thư viện Opencv có thể sử dụng trên hệ điều hành Android hay không ?322.2.1.Tích hợp thư viện OpenCV vào trong Eclipse 17322.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 362.3.Nghiên cứu ứng dụng nhận dạng bàn tay người trong điều khiển tự động482.3.1.Hướng dẫn phương pháp HaarTrainning bàn tay người482.3.2.Lập trình nhận diện bàn tay người532.4.Nghiên cứu ứng dụng theo vết hướng nghiên của đầu người592.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: 592.4.2.Lập trình ứng dụng theo vết hướng nghiên của đầu người dùng Camshift: 59PHẦN KẾT LUẬN VÀ ĐỀ NGHỊ70Kết luận70Đề nghị71PHỤ LUC 1: HƯỚNG DẪN LẬP TRÌNH ANDROID TRÊN ECLIPSE73PHỤ LỤC 2: HƯỚNG DẪN LẬP TRÌNH JAVA CHO ANDROID80TÀI LIỆU THAM KHẢO89
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ
Trang 2TRƯỜ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
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:
Trang 3NGHIÊ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
I
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ầnlớ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ì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ạnchế 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ệmtrước nhà trường
Cần Thơ, ngày tháng năm 20
Sinh viên thực hiện
Trang 4LỜ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
Trang 5MỤ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 P hươ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
Trang 6Kế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
Trang 7DANH 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
Trang 8Figure 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
Trang 9DANH 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
Trang 10TÓ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ở Androidcủ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ặtkhác chúng ta có thể sử dụng những nghiên cứu đó trong điều khiển tự động ở cácthiế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ànhAndroid, 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ụ trongviệc điều khiển thiết bị
ABTRACT
Today, with the explosion of science and technology, Android open sourceoperating system of Google growing its strong growth It is used on most smartphones and tablets And OpenCV is an open source library is strong in the field ofimage processing Therefore, the image processing program on the Android operatingsystem (Linux) using the OpenCV library to create value on a new direction forresearch applications on the handset is compact On the other hand we can use thatresearch in automatic control at this device To implement the project, we startedresearch on the Android operating system, library OpenCV image processing andsoftware support Then we use the OpenCV library on Android operating system tocreate several applications in the service control device
Trang 11NGHIÊ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ở đ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 2500thuậ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àngchứ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
Trang 12NGHIÊ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
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ý ảnhOpenCV 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
Trang 13PHẦ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ềuquan trọng là sự biến thiên mức xám giữa các điểm ảnh trong một vùngthườ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 (khiqua 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êndự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)
Trang 14■ 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ểmkhông do đó đường biên chỉ có độ rộng 1 pixel Tuy nhiên, kỹ thuật này rất nhạy
cảm với nhiễu do đạo hàm bậc hai thường không ổn định.[1]
(trang 125)
■ 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ằngcách lấy đạo hàm của một ảnh chập với bộ lọc Gauss.[1](trang 127)
Figure 1: Mô hình đạo hàm bậc 1 và bậc 2 của biên
Figure 2: Mô phỏng kỹ thuật Laplace
Trang 15Figure 3: Mô hình tính của phương pháp Canny
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
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
Trang 16nhữ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ếttrước gọi là nhận dạng có thày hay học có thày( supervised learning); trong trường hợpngược lại gọi là học không có thày( non supervised learning).[1] (trang 170]
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àomột lớp hay nói một cách khác là gán cho đối tượng một tên
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]
Figure 5: Mô hình nhận dạng đối tượng
Trang 17■ 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
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
Figure 6: Hệ màu HSV
Trang 18NGHIÊN CỨU KHẢ NĂNG ỨNG DỤNG THƯ VIỆN XỬ LÝ ẢNH OPENCV TRÊ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]
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ốngcá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ắcphục, Viola và Jones đưa ra khái niệm Intergral Image Lienhart kế thừa và phát triểnthà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) (d) Figure 7: Biếu đồ Histogram của một bức ảnh
Figure 8: Đặt trưng Haar-like
Trang 19NGHIÊ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
Từ Boosting, Adaboost sử dụng thêm khái niệm trọng số(weight) để đánh dấu riêngcá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 đượcxâ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âydự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ảmtrọ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ânloạ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ốicù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
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)
Trang 20Figure 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)
(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
1 0
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
■ pk : hệ số quyết định chiều của phương trình
Thuật toán được đưa ra:
T
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ả
Trang 21NGHIÊ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
1 1
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)
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
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
Trang 22■ 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.
(4)Công thức tính độ dịch chuyển trung bình của f(p)
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:
Trang 23NGHIÊ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
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
Trang 24NGHIÊ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
1 4
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 20 =ỵ ỵ x 2 i (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ánCamshift có thể được tính theo công thức:
Trang 25S ơ đồ kh ố i củ a thu ậ t toán Camshift :
Trang 26Set calculation region at search window center but larger m size than the
search window
Color histogram look
up in calculation region
Color probability distribution
Find center of mass within the search window'
Center search window'
at the center of mass and find area under It Converged
• size and location ' Use (X.Y) to set
Figure 14: Sơ đồ khối thuật toán Camshift
1.4 Giới thiệu về thư viện xử lý ảnh OpenCV 1.4.1.OpenCV là gì?
OpenCV là một thư viện thị giác máy tính mã nguồn mở có giá trị từ trang http://SourceForge.net/projects/opencvlibrary.Thư viện này được viết bằng ngôn ngữ C , C++ và được chạy trên nền hệ điều hành Linux, Windows và Mac OS X Nó đượcphát triển trên giao diện Python, Ruby, Matlab và nhiều ngôn ngữ khác [3] (trang 1)
OpenCV được thiết kế cho hiệu suất tính toán cao và tập trung mạnh vào các ứng dụng thời gian thực OpenCV đượcviết một cách tối ưu cho ngôn ngữ C và có thể tận dụng lợi thế của bộ vi xử lý đa lõi
••
.♦* Choose initial \
search window HSV linage
Trang 27General Image Processing Functions Image Pyramids
Geometric descriptors
Detection, Recognition
Matrix Math
Fitting
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
1 7
Một trong những mục tiêu của OpenCV là cung cấp một cơ sở hạ tầng tầm nhìnmáy tính đơn giản để sử dụng giúp mọi người xây dựng các ứng dụng tầm nhìn khátinh vi một cách nhanh chóng Thư viện OpenCV có hơn 500 chức năng mở rộngnhiều lĩnh vực trong tầm nhìn, bao gồm kiểm tra nhà máy sản xuất sản phẩm, hình ảnh
y tế, an ninh, giao diện người dùng, hiệu chuẩn máy ảnh, tầm nhìn âm thanh stereo, vàrobot
OpenCV Overview: > 500 functions
openc V willowgarage c om
Segmentation calibration.
Stereo, 3D
Features
Transforms Data Structures
Tracking
Figure 15: Các tính năng của thư viện OpenCV
Bởi vì tầm nhìn máy tính (Computer Vision) và machine learning thường đicùng nhau nên OpenCV cũng chứa đầy đủ Machine Learning Library (MLL) Phầnnhỏ của thư viện này được tập trung vào nhận dạng mẫu thống kê và phân nhóm.MLL rất hữu ích cho các nhiệm vụ tầm nhìn mà đó là sứ mệnh cốt lõi
Trang 281 8
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Ở AN D R O ID
tầm nhìn máy tính được sử dụng trong giám sát, hình ảnh,
video, một số lại thấy một vài ứng dụng của OpenCV trong giao diện game Tuy nhiên ít ai biết rằng trên không gian và hình ảnh về bản đồ đường phố, hiệu chuẩn máy ảnh hay trong giám sát an toàn,
xe không người lái hoặc phân tích y sinh học đều có Computer
Vision Và làm thế nào chúng ta biết được Computer Vision đã trở nên phố biến trong một số điểm kiểm tra tự động tại hầu hết các khâu trong sản xuất hàng loạt.[3]
Do OpenCV là thư viện mã nguồn mở nên mọi người sử dụng không cần phải
có nghĩ vụ đối với sản phẩm mã nguồn mở của mình OpenCV có một cộng đồngngười dùng lớn, từ các công ty lớn (IBM, Microsoft, Intel, Sony, Siemens,
G o o g l e , ) và các trung tâm nghiên cứu (như Stanford, MIT, CMU, Cambridge, vàINRIA) cho tới một nhóm diễn đàn của Yahoo khoảng 20.000 thành viên đang thảoluận về nó OpenCV phố biến trên thế giới, với cộng đồng người sử dụng lớn ở TrungQuốc, Nhật Bản, Nga, Châu Âu, và Israel
1.4.3 Tìm hiểu về thư viện hàm của OpenCV:
a Quy tắc đặt tên:
Tất cả các cấu trúc và các hàm của OpenCV đều được đặt tên theo quy cáchsau:
■ Từ khóa và hằng số đều được viết hoa toàn bộ, bắt đầu bởi tiếp đầu ngữ
“CV” , các từ cách nhau bởi dấu gạch dưới “_”
Ví dụ: CV_COLOR_GRB2GRAY
■ Tên hàm và cấu trúc được viết hoa ký tự đầu của mỗi chữ có nghia4va2 sử dụng tiếp đầu ngữ “cv” cho hàm và “Cv” cho cấu trúc
Ví dụ: tên hàm cvFindContours và cấu trúc CvPoint
■ Tên của một hàm có cấu trúc như sau:
cv<HànhĐộng><ĐốiTượng>_<kiểu>
<HànhĐộng>: thao tác nào được sử dụng
Ví dụ: Find, Set, Convert,
Trang 291 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Ở AN D R O ID
<ĐốiTượng>: chỉ định đối tượng mà hành động hướng tới Nếu
đốitượng dài hơn một chữ thì phải viết hoa ký tự đầu
b Sơ lược về thư viện hàm của OpenCV
OpenCV, như đã nói là một thư viện rất đồ sộ và được tập thể các tác giả chia làm 6 phần chính: [3] (trang 11)
CxCore: Chứa các cấu trúc cơ bản như điểm, đường, dãy, mặt, ma
trận,array và các thao tác lên array, các cấu trúc động, các hàm vẽ, các hàm tác động lên
dữ liệu, các hàm quản lý lỗi và sự kiện và một số hàm cần thiết khác Sau đây là một
số cấu trúc quan trọng:
■ CvPoint: chứa cấu trúc tọa độ của một điểm ảnh Cùng với cấu trúc CvPointcòn có : CvPoint2D32f chứa tọa độ thực, CvPoint3D32f chứa tọa độ thực củađiểm trong không gian Ngoài ra còn có CvPoint2D64f và CvPoint3D64f
■ CvSize: chứa thông tin để lưu lại kích thước ngoài ra còn có các cấu trúc cùng họ khác
■ CvRect: cấu trúc hình chữ nhật
■ CvMat: ma trận một cấu trúc được sử dụng khá nhiều
■ IplImage: cấu trúc quan trọng nhất Chứa đựng toàn bộ ảnh
■ CvSeq: cấu trúc này chứa một danh sách các dữ liệu Đây có thể xem là một ArrayList trong OpenCV
Trang 30NGHIÊ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 0
CV: chứa hầu hết các thao tác liên quan đến việc xử lý ảnh ở cấp thấp như lọc
ảnh, trích biên, phân vùng, tìm coutour, biến đối Fourier ta chia CV làm 2 nhóm là:nhóm xử lý ảnh và nhóm phân tích cấu trúc
Khảo sát moment: làm việc trên mọi thứ liên quan đến Moment
Những biến đối đặc biệt: Các biến đối khác với Affine hay Canny, ví dụ nhưbiến đối Hough tìm đường thắng, tìm đường tròn
Làm việc với Histograms: cung cấp các hàm trên Histogram như lấy Histogramcủa một vùng, cân bằng Histogram
■ Nhóm phân tích cấu trúc:
Các xử lý trên Contour: bao gồm xấp xỉ Contour, tính diện tích Contour
Các tính toán hình học: tìm đường bao, hình bao, đa giác
Còn có nhiều nhóm khác nữa trong phần này như các hàm làm việc trên
Camera, trên phân tích chuyển động của điểm ảnh, phân đoạn ảnh(segmentation) , tuy nhiên chúng tôi không trình bày ra vì lý do không cần thiết
Trang 312 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Ở AN D R O ID
HighGUI: các thao tác lên những file ảnh và file video như đọc ảnh, hiển thị
ảnh, chuyển đổi định dạng ảnh, cũng chia làm 2 nhóm: nhóm tác động lên giao diện
và nhóm tác động lên ảnh
■ Nhóm tác động lên giao diện:
Các hàm làm việc với cửa sổ: gồm các hàm tạo cửa sổ, hủy cửa sổ, lấy Handlecủa một cửa sổ, thay đổi kích thước của một cửa sổ
Làm việc với mouse và bàn phím: cung cấp một số hàm cơ bản xử lý những sựkiện tương ứng với mouse và bàn phím
Các hàm hiển thị ảnh lên cửa sổ: ở đây chỉ có một hàm duy nhất:cvvShowImage
■ Nhóm tác động lên file ảnh:
cvLoadImage: đọc một ảnh vào cấu trúc IplImage Các loại ảnh hổ trợ hiện tạilà:
Windows Bitmaps - BMP, DIB;
JPEG files - JPEG, JPG, JPE;
Portable Network Graphics - PNG;
Portable Image Format - PMB, PGM, PPM;
Sun Rasters - SR, RAS;
TIFF files - TIFF, TIF;
cvSaveImage: lưu một ảnh vào file, định dạng tùy thuộc vào phần mở rộngmuốn lưu
CvCam: Làm việc với Camera.
Machine Learning (ML): chứa nhiều hàm phân tích, phân nhóm và phân loại
dữ liệu
Haartraining:
Trang 32NGHIÊ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 2
1.5 Cơ bản về Hệ điều hành Android
1.5.1 Giới thiệu về Hệ điều hành Android
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dànhcho các dòng điện thoại SmartPhone Đầu tiên được ra đời bởi công ty liên hợpAndroid, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệđiều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao trên thếgiới
Hệ điều hành android là một hệ điều hành rất mạnh, có tính bảo mật cao, hỗ trợđược nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi tương thích với nhiềuphần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và trackball.Android là hệ điều hành di động nên có khả năng kết nối cao với các mạng không dây
Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phương tiện media, hoạt hìnhcũng như trình diễn các khả năng đồ họa khác cực tốt, là tiền đề để phát triển các ứngdụng có giao diện phức tạp chẳng hạn như là các trò chơi
Android liên tục được phát triển, mỗi bản cập nhật từ
google làmỗi lầnandroid được tối ưu hóa để hoạt động tốt hơn, nhanh và on định hơn, hỗ trợ thêm côngnghệ mới Chẳng hạn như theo một đánh giá thì android phiên bản 2.2 hoạt độngnhanh hơn bản 2.1 tới 450% Hiện nay, phiên bản mới nhất 2.3 phát hànhngày 6/12/2010 và đang tiếp tục được cập nhật
Năm 2008, hệ điều hành android đã chính thức mở toàn bộ mã nguồn, điều đócho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao chophù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mởnày hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí pháttriển hệ điều hành Những điều đó là cực kỳ tốt không chỉ đối với các hãng sản xuấtđiện thoại nhỏ mà ngay cả với những hãng lớn như Samsung, HTC
Với Google, vì android hoàn toàn miễn phí, Google không thu tiền từ nhữnghãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ android nhưng bù lại,những dịch vụ của hãng như Google Search, Google Maps, nhờ có android mà cóthể dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc điện thoại được
Trang 33NGHIÊ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 3
sản xuất ra đều được tích hợp hàng loạt dịch vụ của Google Từ đó hãng có thểkiếm bội, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó
Với các nhà phát triển ứng dụng (developers), việc hệ điều hành android được sửdụng phố biến đồng nghĩa với việc họ có thể thoải mái phát triển ứng dụng trên nềnandroid với sự tin tưởng là ứng dụng đó sẽ có thể chạy được ngay trên nhiều dòngđiện thoại của các hãng khác nhau Họ ít phải quan tâm là đang phát triển cho điệnthoại nào, phiên bản bao nhiêu vì nền tảng android là chung cho nhiều dòng máy, máy
ảo Java đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dòng điện thoại
mà nó đang chạy Tất cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kếthợp với XML nên có khả năng chuyển cao
1.5.2 Sơ lược các thành phần trong Android
Việc hiểu được các thành phần (component) tạo nên một ứng dụng Android là rất cầnthiết cho việc lập trình Các thành phần này được chia làm 6 loại bao gồm:[10]
o Activity: hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng Khi
khởi động một ứng dụng Android nào đó thì bao giờ cũng có một mainActivity được gọi, hiển thị màn hình giao diện của ứng dụng cho phépngười dùng tương tác
o Service: thành phần chạy ẩn trong Android Service sử dụng để update dữ
liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy
o Content Provider: kho dữ liệu chia sẻ Content Provider được sử dụng để
quản lý và chia sẻ dữ liệu giữa các ứng dụng
o Intent: nền tảng để truyền tải các thông báo Intent được sử dụng để gửi các
thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện côngviệc bạn mong muốn VD: khi mở một trang web, bạn gửi một intent đi đểtạo một activity mới hiển thị trang web đó
o Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới VD:
bạn viết 1 chương trình thay thế cho phần gọi điện mặc định
của
Trang 34NGHIÊ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 4
Android, khi đó bạn cần 1 Broadcast Receiver để nhận biết các Intent làcác cuộc gọi tới
o Notification: đưa ra các cảnh báo mà không làm cho các Activity phải
ngừng hoạt động
Một số thành phần tạo giao diện trong Android:
o Các layout: Layout được dùng để quản lý các thành phần giao diện khác theo một trật tự nhất định
o FrameLayout: Layout đơn giản nhất, thêm các thành phần con vào góc trên bên trái của màn hình
o LinearLayout: thêm các thành phần con theo một chiều nhất định (ngang hoặc dọc) Đây là layout được sử dụng nhiều nhất
o RelativeLayout: thêm các thành phần con dựa trên mối quan hệ với các thành phần khác hoặc với biên của layout
o TableLayout: thêm các thành phần con dựa trên một lưới các ô ngang và dọc
o AbsoluteLayout: thêm các thành phần con dựa theo tọa độ x, y
Layout được sử dụng nhằm mục đích thiết kế giao diện cho nhiều độ phân giải Thường khi lập trình nên kết hợp nhiều layout với nhau để tạo ra giaodiện mong muốn
o File XML trong Android :
- XML dùng để thiết kế giao diện cho ứng dụng Tất nhiên ta hoàntoàn có thể thiết kế một giao diện như ý muốn mà không cần tới bất cứ mộtdòng XML nào, nhưng sử dụng XML sẽ đơn giản công việc đi rất nhiều.Đồng thời sử dụng XML sẽ giúp việc chỉnh sửa ứng dụng sau này trở nên dễdàng
- Về nguyên tắc, khi lập trình ứng dụng ta thiết kế giao diện bằng XML
và cài đặt các xử lý khi tương tác với giao diện trong mã lệnh
Trang 35NGHIÊ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 5
CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU
2.1 Quy trình phát triển ứng dụng Android
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.
a Giới thiệu về Android SDK ( Software Development Kit):
SDK Android Emulator là một tiện ích miễn phí dành cho Windows, Mac và Linux
để giả lập Android ngay trên máy tính Nó được Google thiết kế để các nhà phát triển
có thể thử nghiệm các ứng dụng của mình trên Android trước khi chạy chúng trên thiết bị cầm tay Để sử dụng Android Emulator, hệ thống của bạn yêu cầu được cài đặt môi trường hỗ trợ Java Để lập trình Android thì mỗi bộ SDK của Google là không đủ, còn cần tích hợp vào một IDE như Eclipse Android SDK thực chất là tập hợp các công
cụ và thư viện để phát triển các ứng dụng trên nền tảng hệ điều hành Android [9]
b Hệ điều hành được hổ trợ:[11]
■ Windows XP (32-bit), Vista (32- or 64-bit), or Windows 7 (32 or 64bit) o
Mac OS X 10.5.8 or later (x86 only)
o Linux (tested on Ubuntu Linux, Lucid Lynx) o GNU C Library (glibc)
2.7 or later is required o On Ubuntu Linux, version 8.04 or later is
required o 64-bit distributions must be capable of running 32-bit
http://www oracle.com/technetwork/j ava/javase/ downloads/jdk7u3
-download-1501626.html để download phiên bản JDK 7 dành cho window 7 ( 32bit)
Trang 36NGHIÊ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 6
■ Android SDK ( Software Development Kit): đây là bộ dụng cụ dành để pháttriển phần mềm Android Ta có thể download chúng ở trang:
http://developer.android.com/sdk/index.html Tải version mới nhất của SDK file
“android-sdk-r16-windows.zip”
■ Eclipse IDE:
o Gói Eclipse 3.6 (Helios) hoặc mới hơn
o Nếu bạn cần install hoặc update Eclipse, bạn có thể tải chúng ở trang
http://www.eclipse.org/downloads/
o Để phát triển ứng dụng Android, ta cần install một trong những gói sau:
- Eclipse IDE for Java Developers
o Ta có thể tải ADT-16.0.1.zip ở: phần Troubleshooting ADT Installation củatrang http://developer.android.com/sdk/eclipse-adt.html hoặc vào
http://dl.google.com/android/ADT-16.0.1.zip để download file rar
d Giả lập HDH Android vào trong Eclipse: [12][13]
■ Install JDK: sau khi tải file jdk-7-windows-i586.exe về ta thực thi file này và cài JDKnhư mọi phần mềm khác
■ Install SDK:
o Giải nén file sdk-r16-windows.zip vừa tải về vào thư mục sdk-r16
Trang 37android-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 7
o Trong thư mục vừa giải nén, thực thi file SDK manager Sau khi file AndroidSDK manager khởi động xong ta sẽ thấy giao diện như hình bên dưới
o Ta có thể chọn những gì bạn muốn cài đặt thêm, và sau đó click Install package đểbắt đầu quá trình cài đặt thêm ứng dụng giả lập Android trên máy tính của
bạn.nếu giao diện như bên dưới xuất hiện thì bạn phảichọn những gói cần cài đặt và nhấn Accept / Install
Figure 16: Install SDK 1
Trang 38gesV SDK Platform Android 2.2, AP •
V Samples for SDK APIS, revisio-
? Google APIs by Google Inc.,
■v' SDK Platform Android 21, AP
v' Samples for SDK API 7, rerâ40
? Google APIs by Google Inc
ỊỊ Revisron 2
This package is a dependency for.
- Google APIs by Google Inc., Android API8 r revision 2
Ềtíìta JtotrinUflfl
Archive for Windows SiïfcTÏMJe
CUM -on -iei,-vrarrwiTnw.rojicu-cmweW:J.OJI 1 JUST
■a Accept Reject
Install! ä Cancel
jg Choose Packages to Install
Figure 17: Install SDK 2
■ Tích hợp Android SDK vào Eclipse:
o Khởi chạy Eclipse, vào Help -> Install new softwares Chọn Add, gõ vào ôName tên mà chúng ta muốn và Location gõ vào địa chỉ để tải về ADT:HTML Code: https://dl-ssl.google.com/android/eclipse/
Hoặc http://dl-ssl.google.com/android/eclipse/
Ngoài ra chúng ta cũng có thể sử dụng bảng ADT 16.0.1.rar vừa mới tải
về, chọn Archive và browse tới file này (lưu ý không giải nén) Và nhấn OK
Trang 39Available Software
Select a site or enter the location of a site.
71 Show only the latest versions of available software Q Hide items that are already installed [71 Group items by category What is already installed?
71 Contact all update sites during install to find required software
Figure 19: Install ADT Plugin 2
Find more software bv workina with the 'Available Software Sites preferences,
Figure 18: Install ADT Plugin 1
o Click vào phần dưới ô Name (sẽ hiện ra dòng Developer Tools)Tiếp tục cài như mọi chương trình khác
Work with; type or select a site ▼ Ị Add
Details
® 1 < f=BCk Next > Finish 1 1 Cancel
Trang 40o Sau khi cài xong ADT, ta chọn Eclipse -> Windows -> Preferences ->Android Nhấn nút Browse và chỉnh đường dẫn tới thư mục của AndroidSDK giải nén lúc trước Sau đó chọn Apply
-> OK -> OK
■ Thiết lập trình mô phỏng AVD (Android Virtual Device):
AVD là máy ảo cho developer phát triển ứng dụng
Để tạo một AVD chúng ta vào Windows > Android SDK and AVD Manager
-> Virtual Devices Chọn New Cửa so Create new AVD hiện ra, điền thông tin choAVD:
Figure 20: Tích hợp Android SDK vào trong Eclipse