Luận Văn Hệ điều hành Android và thực thi ứng dụng phát hiện khuôn mặt trên Android

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    170
    Điểm thành tích:
    0
    Xu:
    0Xu
    (LUẬN VĂN của sinh viên ĐH Quốc Gia Hà Nội, có thể copy, chỉnh sửa được)

    LỜI CẢM ƠN

    Để hoàn thành khóa luận này, em đã nhận được sự giúp đỡ nhiệt tình của TS. Nguyễn________, TS. Nguyễn ________ và các anh chị bên công ty Techburg, Hà Nội.

    Trước hết em xin bày tỏ lòng biết ơn sâu sắc tới TS. ______________, Giảng viên khoa Điện Tử Viễn Thông, Trường Đại học Công Nghệ, ĐHQG Hà Nội, người đã hướng dẫn và chỉ bảo nhiệt tình cho em trong suốt quá trình học, nghiên cứu và hoàn thành khóa luận.

    Em xin trân trọng cảm ơn sự nhiệt tình hướng dẫn và giúp đỡ tận tình của TS. _____________, Tổng giám đốc Công ty Techburg và các anh chị thuộc công ty đã nhiệt tình giúp đỡ và tạo điều kiện cho em học tập và hoàn thành khóa luận này.

    Cuối cùng, em xin gửi lời biết ơn tới gia đình và bạn bè đã giúp đỡ và động viên em rất nhiều để em có thể hoàn thành khóa luận này. Đặc biệt là gia đình, nơi đã sinh thành, nuôi dưỡng và động viên em rất nhiều trong thời gian qua.



    TÓM TẮT

    Android là hệ điều hành cho thiết bị di động được phát triển bởi Google. Android dựa trên nhân Linux 2.6 và các ứng dụng Android được viết bằng ngôn ngữ lập trình Java. Khóa luận này tôi trình bày tổng quan về Android, kiến trúc Android, Android SDK, Android NDK, các thành phần tạo nên một ứng dụng Android và trình bày hai phương pháp phát hiện khuôn mặt sử dụng thư viện OpenCV và framework API của Android. Đồng thời khóa luận cũng trình bày sự khác nhau giữa máy ảo Java và máy ảo Dalvik. Dalvik là máy ảo thực thi các ứng dụng Android.

    Trong khóa luận này tôi trình bày quy trình xây dựng và thực thi một ứng dụng với Android NDK. Quy trình này sẽ được sử dụng để xây dựng ứng dụng phát hiện khuôn mặt sử dụng OpenCV. OpenCV là một thư viện hỗ trợ cho xử lý ảnh do Intel phát triển, bao gồm khoảng 500 hàm viết bằng các ngôn ngữ C và C++. Để sử dụng được thư viện này thì đầu tiên phải porting được thư viện OpenCV vào Android. Khóa luận cũng trình bày cách porting thư viện và trình bày thuật toán phát hiện khuôn mặt do Viola và Jones đưa ra. Để sử dụng thư viện OpenCV thì cần một giao diện để chương trình ứng dụng Android viết bằng Java có thể gọi được các hàm viết bằng C/C++ của OpenCV. Giao diện đó là JNI (Java Native Interface). Trong khóa luận tôi cũng đưa ra một demo với “Hello World” sử dụng Android NDK mà có hỗ trợ JNI. Từ đó đưa được giải pháp để phát triển ứng dụng phát hiện khuôn mặt sử dụng OpenCV.

    Phương pháp thứ hai để phát hiện khuôn mặt là sử dụng framework API của Android. API là giao diện lập trình ứng dụng (Application Programming Interface). Android cung cấp một framework API bao gồm các gói và các lớp giúp cho các nhà phát triển có thể sử dụng để phát triển nhiều ứng dụng hấp dẫn. Khóa luận trình bày về các gói và các lớp sử dụng framework API của Android để xây dựng ứng dụng phát hiện khuôn mặt trên Android và khóa luận đưa ra được kết quả khi tiến hành thực nghiệm. Với phương pháp này chỉ cần có kỹ năng lập trình Java tốt là có thể xây dựng được ứng dụng.


    MỤC LỤC


    CHƯƠNG 1. HỆ ĐIỀU HÀNH ANDROID 1

    1.1.Android là gì? 1

    1.2.Máy ảo Dalvik 1

    1.3.Kiến trúc Android 2

    1.4.Android emulator 5

    1.5. Android SDK 6

    1.6.Android NDK 8

    1.7. Porting OpenCV vào Android 10

    1.8. Các thành phần tạo nên một ứng dụng Android 11

    1.9. Phát triển ứng dụng Android và DVM 18

    1.10. Tạo và demo ứng dụng “Hello World” sử dụng Android NDK 19

    CHƯƠNG 2 .CÁC PHƯƠNG PHÁP PHÁT HIỆN KHUÔN MẶT TRÊN ANDROID 26

    2.1. Thuật toán của Viola – Jones trong OpenCV 26

    2.1.1. Đặc trưng Haar-like 26

    2.1.2. AdaBoost 27

    2.1.3. Mô hình phát hiện khuôn mặt 29

    2.2. Phát hiện khuôn mặt sử dụng framework API của Android 30

    2.2.1.Gói android.graphics 30

    2.2.2.Gói android.app 31

    2.2.3.Gói android.content 33

    2.2.4.Gói android.media 34

    2.3. Phân tích và xây dựng chương trình phát hiện khuôn mặt trên Android 35

    2.3.1.Mô hình phát hiện khuôn mặt trên Android sử dụng framework API 35

    2.3.2.Viết chương trình ứng dụng phát hiện khuôn mặt trên Android 39

    CHƯƠNG 3. KẾT QUẢ ĐẠT ĐƯỢC 47

    3.1. Kết quả phát hiện khuôn mặt sử dụng framework API của Android 47

    3.2. Khó khăn và hướng giải quyết 48

    KẾT LUẬN 49

    TÀI LIỆU THAM KHẢO 50

    Danh sách hình vẽ

    Hình 1. Qúa trình thực thi ứng dụng Java và ứng dụng Android 1

    Hình 2.Qúa trình biến đổi file mã Java thành file (.dex) 2

    Hình 3.Kiến trúc Android 2

    Hình 4.Android Emulator 5

    Hình 5.Các ứng dụng Android trong API Demos 7

    Hình 6.Vai trò của JNI 9

    Hình 7.Mô hình xây dựng và chạy code JNI 9

    Hình 8.Mô hình porting OpenCV vào Android 10

    Hình 9.Qúa trình porting OpenCV vào Android 11

    Hình 10.Ngăn xếp Activity 12

    Hình 11.Chu kỳ sống của Activity 13

    Hình 12.Chu kỳ sống của Service 16

    Hình 13.Truyền thông giữa hai tiến trình 16

    Hình 14.Broadcast receiver 16

    Hình 15.Content Provider 17

    Hình 16.Ứng dụng Contacts sử dụng Contacts Provider để lấy dữ liệu 17

    Hình 17.Intent 18

    Hình 18.Qúa trình tạo file APK 19

    Hình 19.Quá trình truy cập mã gốc qua JNI 20

    Hình 20.Demo ứng dụng Hello World dùng Android NDK 25

    Hình 21.Các đặc trưng Haar-like cơ bản 26

    Hình 22.Các đặc trưng Haar-like mở rộng 26

    Hình 23.Cách tính Integral Image 27

    Hình 24.Ví dụ cách tính nhanh các giá trị mức xám 27

    Hình 25.Mô hình cascade kết hợp với các bộ phân loại yếu 28

    Hình 26.Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh 29

    Hình 27. Hệ thống phát hiện khuôn mặt 29

    Hình 28.Các gói Android cung cấp trong framework API 35

    Hình 29.Mô hình phát hiện khuôn mặt trên Androi 35

    Hình 30.Các góc Euler- hệ tọa độ xyz (cố định), hệ tọa độ XYZ (quay) 36

    Hình 31.Các thành phần trong một Android Project 39

    Hình 32. Các tệp trong thư mục bin của Android Project. 45

    Hình 33.Hình ảnh gốc ban đầu 47

    Hình 34.Kết quả phát hiện khuôn mặt trên Android 47


    THUẬT NGỮ VIẾT TẮT SỬ DỤNG TRONG BÀI


    ADB Android Debug Bridge

    ADT Android Development Tools

    AVD Android Virtual Devices

    API Application Programming Interface

    BSD Berkeley Software Distribution

    DVM Dalvik Virtual Machine

    GPS Global Positioning System

    JNI Java Native Interface

    JVM Java Virtual Machine

    NDK Native Development Kit

    OS Operating System

    OpenCV OpenSource Computer Vision

    SDK Software Development Kit

    UI User Interface

    VM Virtual Machine


    LỜI MỞ ĐẦU


    Android là một hệ điều hành cho điện thoại di động do Google phát triển dựa trên nền tảng Linux 2.6. Android đang từng bước thống trị thị trường di động nhờ vào những ưu điểm vượt trội của nó. Không như iPhone của Apple người dùng dường như bị cột chặt với những gì hãng này cho phép thì Android được kế thừa tính mở từ Linux hay nói cụ thể hơn là Google và Android mang đến một thế giới hoàn toàn mở. Người dùng được tự do với những gì họ muốn và các nhà phát triển có được sự tự do hơn để tạo ra các ứng dụng. Ngoài ra với Android người tiêu dùng có thể có nhiều sự lựa chọn. Chẳng hạn như hãng LG tung ra trên thị trường 20 sản phẩm chạy nền Android năm 2010. Bên cạnh các tính năng đó thì Android sẽ từng bước thống trị thị trường di động nhờ vào ưu điểm hướng đến người dùng và với thương hiệu của Google đứng sau lưng nó. Đây là một thương hiệu đáng giá.

    Hiện nay Android không chỉ được dùng cho điện thoại di động mà còn được các nhà sản xuất điện tử trên thế giới sử dụng Android như là một nền tảng cho các sản phẩm nhúng, ví dụ như nhà thông minh, hệ thống thông tin giải trí ô tô, Ngoài ra trong tương lai Google sẽ sớm tung ra một hệ điều hành cho tivi, đầu thu kỹ thuật số (set-top-box).

    Trong khóa luận này tôi sẽ trình bày tổng quan về hệ điều hành Android và trình bày hai hướng để phát triển ứng dụng phát hiện khuôn mặt trên Android đó là sử dụng OpenCV và framework API của Android. OpenCV là một thư viện hỗ trợ mạnh cho xử lý ảnh do Intel phát triển bao gồm các hàm được viết bằng ngôn ngữ C và C++ trong đó có hỗ trợ phát hiện khuôn mặt. Thuật toán phát hiện khuôn mặt của Viola – Jones được đưa vào OpenCV vì với tốc độ gấp 15 lần so với các thuật toán hiện tại [7]. Hướng thứ hai tôi sẽ trình bày trong khóa luận để xây dựng một ứng dụng phát hiện khuôn mặt với framework API của Android. API là giao diện lập trình ứng dụng, viết tắt của Application Programming Interface. Nền tảng Android cung cấp một framework API mà các ứng dụng có thể tương tác với hệ thống Android. Framework API bao gồm một lõi thiết lập các gói và các lớp. Trong ứng dụng phát hiện khuôn mặt tôi sử dụng lớp FaceDetector trong gói android.media của framework API do Android cung cấp để xây dựng ứng dụng. Với hướng thứ hai này chỉ cần kỹ năng lập trình Java tốt là có thể xây dựng được ứng dụng.

    Nội dung của khóa luận gồm 3 chương:

    Chương 1: Trình bày tổng quan về hệ điều hành Android, kiến trúc Android, Android SDK, Android NDK, porting OpenCV vào Android và quy trình xây dựng và thực thi một ứng dụng Android. Bản chất của việc Porting OpenCV vào Android là thêm một thư viện chia sẻ vào tầng thư viện của Android để từ đó có thể dùng thư viện này để phát triển nhiều ứng dụng khác không chỉ là phát hiện khuôn mặt. Chẳng hạn như dùng OpenCV có thể phát triển thêm các ứng dụng phân tích chuyển động, nhận dạng khuôn mặt. Chương này cũng đưa ra sự khác nhau giữa máy ảo Java và máy ảo Dalvik. Dalvik là máy ảo để thực thi các ứng dụng Android.

    Chương 2: Trình bày hai phương pháp phát hiện khuôn mặt trên Android sử dụng OpenCV và framework API của Android trong tầng applications framework của kiến trúc Android. Trong chương này tôi sẽ trình bày thuật toán của Viola – Jones sử dụng trong OpenCV và xây dựng chương trình phát hiện khuôn mặt với framework API của Android.

    Chương 3: Trình bày các kết quả đạt được và những khó khăn gặp phải từ đó đưa ra hướng giải quyết khó khăn.








     

    Các file đính kèm:

Đang tải...