1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU OPENCV và xây DỰNG PHẦN mềm NHẬN DẠNG BIỂN báo GIAO THÔNG TRÊN ANDROID

62 1,1K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 62
Dung lượng 379,54 KB

Nội dung

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC TÌM HIỂU OPENCV VÀ XÂY DỰNG PHẦN MỀM NHẬN DẠNG BIỂN BÁO GIAO THÔNG TRÊN ANDROID Sinh viên thực hiện: Cán bộ hướng dẫn: Trần Hoàng Quốc Th.S Phan Phương Lan MSSV: 1091526 MSCB: 1232 Cán bộ phản biện: Th.S Trương Thị Thanh Tuyền (MSCB: 1068) Th.S Huỳnh Quang Nghi (MSCB: 2628) 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 Công nghệ phần mềm. Khoa Công nghệ Thông tin, Trường Đại học Cần Thơ vào ngày 10 tháng 05 năm 2013 Có thể tìm hiểu luận văn tại: • Thư viện Khoa Công nghệ Thông tin, Trường Đại học Cần Thơ LỜI CẢM ƠN Gần 4 năm học tập tại trường ĐHCT, được sự truyền đạt tận tình của thầy cô cùng với sự giúp đỡ nhiệt tình của các bạn, hôm nay em đã hoàn thành được đề tài luận văn tốt nghiệp. Em xin chân thành cảm ơn quý thầy cô trường ĐHCT nói chung cũng như thầy cô khoa CNTT nói riêng đã tận tình giảng dạy và truyền đạt những kiến thức quý báo cho em trong suốt gần 4 năm qua. Đặc biệt là Cô Phan Phương Lan đã tận tình hướng dẫn em trong quá trình học và làm đề tài luận văn này. Do kiến thức còn hạn hẹp, thời gian tìm hiểu chưa sâu, chắc chắn bài báo cáo luận văn này không tránh khỏi những thiếu sót, hạn chế rất mong nhận được sự đóng góp của quý thầy cô để đề tài này ngày càng hoàn thiện hơn. Em xin gởi lời chúc sức khoẻ và lòng biết ơn sâu sắc đến quý thầy cô trường Đại Học Cần Thơ đã hướng dẫn, giúp đỡ em trong những năm qua. Xin dành những tình cảm chân thành nhất cho gia đình và cho người thân. Cuối cùng, xin gửi lời cảm ơn đến tất cả bạn bè đã gắn bó cùng tôi. Cần Thơ, tháng 012013 MỤC LỤC LỜI CẢM ƠN 1 NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN 2 NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN 3 MỤC LỤC 4 MỤC LỤC HÌNH ẢNH 6 KÝ HIỆU VÀ VIẾT TẮT 8 TÓM TẮT 9 ABSTRACT 10 TỪ KHÓA 11 CHƯƠNG 1: TỔNG QUAN 12 I. ĐẶT VẤN ĐỀ 12 II. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 12 III. PHẠM VI ĐỀ TÀI 12 IV. PHƯƠNG PHÁP NGHIÊN CỨU – HƯỚNG GIẢI QUYẾT 13 V. KẾ HOẠCH THỰC HIỆN 14 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 16 I. THƯ VIỆN XỬ LÝ ẢNH OPENCV 16 1. Giới thiệu Computer Vision 16 2. Lịch sử phát triển 17 3. Cấu trúc của OpenCV 18 4. OpenCV trên Android 18 II. NỀN TẢNG ANDROID 18 1. Lịch sử phát triển của Android 19 2. Các phiên bản Android và API của nó 19 3. Hệ thống hỗ trợ của Android 20 4. Các ứng dụng có sẵn trên Android 20 5. Kiến trúc của hệ thống Android 24 6. Các thành phần trong một dự án ứng dụng Android 26 III. PHƯƠNG PHÁP PHÁT HIỆN BIỂN BÁO 30 1. Phát hiện biên ảnh bằng Canny 30 2. Kết hợp đặc trưng màu với phương pháp Canny 31 3. Dùng đặc trưng hình học để loại bỏ biên giả 32 4. Trích xuất vùng đặc trưng 32 IV. CÔNG CỤ NEUROPH STUDIO 2.6 34 1. Lịch sử phát triển 34 2. Chức năng 34 3. Tầm nhìn 35 CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 36 I. ĐẶC TẢ 36 1. Giới thiệu 36 2. Mô tả tổng quan 36 3. Các yêu cầu giao tiếp 39 4. Các tính năng của hệ thống 39 5. Các yêu cầu phi chức năng 46 II. THIẾT KẾ 46 1. Giới thiệu 46 2. Mô tả thiết kế hệ thống 47 3. Thiết kế dữ liệu 51 4. Thiết kế theo chức năng 53 KẾT LUẬN VÀ ĐỀ NGHỊ 60 I. KẾT LUẬN 60 1. Kết quả đạt được 60 2. Hạn chế 60 II. HƯỚNG PHÁT TRIỂN 60 TÀI LIỆU THAM KHẢO 61 MỤC LỤC HÌNH ẢNH Hình 1 – Logo của tổ chức OpenCV 16 Hình 2. Các hàm xử lý ảnh của OpenCV 17 Hình 3 – Lịch sử phiên bản của OpenCV 18 Hình 4 – Cấu trúc thư viện OpenCV 18 Hình 5 – Robot Android – Biểu tượng của Hệ điều hành Android 19 Hình 6 – Kiến trúc của Android 24 Hình 7 – Máy ảo Dalvik 26 Hình 8 – Kiến trúc file AndroidManifest.xml 27 Hình 9 – Trạng thái của ngăn xếp khi chưacs các Activity 29 Hình 10 – Vòng đời của một Activity. 30 Hình 11 – Không gian màu HSV 32 Hình 12 Quy trình của phương pháp phát hiện biển báo giao thông 33 Hình 13 – Lưu đồ thuật toán phát hiện biển báo. 33 Hình 14 – Các khái niệm cơ bản trong Neuroph 34 Hình 15 – Mô hình cấu trúc của Neuroph 35 Hình 16 – Một số biển báo cấm đường bộ Việt Nam (http:www.hcmct.edu.vn) 37 Hình 17 – Một số biển báo nguy hiểm đường bộ Việt Nam (http:www.hcmct.edu.vn) 38 Hình 18 – Một số biển báo hiệu lệnh đường bộ Việt Nam (http:www.hcmct.edu.vn) 38 Hình 19 – Mô hình thiết kế kiến trúc của hệ thống 47 Hình 20 – Mẫu biển báo cấm trong giao thông đường bộ Việt Nam. 48 Hình 21 – Mẫu biển báo nguy hiểm trong giao thông đường bộ Việt Nam 49 Hình 22 – Mẫu biển báo hiệu lệnh trong giao thông đường bộ Việt Nam 49 Hình 23 – Mẫu các biển báo cá biệt 49 Hình 24 – Chức năng Image Recognition của Neuroph Studio 50 Hình 25– Tập mẫu 125 biển báo kích thước 3030 pixel 50 Hình 26 – Thử nghiệm nhận dạng mẫu trên tập mẫu được huấn luyện 51

Trang 1

TRƯỜNG ĐẠI HỌC CẦN THƠ

KHOA CÔNG NGHỆ THÔNG TIN & TT

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

TÌM HIỂU OPENCV VÀ XÂY DỰNG PHẦN MỀM NHẬN DẠNG BIỂN BÁO GIAO THÔNG TRÊN ANDROID

Sinh viên thực hiện: Cán bộ hướng dẫn:

Có thể tìm hiểu luận văn tại:

• Thư viện Khoa Công nghệ Thông tin, Trường Đại học Cần Thơ

Trang 2

LỜI CẢM ƠN

Gần 4 năm học tập tại trường ĐHCT, được sự truyền đạt tận tình của thầy côcùng với sự giúp đỡ nhiệt tình của các bạn, hôm nay em đã hoàn thành được đề tàiluận văn tốt nghiệp

Em xin chân thành cảm ơn quý thầy cô trường ĐHCT nói chung cũng như thầy

cô khoa CNTT nói riêng đã tận tình giảng dạy và truyền đạt những kiến thức quý báo

cho em trong suốt gần 4 năm qua Đặc biệt là Cô Phan Phương Lan đã tận tình

hướng dẫn em trong quá trình học và làm đề tài luận văn này

Do kiến thức còn hạn hẹp, thời gian tìm hiểu chưa sâu, chắc chắn bài báo cáoluận văn này không tránh khỏi những thiếu sót, hạn chế rất mong nhận được sự đónggóp của quý thầy cô để đề tài này ngày càng hoàn thiện hơn

Em xin gởi lời chúc sức khoẻ và lòng biết ơn sâu sắc đến quý thầy cô trường ĐạiHọc Cần Thơ đã hướng dẫn, giúp đỡ em trong những năm qua Xin dành những tìnhcảm chân thành nhất cho gia đình và cho người thân

Cuối cùng, xin gửi lời cảm ơn đến tất cả bạn bè đã gắn bó cùng tôi

Cần Thơ, tháng 01-2013

Trần Hoàng Quốc GVHD: ThS Phan Phương Lan SVTH: Trần Hoàng Quốc – MSSV: 1091526

Trang 2

Đề tài: Tìm hiểu OpenCV và xây dựng phần mềm nhận dạng biển báo giao thông trên Android

Trang 3

NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN



Cần Thơ, ngày 10, tháng 05, năm 2013

Trang 4

NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN



Cần Thơ, ngày 10, tháng 05, năm 2013

Trang 5

MỤC LỤC

LỜI CẢM ƠN - 1

NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN - 2

NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN - 3

MỤC LỤC - 4

MỤC LỤC HÌNH ẢNH - 6

KÝ HIỆU VÀ VIẾT TẮT - 8

TÓM TẮT - 9

ABSTRACT - 10

TỪ KHÓA - 11

CHƯƠNG 1: TỔNG QUAN - 12

I ĐẶT VẤN ĐỀ - 12

II LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ - 12

III PHẠM VI ĐỀ TÀI - 12

IV PHƯƠNG PHÁP NGHIÊN CỨU – HƯỚNG GIẢI QUYẾT - 13

V KẾ HOẠCH THỰC HIỆN - 14

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT - 16

I THƯ VIỆN XỬ LÝ ẢNH OPENCV - 16

1 Gi ớ i thi ệ u Computer Vision - 16

2 Lịch sử phát triển - 17

3 Cấu trúc của OpenCV - 18

4 OpenCV trên Android - 18

II NỀN TẢNG ANDROID - 18

1 Lịch sử phát triển của Android - 19

2 Các phiên bản Android và API của nó - 19

3 Hệ thống hỗ trợ của Android - 20

4 Các ứng dụng có sẵn trên Android - 20

5 Kiến trúc của hệ thống Android - 24

6 Các thành phần trong một dự án ứng dụng Android - 26

III PHƯƠNG PHÁP PHÁT HIỆN BIỂN BÁO - 30

1 Phát hiện biên ảnh bằng Canny - 30

2 Kết hợp đặc trưng màu với phương pháp Canny - 31

3 Dùng đặc trưng hình học để loại bỏ biên giả - 32

4 Trích xuất vùng đặc trưng - 32

Trang 6

IV CÔNG CỤ NEUROPH STUDIO 2.6 - 34

1 Lịch sử phát triển - 34

2 Chức năng - 34

3 Tầm nhìn - 35

CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU - 36

I ĐẶC TẢ - 36

1 Giới thiệu - 36

2 Mô tả tổng quan - 36

3 Các yêu cầu giao tiếp - 39

4 Các tính năng của hệ thống - 39

5 Các yêu cầu phi chức năng - 46

II THIẾT KẾ - 46

1 Giới thiệu - 46

2 Mô tả thiết kế hệ thống - 47

3 Thiết kế dữ liệu - 51

4 Thiết kế theo chức năng - 53

KẾT LUẬN VÀ ĐỀ NGHỊ - 60

I KẾT LUẬN - 60

1 Kết quả đạt được - 60

2 Hạn chế - 60

II HƯỚNG PHÁT TRIỂN - 60

TÀI LIỆU THAM KHẢO - 61

Trang 7

MỤC LỤC HÌNH ẢNH

Hình 1 – Logo của tổ chức OpenCV - 16

Hình 2 Các hàm xử lý ảnh của OpenCV - 17

Hình 3 – Lịch sử phiên bản của OpenCV - 18

Hình 4 – Cấu trúc thư viện OpenCV - 18

Hình 5 – Robot Android – Biểu tượng của Hệ điều hành Android - 19 Hình 6 – Kiến trúc của Android - 24

Hình 7 – Máy ảo Dalvik - 26

Hình 8 – Kiến trúc file AndroidManifest.xml - 27

Hình 9 – Trạng thái của ngăn xếp khi chưacs các Activity - 29

Hình 10 – Vòng đời của một Activity - 30

Hình 11 – Không gian màu HSV - 32

Hình 12 - Quy trình của phương pháp phát hiện biển báo giao thông - 33

Hình 13 – Lưu đồ thuật toán phát hiện biển báo - 33

Hình 14 – Các khái niệm cơ bản trong Neuroph - 34

Hình 15 – Mô hình cấu trúc của Neuroph - 35

Hình 16 – Một số biển báo cấm đường bộ Việt Nam (http://www.hcmct.edu.vn) - 37

Hình 17 – Một số biển báo nguy hiểm đường bộ Việt Nam (http://www.hcmct.edu.vn) - 38

Hình 18 – Một số biển báo hiệu lệnh đường bộ Việt Nam (http://www.hcmct.edu.vn) - 38

Hình 19 – Mô hình thiết kế kiến trúc của hệ thống - 47

Hình 20 – Mẫu biển báo cấm trong giao thông đường bộ Việt Nam - 48

Hình 21 – Mẫu biển báo nguy hiểm trong giao thông đường bộ Việt Nam - 49

Hình 22 – Mẫu biển báo hiệu lệnh trong giao thông đường bộ Việt Nam - 49

Hình 23 – Mẫu các biển báo cá biệt - 49

Hình 24 – Chức năng Image Recognition của Neuroph Studio - 50

Hình 25– Tập mẫu 125 biển báo kích thước 30*30 pixel - 50

Trang 8

Hình 26 – Thử nghiệm nhận dạng mẫu trên tập mẫu được huấn luyện - 51

Trang 9

KÝ HIỆU VÀ VIẾT TẮT

Thư viện xử lý hình ảnh nguồn mở

hình toán học hay mô hình tính toánđược xây dựng dựa trên các mạng noronsinh học dùng để mô hình hóa các mốiquan hệ phức tạp giữa dữ liệu vào và kếtquả hoặc để tìm kiếm các dạng/mẫutrong dữ liệu

các phương pháp khác nhau của mạngnoron dùng để phục vụ cho việc nhậndạng các dạng/mẫu trong dữ liệu

Trang 10

TÓM TẮT

-Hệ thống biển báo giao thông Việt Nam là rất nhiều và khá phức tạp Vì thế đểghi nhớ và hiểu hết các ý nghĩa của nó rất khó khăn Mục đích của đề tài là xây dựngmột ứng dụng trên điện thoại thông minh cho phép người dùng tìm kiếm các thông tinbiển báo một cách trực quan Khi người dùng quay video hoặc chụp ảnh, chương trình

sẽ tự động phát hiện các khu vực có biển báo và sau đó hiển thị hình ảnh, tên và thôngtin của biển báo được nhận dạng Ứng dụng này được phát triển trên nền tảng Androidvới mã nguồn mở thư viện xử lý ảnh OpenCV Nó có thể nhận dạng biển báo giaothông bằng cách xử lý hình ảnh qua giải thuật Canny có kết hợp các đặc trưng màu vàhình học để tăng độ chính xác và giảm nhiễu cho ảnh và sử dụng tập huấn luyện mẫumạng noron với 125 biển báo khác nhau

Trang 11

The Vietnamese traffic signs system is so much and complex It's very difficult toremember and understand the meaning of each signs The aim of the thesis is to build

-an application on smart phones that allow users to search information signs visually.When users record videos or take pictures, the program will automatically detect theareas of signs, and then display signs, name and information of signs The applicationwas developed on the Android platform with the open source OpenCV library It canrecognize traffic sign patterns using Image processing via Canny method bycombining the color characteristics and geometry to increase accuracy and reducenoise for image, and uses the neural network with test data set are 125 types of signs

Trang 12

TỪ KHÓA

1 OpenCV Open Source Computer Vision Library –

Thư viện xử lý hình ảnh nguồn mở

2 Biển báo Là các biển báo giao thông đường bộ

Việt Nam

Trang 13

CHƯƠNG 1: TỔNG QUAN

I ĐẶT VẤN ĐỀ

Hiện nay, số lượng biển báo giao thông đường bộ của Việt Nam khá nhiều vớicác phân loại khác nhau, điều này gây khó khăn cho người tham gia giao thông có thểghi nhớ tất cả các ý nghĩa của các biển báo để họ thực hiện đúng khi tham gia lưuthông trên đường Đây cũng là lý do dẫn đến nhiều người phạm luật vì không hiểu đầy

đủ nội dung các chỉ dẫn của các biển báo

Tận dụng lợi thế dễ sử dụng và ngày càng phổ biến của các thiết bị di động đặcbiệt là các thiết bị thông minh có sử dụng hệ điều hành như smartphone, máy tínhbảng,… Nhằm khai thác tính cần thiết và thực tiễn của vấn đề trên, tôi đề xuất xâydựng một ứng dụng giúp người dùng có thể nhận dạng và biết được nội dung, chỉ dẫncủa các biển báo giao thông dễ dàng và nhanh chóng thông qua thiết bị di động sửdụng hệ điều hành Android

II LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ

Hiện tại, có rất nhiều phần mềm làm về nhận dạng, nhưng đa phần trong số đó làcác phần mềm sử dụng cho các tổ chức, doanh nghiệp với quy mô lớn như:

- Phần mềm nhận dạng biển số xe, ứng dụng ở các bãi giữ xe của siêu thị,trung tâm thương mại,

- Phần mềm nhận dạng khuôn mặt, ứng dụng chủ yếu ở thiết bị thông minhnhư: máy tính, máy ảnh, điện thoại thông minh,…và các cơ sở tiên tiến vềcông nghệ

- Phần mềm nhận dạng và phân tích các hành động để ứng dụng vào các hệthống an ninh ở các sân bay,…

- Ngoài ra, nhiều phần mềm khác cũng ứng dụng công nghệ nhận dạng

Về phần mềm dùng để nhận dạng biển báo giao thông, hiện nay có một số phầnmềm được ứng dụng và sử dụng trên các xe thông minh tự lái hoặc các xe taxi để đưa

ra các cảnh báo cho người điều khiển Những phần mềm này chỉ được nghiên cứu và

áp dụng ở các nước giao thông tiên tiến mà không chia sẻ mã nguồn và tài liệu pháttriển ra bên ngoài Cho đến thời điểm đề xuất đề tài (01/2013), tôi vẫn chưa tìm thấyphần mềm nào về nhận dạng biển báo giao thông được sử dụng cho các mục đích cánhân

Trang 14

IV PHƯƠNG PHÁP NGHIÊN CỨU – HƯỚNG GIẢI QUYẾT

Để giải quyết vấn đề nêu trên, trước hết tôi cần tìm hiểu về nội dung, ý nghĩa,cách phân biệt tất cả các loại biển báo giao thông đường bộ của Việt Nam, cùng vớicác quy định xử phạt đối với từng trường hợp vi phạm ứng với các biển báo nói trên.Bên cạnh đó, tôi cũng nghiên cứu và tìm hiểu về kiến thức lập trình ứng dụngAndroid và thư viện xử lý ảnh OpenCV dành cho Android Tôi cũng tìm hiểu và ápdụng các phương pháp lọc ảnh, xử lý ảnh bằng các giải thuật, phương pháp tối ưu để

có thể hoàn thành được ứng dụng đúng với yêu cầu được đề ra

Chọn công cụ thực hiện:

Danh sách các công cụ được sử dụng để hoàn thành đề tài:

2 Eclipse Công cụ, môi trường phát triển

ứng dụng

Thiết kế Lập trìnhKiểm thử

3 OpenCV

Thư viện hỗ trợ ứng dụng trong việc xử lý ảnh và nhận dạng biển báo

Thiết kế Lập trìnhKiểm thử

4 Smartphone Android Chạy thử phần mềm sau khi

đóng gói

Lập trìnhKiểm thử

5 Neuroph Studio Tạo tập tin mẫu mạng noron Lập trình

Trang 15

8 Website gliffy.com Vẽ lưu đồ thuật toán Thiết kế

• Hoàn thành chương 1: Tổng quan

• Viết tài liệu Thiết kế phần mềm

• Tìm hiểu kiến thức về kỹ thuật lậptrình Android

• Tìm hiểu về lập trình OpenCV trên Android Project

• Tìm hiểu các kỹ thuật về xử lý vànhận dạng ảnh

05 - 07 28/01/2013 – 10/02/2013 • Ứng dụng các kỹ thuật về lập trình,

xử lý ảnh và nhận dạng vào dự án

• Cập nhật lại các tài liệu: Đặc tả,thiết kế

07 – 09 11/02/2013 – 24/02/2013 • Thu thập thông tin về các biển báo

của Giao thông đường bộ Việt Nam

• Tiếp tục hoàn thiện chương trình

• Cập nhật lại các tài liệu: Đặc tả,thiết kế

09 - 11 25/02/2013 – 10/03/2013 • Chỉnh sửa và tối ưu code và hoàn

Trang 16

• Cập nhật các tài liệu

13 - 15 25/03/2013 – 07/04/2013 • Hoàn thành chương trình và đưa ra

sản phẩm

• Cài đặt và kiểm thử chương trình

15 - 17 08/04/2013 – 21/04/2013 • Hoàn thành tài liệu báo cáo

• Soạn slide báo cáo

17 - 18 22/04/2013 – 28/04/2013 • Tiến hành bảo vệ Luận Văn trước

Hội đồng

Trang 16

Đề tài: Tìm hiểu OpenCV và xây dựng phần mềm nhận dạng biển báo giao thông trên Android

Trang 17

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Chương này trình bày cơ sở lý thuyết về:

- Thư viện xử lý ảnh OpenCV: thư viện chính làm nhiệm vụ xử lý ảnh trong ứng dụng

- Nền tảng Android: Nền tảng được sử dụng để lập trình nên ứng dụng

- Phương pháp phát hiện biển báo: Các phương pháp chính để pháp hiện biển báo giao thông và trích xuất biển báo phục vụ cho quá trình nhận dạng

- Công cụ Neuroph Studio 2.6: Công cụ chính yếu để tạo ra tập tin huấnluyện mẫu mạng noron các biển báo, phục vụ cho việc nhận dạng biểnbáo sau khi nhận dạng được

I THƯ VIỆN XỬ LÝ ẢNH OPENCV

1 Giới thiệu Computer Vision

OpenCV (Open Source Computer Vision Library) là một thư viện tập hợp cáchàm lập trình chủ yếu nhằm vào công nghệ thời gian thực của thị giác máy tính, đượcphát triển bởi Intel và hiện tại được hỗ trợ bởi Willow Garage và Itseez OpenCV làthư viện mã nguồn mở miễn phí theo giấy phép BSD, nhằm giúp cho người dùng cóthể dễ dàng thay đổi và sử dụng

Hình 1 – Logo của tổ chức OpenCV

Hiện tại, OpenCV có hơn 2500 thuật toán tối ưu hóa, trong đó bao gồm một tậphợp tất cả các thuật toán về thị giác máy tính và máy học Các thuật toán này có thểđược sử dụng để phát hiện và nhận diện khuôn mặt, nhận diện đối tượng, phân loại cáchành động của con người trong video, theo dõi đối tượng chuyển động, trích xuất các

mô hình 3D của các đối tượng, tìm hình ảnh tương tự từ một cơ sở dữ liệu hình ảnh,loại bỏ mắt đỏ từ hình ảnh chụp sử dụng đèn flash, theo dõi chuyển động của mắt,…OpenCV hiện có hơn 47 nghìn người dùng trên toàn thế giới Thư viện này được sửdụng rộng rãi các trong nhóm nghiên cứu của các công ty lớn như: Google, Yahoo,Microsoft, Intel, IBM, Sony, Honda, Toyota… và các cơ quan chính phủ

Trang 18

OpenCV ban đầu được chỉ hỗ trợ viết bằng ngôn ngữ C, nhưng hiện tại đã hỗ trợthư viện và phát triển trên các nền tảng ngôn ngữ khác như C++, Java, Android, iOS,

…Đồng thời, nó cũng hỗ trợ trên đa môi trường hệ điều hành: Windows, Linux,Android, Mac OS, Cube,…

Phiên bản alpha đầu tiên của OpenCV được phát hành ra công chúng tại hội nghịIEEE về Computer Vision và Pattern Recognition vào năm 2000 Phiên bản 1.0 đầutiên được phát hành vào năm 2006 Vào giữa năm 2008, OpenCV được sự ủng hộ củacông ty từ Willow Garage, và bây giờ lại được phát triển tích cực

Tháng 10/2009, OpenCV 2 được phát hành với nhiều cải tiến vượt bật, bao gồmnhững thay đổi lớn về thay đổi ngôn ngữ lập trình, về giao diện, sử dụng dễ dàng hơn,một số chức năng mới, và khai thác tốt hơn về hiệu suất (đặc biệt là trên các hệ thống

đa lõi)

Trong tháng 8 năm 2012, OpenCV được hỗ trợ và tiếp quản bởi một tổ chức philợi nhuận và website OpenCV.org được xây dựng ngay sau đó

Trang 19

Hình 3 – Lịch sử phiên bản của OpenCV

3 Cấu trúc của OpenCV

Cấu trúc của OpenCV gồm 4 thành phần chính:

CxCore: Chứa các cấu trúc cơ bản như điểm, đường, dãy, mặt, ma trận… và các thao tác cấp thấp liên quan

MLL (Machine Learning Library) là thư viện machine learning, thư viện này baogồm rất nhiều lớp thống kê và gộp các công cụ xử lý

CV (Computer Vision): 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 contour, biến đổi Fourier…

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…

Hình 4 – Cấu trúc thư viện OpenCV

4 OpenCV trên Android

Thư viện OpenCV dành cho hệ điều hành Android được OpenCV cung cấp trêntrang chủ của mình (http://opencv.org/android) cùng với các tài liệu hướng dẫn sửdụng và cộng đồng trao đổi học tập với nhau

Trang 20

Hình 5 – Robot Android – Biểu tượng của Hệ điều hành Android

1 Lịch sử phát triển của Android

Vào những năm đầu của thế kỷ 21, Andy Rubin đã tạo ra Android như là một hệđiều hành mở dành cho các thiết bị di động Năm 2005, Google đã mua lại sản phẩmnày từ tay Andy Rubin và cử ông làm giám đốc phát triển nền tảng di động choGoogle, một mặt giúp Google khẳng định mạnh mẽ vị trí của mình trong lĩnh vực mớiđược xem là Internet 2.0, nhưng mặt khác cũng tạo ra cuộc cạnh tranh khốc liệt giữaGoogle và đối thủ nặng ký Apple iPhone, đang là nhà cung cấp được ưa chuộng nhấtthời điểm này

Tháng 11/2007, Android phiên bản 1.0 ra đời cùng với sự thành lập tổ chứ OHA(Open Handset Alliance) gồm nhiều công ty phần cứng, phần mềm Mục tiêu chínhcủa tổ chức này là cùng nhau nghiên cứu phát triển tiêu chuẩn mở cho các thiết bị diđộng, để giảm giá thành sản xuất và nâng cao chất lượng dịch vụ Android là hệ điềuhành mở dành cho thiết bị di động đầu tiên, ra đời theo mục tiêu này Nó tựa trên nềntảng mở Linux và ngôn ngữ lập trình Java của Oracle Nền tảng Android phải hoạtđộng như một máy tính chạy trên chip, nghĩa là đủ nhỏ để vừa với thiết bị và đủ mạnh

để chạy các ứng dụng Ngoài ra, Android còn cung cấp các công cụ, tài liệu, thư viện

hỗ trợ những nhà phát triển phần mềm và phần cứng phát triển ứng dụng cho điệnthoại một cách dễ dàng Trải qua nhiều thập niên, Android đã phát triển và nâng cấplên các phiên bản khác nhau và phiên bản mới nhất hiện nay (năm 2013) là phiên bảnAndroid 4.2 Thiết bị cầm tay cài đặt Android đầu tiên trên thị trường là thiết bị T-Mobile G1 do HTC sản xuất và bán ra ở thị trường Mỹ Ngày nay, rất nhiều nhà sảnxuất điện thoại như HTC, Samsung, LG Electronics, T-Mobile, Lenovo,… sử dụngAndroid làm hệ điều hành cho các dòng điện thoại mới của họ

2 Các phiên bản Android và API của nó

Lịch sử các phiên bản của Android và API tiêu biểu của nó được liệt kê như sau:

- Android 1.0 (API 1): phát hành ngày 23/09/2008

- Android 1.1 (API 2): phát hành ngày 09/02/2009

- Android 1.5 Cupcake (API 3): phát hành ngày 30/04/2009

- Android 1.6 Donut (API 4): phát hành ngày 15/09/2009

- Android 2.0 Eclair (API 5): phát hành ngày 26/10/2009

- Android 2.0.1 Eclair (API 6): phát hành ngày 03/12/2009

Trang 21

- Android 2.1 Eclair (API 7): phát hành ngày 12/01/2010.

- Android 2.2 Froyo (API 8): phát hành ngày 20/05/2010

- Android 2.3 Gingerbread (API 9): phát hành ngày 06/12/2010

- Android 2.3.3 Gingerbread (API 10): phát hành 09/02/2011

- Android 3.0 Honeycomb (API 11): phát hành ngày 22/02/2011

- Android 3.1 Honeycomb (API 12): phát hành ngày 10/05/2011

- Android 3.2 Honeycomb (API 13): phát hành ngày 15/07/2011

- Android 4.0 Ice Cream Sanwich (API 14): phát hành ngày 19/10/2011

- Android 4.0.3 Ice Cream Sanwich (API 15): phát hành ngày 16/12/2011

- Android 4.1 Jelly Bean (API 16): phát hành ngày 09/07/2012

- Android 4.2 Jelly Bean (API 17): phát hành ngày 11/02/2013

4 Các ứng dụng có sẵn trên Android

Một điện thoại Android thông thường sẽ đi kèm với một vài ứng dụng đã đượccài đặt sẵn, bao gồm:

- Một trình email tương thích với Gmail

- Chương trình quản lý tin nhắn SMS

- Chương trình quản lý thông tin cá nhân, bao gồm cả lịch làm việc, danh bạ,

và được đồng bộ hóa với dịch vụ của Google

- Phiên bản thu gọn của Google Map cho điện thoại, bao gồm StreetView, tìmkiếm địa điểm, chỉ đường, tình trạng giao thông,

- Trình duyệt web dựa trên nhân WebKit

- Chương trình tán gẫu (chat)

- Trình đa phương tiện (chơi nhạc, xem ảnh,…)

- Android Marketplace – cho phép người dùng tải về và cài đặt các ứng dụng mới

Tất cả các ứng dụng có sẵn đều được viết bằng ngôn ngữ Java và sử dụngAndroid SDK

Trang 22

Các dữ liệu về thông tin người dùng được các ứng dụng có sẵn sử dụng - nhưthông tin về danh bạ - vẫn hoàn toàn có thể được sử dụng bởi các ứng dụng của bênthứ ba.

Tương tự vậy, ứng dụng của bạn hoàn toàn có thể xử lý các sự kiện như có cuộcgọi đến, nhận một tin nhắn mới,… thay cho các ứng dụng có sẵn

4.1 Truy cập phần cứng (Access Hardware)

Android bao gồm thư viện các API giúp đơn giản hóa tối đa việc sử dụng phầncứng của thiết bị Điều đó đảm bảo rằng bạn không cần phải bận tâm nhiều đến việcứng dụng của mình có thể chạy như mong đợi trên nhiều thiết bị khác nhau hay không,miễn là thiết bị đó có hỗ trợ Android

Android SDK bao gồm các API cho phần cứng như: GPS, camera, kết nối mạng,Wi-Fi, Bluetooth, con quay gia tốc, màn hình cảm ứng, quản lý năng lượng,…

4.2 Dịch vụ chạy nền (Background Services)

Android hỗ trợ các ứng dụng và dịch vụ được thiết kể để chạy ẩn

Do kích thước nhỏ của màn hình điện thoại nên tại một thời điểm chỉ có thể thấyđược một ứng dụng Dịch vụ chạy nền giúp tạo ra các thành phần ứng dụng “vô hình”

để thực hiện tự động một tác vụ nào đó mà không cần phải có sự tương tác của ngườidùng Ví dụ như một dịch vụ chạy nền có chức năng chặn cuộc gọi đến đối với các sốđiện thoại có trong “black list” chẳng hạn

4.4 Hệ thống thông báo (Notifications)

Thông báo là cách thức tiêu chuẩn mà ở đó thiết bị báo cho người dùng đã cómột sự kiện nào đó xảy ra Chẳng hạn như có cuộc gọi tới, máy sắp hết pin,… Sử dụngcác API bạn có thể cho ứng dụng của mình thông báo đến người dùng bằng âm thanh,rung, hoặc thậm chí là cả đèn LED của thiết bị

4.5 Tối ưu hóa bộ nhớ và quản lý tiến trình

Việc quản lý bộ nhớ và tiến trình trong Android có một chút khác biệt Giốngnhư công nghệ Java và NET, Android sử dụng một bộ run-time của riêng mình vớicông nghệ ảo hóa để quản lý bộ nhớ của các ứng dụng đang chạy Không giống nhưnhững nền tảng khác, Android run-time cũng đồng thời quản lý luôn cả thời gian sốngcủa ứng dụng Android đảm bảo các ứng dụng đều được đáp ứng bằng cách dừng vàhủy các tiến trình không cần thiết để giải phóng tài nguyên cho các tiến trình có độ ưutiên cao hơn

Trang 23

Trong bối cảnh đó, độ ưu tiên được xác định tùy thuộc vào ứng dụng mà ngườidùng đang tương tác Android đảm bảo rằng các tiến trình có thể bị hủy một cáchnhanh chóng, nhưng đồng thời cũng có thể khởi động lại nhanh không kém nếu cần.Điều này thực sự quan trọng trong một môi trường mà ở đó bản thân ứng dụng khôngthể tự kiểm soát được thời gian sống cho chính mình.

4.6 Android software development kit (SDK)

Bộ SDK của Android bao gồm mọi thứ cần thiết giúp bạn có thể lập trình,debug, và test ứng dụng Android

- Android API: Cốt lõi của bộ SDK là thư viện các API Và Google cũngchỉ sử dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android(native application)

- Development Tool: SDK bao gồm rất nhiều công cụ giúp biên dịch, sửalỗi, và hỗ trợ trong việc lập trình ứng dụng

- Android Emulator: Trình giả lập một thiết bị chạy Android thực sự vớinhiều skin thay thế, cực kì tiện lợi cho việc test ứng dụng Android ngaytrên máy tính mà không cần phải thông qua một thiết bị chạy Androidthực

- Tài liệu: SDK bao gồm bộ tài liệu rất chi tiết, giải thích cặn kẽ, chính xácnhững gì bao gồm trong mỗi package, class cùng với cách sử dụng chúng.Ngoài tài liệu về “code”, còn có những tài liệu dùng để “getting started”

và giải thích các nguyên tắc về cơ chế hoạt động của ứng dụng trongAndroid

- Code mẫu: SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho cáctính năng nổi bật trên Android, cũng như các ứng dụng demo cách sử dụngnhững tính năng của bộ API

Đối với Eclipse IDE, Google cung cấp một plug-in giúp kết hợp chặt chẽ giữaEclipse với Android Emulator cũng như công cụ debug Điều này giúp cho việc pháttriển ứng dụng cho Android bằng Eclipse thực sự trở nên đơn giản

4.7 Kiến trúc ứng dụng (Application Architecture)

Ý tưởng của Android đó là khuyến khích việc tái sử dụng lại các thành phần đã

có, cho phép ứng dụng của bạn có thể chia sẻ Activity, Service, Dữ liệu với các ứngdụng khác trong giới hạn truy cập do bạn đặt ra

Một ví dụ đơn giản: bạn cần làm một ứng dụng chụp ảnh hàn quốc, về cơ bảnứng dụng này sẽ làm hai nhiệm vụ: một là chụp ảnh, hai là ghép, chỉnh sửa ảnh Thay

vì phải tự xây dựng chức năng chụp ảnh, bạn sẽ sử dụng lại chức năng chụp ảnh có sẵntrong ứng dụng chụp ảnh của Android Việc này giúp bạn dễ dàng và mau chóng xâydựng được những ứng dụng nhiều tính năng và sử dụng hiệu quả tài nguyên máy.Những dịch vụ dưới đây là nền tảng kiến trúc của mọi ứng dụng Android, đây làkhuôn khổ cho bạn xây dựng ứng dụng của riêng mình:

- Activity Manager: Kiểm soát vòng đời của Activity

Trang 24

- Views: Xây dựng giao diện người dùng cho các Activity.

- Notification Manager: Cung cấp một cơ chế thống nhất và an toàn để ứngdụng có thể đưa ra các thông báo cho người dùng

- Content Providers: Giúp cho việc trao đổi, chia sẽ dữ liệu giữa các ứngdụng với nhau

- Resource Manager: Hỗ trợ quản lý các loại tài nguyên không là code code resources) như các chuỗi, hình ảnh, hoặc âm thanh,…

(non-4.8 Các thư viện của Android

Android cung cấp các gói API để phát triển ứng dụng Danh sách các gói coreAPI dưới đây giúp cho bạn có cái nhìn tổng quát về những gì được hỗ trợ sẵn, tất cảcác thiết bị chạy Android đều phải hỗ trợ được tối thiểu các API này

- android.util: Gói api lõi, chứa các class cấp thấp như containers, stringformatters, XML parsing

- android.os: Truy cập tới các chức năng của hệ điều hành chẳng hạn như:gửi nhận tin nhắn, giao tiếp nội bộ giữa các ứng dụng, thời gian,…

- android.graphics: Cung cấp các lớp liên quan tới xử lý đồ họa ở mức thấp

Hỗ trợ các hàm cơ bản như vẽ điểm, vẽ miền, tô màu,… trên một khungcanvas

- android.text: Cung cấp các hàm phân tích và xử lý chuỗi

- android.database:Cung cấp các lớp cấp thấp cần thiết để làm việc vớidatabases

- android.content: Dùng để quản lý các tài nguyên, các nội dung, và các gói

- android.view: Views là lớp cha của mọi lớp giao diện người dùng

- android.widget: Được kế thừa từ lớp View, bao gồm các lớp để cơ bản đểxây dựng giao diện widget như: lists, buttons, layouts (widget là mộtdạng ứng dụng mini - hiển thị ở màn hình chính - cung cấp các chức năng

“nho nhỏ” lấy từ ứng dụng lớn)

- android.maps: Gói API cấp cao, dùng để truy cập đến các chức năng củaGoogleMap

- android.app: Gói API cấp cao, bao gồm lớp Activity và Service - hai lớp

cơ sở cho mọi ứng dụng Android

- android.telephony: Cung cấp cho bạn khả năng tương tác trực tiếp với cácchức năng cơ bản của một chiếc điện thoại như nghe, gọi, tin nhắn

- android.webkit: Cung cấp một WebView control trên nền webkit để có thểnhúng vào ứng dụng, cùng với các api điều khiển cơ bản như stop, refresh,cookie manager,…

Trang 25

5 Kiến trúc của hệ thống Android

Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành

Android Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây

Hình 6 – Kiến trúc của Android

Tầng Applications

Đây là tầng cao nhất và ứng dụng Android của bạn sẽ nằm trong tầng này Tuynhiên, để tiện lợi cho việc truy xuất một thông tin ở các tầng dưới, Google đã viết sẵnmột thư viện tiện ích trong tầng này giúp bạn truy xuất thông tin ở những tầng bêndưới linh hoạt và hiệu quả nhất

Tầng Application Framework

Tầng này chứa các thư viện Java hỗ trợ người dùng giao tiếp với tầng Androidframework Một thành phần của tầng này di Google cung cấp sẵn cho bạn, một phần là

do bạn tự tạo ra Trong tầng này thì thành phần quan trọng nhất là Activity Manager vì

nó quản lý chu kỳ sống của Activity

- Activity Manager: quản lý chu kỳ sống của các Activity trong ứng dụng Android

- Telephony Manager: cung cấp thư viện để truy xuất đến các dịch vụ thoại cũng như là thông tin thuê bao

- View System: xử lý giao diện trong ứng dụng Android của bạn

Trang 26

- Location Manager: cung cấp thư viện hỗ trợ người dùng định vị vị trí của thiết bị.

Tầng Libraries

Android native libraries là tập thư viện C/C++ và bạn sẽ gọi thư viện này thôngqua giao diện Java (trong tầng trên Application Framework) Phần này gồm các thưviện:

- Surface Manager: tạo các cửa sổ giao diện

- OpenGL: hỗ trợ xây dựng ứng dụng đồ họa 2D và 3D

- Media Framework: hỗ trợ xây dựng các ứng dụng về âm thanh và hình ảnh

- SSl: cung cấp chức năng bảo mật thiết bị

- SQLite: cơ sở dữ liệu quan hệ mã nguồn mở được nhúng trong thiết bị

- WebKit: hỗ trợ hiển thị nội dung website

Tầng Linux Kernel

Đây là nền tảng cơ bản nhất của hệ điều hành Android, đảm nhiệm vai trò giaotiếp phần cứng, điều khiển các chức năng cơ bản nhất của thiết bị và cung cấp các tínhnăng thiết yếu như quản lý bộ nhớ, quản lý luồng, kết nối mạng… bằng hàng loạt cácdriver do nhà sản xuất viết cho thiết bị của họ

Máy ảo Dalvik

Máy ảo Dalvik là một phần mềm dùng để chạy các ứng dụng trên thiết bịAndroid, bao gồm một tập các thư viện lõi (core libraries) cung cấp hầu hết các chứcnăng trong thư viện lõi của ngôn ngữ lập trình Java

Trang 27

Hình 7 – Máy ảo Dalvik

Mỗi ứng dụng Android sẽ chạy trên một tiến trình riêng dành cho nó, với mộtmáy ảo Dalvik riêng cũng được thiết lập dành riêng cho mỗi ứng dụng

Dalvik được viết để một thiết bị có thể chạy nhiều máy ảo cùng lúc hiệu quả.Máy ảo Dalvik thực thi các tập tin dex, là loại tập tin được tối ưu để tiết kiệm bộ nhớ,

và để quản lý tiến trình, quản lý bộ nhớ hiệu quả, máy ảo này cũng sử dụng các chứcnăng do Linux kernel cung cấp

6 Các thành phần trong một dự án ứng dụng Android

Android Project

Android project là một hệ thống thư mục và file chứa toàn bộ source code, tàinguyên,… mà mục đích cuối cùng là để đóng gói thành một file apk duy nhất ( file cóđuôi apk là file ứng dụng của Android)

Trong một thư mục project, có một số thành phần (file, thư mục con) được tạo ramặc định, còn lại phần lớn thì sẽ được tạo ra sau nếu cần trong quá trình phát triển ứngdụng Dưới đây liệt kê cấu trúc đầy đủ của một thư mục project:

- src/: Chứa toàn bộ source code (file java hoặc aidl)

- bin/: Thư mục chức file Output sau khi build Đây là nơi bạn có thể tìm file.apk

- gen/: Chứa các file java tạo ra bởi ADT plug-in, như là file R.java hoặc các giao diện tạo ra từ file AIDL

- res/: Chứa các tài nguyên (resources) cho ứng dụng, chẳng hạn như file hìnhảnh, file layout, các chuỗi (string),… Dưới đây là các thư mục con của nó:

- anim/: Chứa các file xml dùng cho việc thiết lập các hiệu ứng động

(animation)

- color/: Chứa các file xml dùng định nghĩa màu sắc

- drawable/: Chứa file hình ảnh (png, jpeg, gif), file xml định nghĩa cách vẽ các loại hình dạng khác nhau (shape)

- layout/: Chứa file xml dùng để dựng giao diện người dùng

- menu/: Chứa file xml quy định application menu

- raw/: Chứa các file media, chẳng hạn như mp3 hay ogg

- values/: Chứa file xml định nghĩa các giá trị Khác với các resource trongcác thư mục khác, resource ở thư mục này khi được định danh trong lớp Rthì sẽ không sử dụng file name để định danh, mà sẽ được định danh theoquy định bên trong file xml đó (xem thêm về lớp R ở phần sau)

- xml/: Dùng chứa các file xml linh tinh khác, chẳng hạn như file xml quy định app widget, search metadata,…

- libs/: Chứa các thư viên riêng

Trang 28

- AndroidManifest.xml/: File kiểm soát cách các thành phần trong ứng dụng(activity, service, intent receiver,…) tương tác với nhau, cách ứng dụngtương tác với các ứng dụng khác, cũng như đăng ký các quyền hạn về sửdụng tài nguyên trong máy.

- build.properties: Tùy chỉnh các thiết lập cho hệ thống build, nếu bạn sửdụng Eclipse thì file này không cần thiết

- build.xml: Chỉ sử dụng khi bạn dùng dòng lệnh (command line) để kiến tạoproject

- default.properties: File này chứa các thiết lập cho project, chẳng hạn nhưbuild target, min SDK version,… tốt hơn hết là không nên chỉnh sửa file nàybằng tay

AndroidManifest.xml

Mỗi một Android project thì luôn phải có một file AndroidManifest.xml (xembên trên) Manifest dùng để định nghĩa cấu trúc cũng như các metadata của ứng dụng

và các thành phần con Manifest bắt đầu bằng thẻ root <manifest> với thuộc tính

package để quy ước package của project và thuộc tính xmlns:android như là một quyđịnh để chuẩn hóa cấu trúc file manifest Dưới đây là một file Manifest điển hình:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.my_domain.my_app" >

[ manifest nodes ]

</manifest>

Hình 8 – Kiến trúc file AndroidManifest.xml

Manifest bao gồm nhiều thẻ định nghĩa các thành phần của ứng dụng, các thiếtlập về bảo mật, các lớp test,… Dưới đây là danh sách các thẻ có thể xuất hiện trongfile manifest:

Application

Trang 29

Một file manifest chỉ có thể chứa một thẻ application Thẻ này dùng để chỉ địnhcác metadata (bao gồm title, icon, theme,…) và các thành phần cho ứng dụng Nóđồng thời cũng là thẻ cha của các thẻ Activity, Service, Content Provider, và BroadcastReceiver.

- Floating Activity: là dạng Activity nổi, có kích thước không phủ lấp toàn bộ

màn hình

- Activity Group: là một nhóm các Activity nhúng trong một Activity khác.

- Full – screen Activity: là dạng Activity phủ kín toàn màn hình.

Một ứng dụng thường chứa nhiều Activity gắn kết với nhau khá lỏng lẻo Khimột Activity được tạo, nó sẽ được đẩy lên trên cùng của ngăn xếp của bộ nhớ và nhậnđược “focus” Trạng thái “focus” là trạng thái mà Activity có thể nhận được tương táccủa người dùng Ngăn xếp hoạt động theo cơ chế LIFO (Last In First Out) có nghĩa làActivity nào được đưa vào ngăn xếp sau cùng, thì khi lấy ra sẽ được lấy ra đầu tiên

Do đó, khi người dùng bấn nút BACK trên thiết bị thì Activity hiện hành cũng làActivity trên cùng của ngăn xếp bị đẩy ra và Activity kế tiếp sẽ nhận được “focus”

Trang 30

Hình 9 – Trạng thái của ngăn xếp khi chưacs các Activity

Một Activity trong suốt vòng đời của nó sẽ trải qua các trạng thái sau:

- Resumed: Là trạng thái “chạy” của một Activity Khi Activity chuyển

sang trạng thái này, giao diện của nó sẽ hiển thị trên màn hình và dànhđược focus

- Paused: Khi một trạng thái đang chạy mà có một Activity khác được khởi

động thì trạng thái của Activity cũ sẽ chuyển sang dạng Paused KhiActivity ở trạng thái này thì nó sẽ bị che khuất một phần và mất focus

- Stopped: Khi Activity ở trạng thái này, giao diện của nó bị một Activity

khác che khuất hoàn toàn Thực tế thì Activity vẫn còn tồn tại, nhưng bạnkhông nhìn thấy nó Những Activity ở trạng thái này có thể bị hệ thốnghủy khi một ứng dụng khác yêu cầu thêm bộ nhớ để xử lý

Ba trạng thái của Activity được thể hiện rõ hơn bằng biểu đồ như hình sau:

Trang 31

Hình 10 – Vòng đời của một Activity.

Thẻ activity được yêu cầu cho mỗi một Activity trong ứng dụng Sử dụng thuộctính android:name để chỉ định tên của lớp Activity tương ứng

<activity android:name=".MyActivity"></activity>

Service

Cũng như activity, thẻ service được yêu cầu cho mỗi một Service trong ứng dụng

Sử dụng thuộc tính android:name để chỉ định tên của lớp Service tương ứng Sử dụngthuộc tính android:enabled để chỉ định trạng thái mặc định của Service

<service android:enabled="true" android:name=".MyService">

</service>

instrumentation

Được yêu cầu cho mỗi một lớp Test bạn tạo ra trong ứng dụng Lớp Test cung cấpnhững khả năng để bạn có thể kiểm tra các Activity và Service, giám sát chúng và xemcách chúng tương tác với tài nguyên hệ thống

<instrumentation android:label="My Test"

III PHƯƠNG PHÁP PHÁT HIỆN BIỂN BÁO

Dựa trên các đặc trưng của các biển báo giao thông, luận văn sử dụng phươngpháp phát hiện biên bằng giải thuật Canny kết hợp với đặc trưng màu để tìm ra biênảnh của biển báo, sau đó dùng đặc trưng nhận dạng hình học để giữ lại chính xác cácbiên ảnh đúng, loại bỏ các biên giả

1 Phát hiện biên ảnh bằng Canny

1.1 Giới thiệu về thuật toán Canny

Năm 1986, Canny ở phòng thí nghiệm MIT khởi xướng phương pháp này Canny

đã đưa ra tập hợp các mục tiêu của một phương pháp phát hiện biên và đưa ra mộtphương pháp tối ưu để thực hiện các mục tiêu đó Phương pháp này gọi là phươngpháp Canny

Canny đưa ra ba điểm chính mà một phương pháp phát hiện biên phải xác địnhđược đó là:

- Mức lỗi: Phương pháp phải làm sao chỉ có hiệu quả đối với các điểm biên, phải tìm ra tất cả các biên và không có đường biên nào bị bỏ sót

- Định vị: Khoảng cách giữa các điểm biên được tìm thấy trong giải thuật vàbiên trong thực tế phải càng nhỏ càng tốt

Ngày đăng: 27/03/2018, 07:58

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] TS Phạm Việt Bình, TS Đỗ Năng Toàn. Giáo trình môn học Xử lý ảnh. Khoa Công nghệ Thông tin – Đại học Thái Nguyên, 2007 Sách, tạp chí
Tiêu đề: Giáo trình môn học Xử lý ảnh
[2] PGS.TS Nguyễn Quang Hoan. Giáo trình Xử lý ảnh. Học viện Công nghệ Bưu chính Viễn thông, 2006 Sách, tạp chí
Tiêu đề: Giáo trình Xử lý ảnh
[3]Lê Thanh Tâm, Trần Thái Sơn, Seichii Mita. Phát hiện và phân loại biển báo giao thông dựa trên SVM trong thời gian thực. Khoa Công nghệ thông tin – Đại học Khoa Học Tự Nhiên TP.HCM, Học viện Công nghệ Toyota, Nhật Bản, 2009 Sách, tạp chí
Tiêu đề: Phát hiện và phân loại biển báo giao thông dựa trên SVM trong thời gian thực
[4] Th.S Trương Thị Ngọc Phượng. Lập trình Android. Khoa Công nghệ Thông tin – Đại học Sư phạm Kỹ thuật TP.HCM, 2012 Sách, tạp chí
Tiêu đề: Lập trình Android
[5] Luis David Lopez, Olac Fuentes. Color-Based Road Sign Detection and Tracking. Khoa Khoa học Máy tính – Đại họcTexas, Mỹ Sách, tạp chí
Tiêu đề: Color-Based Road Sign Detection and Tracking
[6] Gary Bradski, Adrian Kaehler. Learning OpenCV: Computer Vision with the OpenCV Library . O’Reilly Media, Inc, 2008 Sách, tạp chí
Tiêu đề: Learning OpenCV: Computer Vision with the OpenCV Library
[7]Android Developers. http://developer.android.com/develop/index.html Sách, tạp chí
Tiêu đề: Android Developers
[8] OpenCV Tutorials. http://docs.opencv.org/trunk/doc/tutorials/tutorials.html Sách, tạp chí
Tiêu đề: OpenCV Tutorials
[9] Java Neural Network Framework Neuroph.http://neuroph.sourceforge.net/documentation.html Sách, tạp chí
Tiêu đề: Java Neural Network Framework Neuroph
[10] Bộ Giao thông vận tải. Thông tư số 17/2012/TT-BGTVT: Ban hành “Quy chuẩn kỹ thuật quốc gia về báo hiệu đường bộ” Sách, tạp chí
Tiêu đề: Thông tư số 17/2012/TT-BGTVT: Ban hành “Quy chuẩn kỹ thuật quốc gia về báo hiệu đường bộ
[13] Mẫu đặc tả yêu cầu phần mềm V1. Bộ môn Công Nghệ Phần Mềm - Khoa Công nghệ Thông tin &amp; Truyền thông - Đại học Cần Thơ Sách, tạp chí
Tiêu đề: Mẫu đặc tả yêu cầu phần mềm V1
[14] Th.S Phan Tấn Tài, KS. Trần Nguyễn Minh Thái, KS. Nguyễn Thanh Hải, KS. Nguyễn Thị Thu An. Giáo trình Phân tích thiết kế Hệ thống thông tin. Bộ môn Hệ thống Thông tin - Khoa Công nghệ Thông tin &amp; Truyền thông - Đại học Cần Thơ, 2010 Sách, tạp chí
Tiêu đề: Giáo trình Phân tích thiết kế Hệ thống thông tin
[15] Nguyễn Bá Chung, Đỗ Trường Giang. Khóa luận “Xây dựng ứng dụng nhận dạng biển báo giao thông trên thiết bị di động”. Khoa Công nghệ Phần mềm – Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM, 2012 Sách, tạp chí
Tiêu đề: Khóa luận “Xây dựng ứng dụng nhậndạng biển báo giao thông trên thiết bị di động”
[11] Chính phủ. Nghị định số Số: 34/2010/NĐ-CP: Quy định xử phạt vi phạm hành chính trong lĩnh vực giao thông đường bộ Khác
[12] Chính phủ. Nghị định số Số: 71/2012/NĐ-CP: Sửa đổi, bổ sung một số điều của Nghị định số 34/2010/NĐ-CP ngày 02 tháng 04 năm 2010 của Chính phủ quy định xử phạt vi phạm hành chính trong lĩnh vực giao thông đường bộ Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w