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

64 1K 6
hệ điều hành android và thực thi ứng dụng phát hiện khuôn mặt trên android

Đ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

a ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Thị Hợp HỆ ĐIỀU HÀNH ANDROID THỰC THI ỨNG DỤNG PHÁT HIỆN KHUÔN MẶT TRÊN ANDROID KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Điện Tử Viễn Thông HÀ NỘI - 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Thị Hợp HỆ ĐIỀU HÀNH ANDROID THỰC THI ỨNG DỤNG PHÁT HIỆN KHUÔN MẶT TRÊN ANDROID KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Điện Tử Viễn Thông Cán bộ hướng dẫn: TS. Nguyễn Linh Trung Cán bộ đồng hướng dẫn: TS. Nguyễn Thái Hà HÀ NỘI - 2011 VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY Tran Thi Hop ANDROID OPERATING SYSTEM AND IMPLEMENTATION OF FACE DETECTION APPLICATION ON ANDROID Major: Faculty of Electronics and Telecommunications Supervisor: Ph.D Nguyen Linh Trung Co-Supervisor: Ph.D Nguyen Thai Ha HÀ NỘI-2011 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 Linh Trung, TS. Nguyễn Thái Hà 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. Nguyễn Linh Trung, 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 chỉ bảo nhiệt tình cho em trong suốt quá trình học, nghiên cứu 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 giúp đỡ tận tình của TS. Nguyễn Thái Hà, Tổng giám đốc Công ty Techburg các anh chị thuộc công ty đã nhiệt tình giúp đỡ tạo điều kiện cho em học tập 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 bạn bè đã giúp đỡ độ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 động viên em rất nhiều trong thời gian qua. Hà Nội , ngày 20 tháng 5 năm 2011 Sinh viên: Trần Thị Hợp TÓM TẮT Androidhệ đ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 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 trình bày hai phương pháp phát hiện khuôn mặt sử dụng thư viện OpenCV 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 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 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 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 trình bày thuật toán phát hiện khuôn mặt do Viola 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 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 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 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. i LỜI CAM ĐOAN Tôi xin cam đoan đề tài “Hệ điều hành Android thực thi ứng dụng phát hiện khuôn mặt trên Android ” là kết quả tìm hiểu của riêng tôi với sự hướng dẫn của TS. Nguyễn Linh Trung TS. Nguyễn Thái Hà. Trong khóa luận có sử dụng một số tài liệu kết quả nghiên cứu như đã nêu trong phần tài liệu tham khảo. Các kết quả, số liệu sử dụng trong khóa luận là chính xác trung thực. Khóa luận được hoàn thành trong thời gian tôi là sinh viên tại Bộ môn thông tin vô tuyến, Khoa điện tử viễn thông, Trường Đại học Công Nghệ, ĐHQG Hà Nội. Hà Nội, ngày 20 tháng 5 năm 2011 Sinh viên: Trần Thị Hợp ii MỤC LỤC Trần Thị Hợp 1 Trần Thị Hợp 2 Tran Thi Hop 3 Danh sách hình vẽ iv 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 3 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 12 1.9. Phát triển ứng dụng Android DVM 19 1.10. Tạo demo ứng dụng “Hello World” sử dụng Android NDK 20 CHƯƠNG 2 .CÁC PHƯƠNG PHÁP PHÁT HIỆN KHUÔN MẶT TRÊN ANDROID 27 2.1. Thuật toán của Viola – Jones trong OpenCV 27 2.2. Phát hiện khuôn mặt sử dụng framework API của Android 31 2.3. Xây dựng chương trình phát hiện khuôn mặt trên Android 36 CHƯƠNG 3. KẾT QUẢ ĐẠT ĐƯỢC 48 3.1. Kết quả phát hiện khuôn mặt sử dụng framework API của Android 48 3.2. Khó khăn hướng giải quyết 49 KẾT LUẬN 50 TÀI LIỆU THAM KHẢO 51 iii Danh sách hình vẽ Hình 1. Qúa trình thực thi ứng dụng Java ứng dụng Android [4] 2 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 [9] 3 Hình 4.Android Emulator 6 iv Hình 5.Các ứng dụng Android trong API Demos 7 Hình 6.Vai trò của JNI [7] 9 Hình 7.Mô hình xây dựng chạy code JNI [7] 10 Hình 8.Mô hình porting OpenCV vào Android 11 Hình 9.Qúa trình porting OpenCV vào Android 12 Hình 10.Ngăn xếp Activity 13 Hình 11.Chu kỳ sống của Activity [4] 14 Hình 12.Chu kỳ sống của Service [4] 17 Hình 13.Truyền thông giữa hai tiến trình 17 Hình 14.Broadcast receiver 17 Hình 15.Content Provider [4] 18 Hình 16.Ứng dụng Contacts sử dụng Contacts Provider để lấy dữ liệu 18 Hình 17.Intent [4] 19 Hình 18.Qúa trình tạo file APK 20 Hình 19.Quá trình truy cập mã gốc qua JNI [4] 21 Hình 20.Demo ứng dụng Hello World dùng Android NDK 26 Hình 21.Các đặc trưng Haar-like cơ bản [7] 27 Hình 22.Các đặc trưng Haar-like mở rộng [6] 27 Hình 23.Cách tính Integral Image [8] 28 Hình 24.Ví dụ cách tính nhanh các giá trị mức xám [7] 28 Hình 25.Mô hình cascade kết hợp với các bộ phân loại yếu [7] 29 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 30 Hình 27. Hệ thống phát hiện khuôn mặt 30 Hình 28.Các gói Android cung cấp trong framework API 36 Hình 29.Mô hình phát hiện khuôn mặt trên Androi 36 Hình 30.Các góc Euler- hệ tọa độ xyz (cố định), hệ tọa độ XYZ (quay) 37 Hình 31.Các thành phần trong một Android Project 40 Hình 32. Các tệp trong thư mục bin của Android Project 46 Hình 33.Hình ảnh gốc ban đầu 48 v Hình 34.Kết quả phát hiện khuôn mặt trên Android 48 vi [...]... ix CHƯƠNG 1 HỆ ĐIỀU HÀNH ANDROID 1.1 .Android là gì? Android là một ngăn xếp phần mềm cho các thi t bị di động bao gồm một hệ điều hành, middleware các ứng dụng khóa được phát triển bởi Google Android được dựa trên nhân Linux 2.6 các ứng dụng cho Android sử dụng ngôn ngữ lập trình Java Android là một hệ điều hành mã nguồn mở, các nhà phát triển có thể tạo ra các ứng dụng cho Android bất kỳ ai... 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 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 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 độ... tắt của Dalvik excutable), đóng vai trò như cơ chế ảo để thực thi các ứng dụng Android Hình 1 mô tả sự khác nhau giữa giữa quá trình thực thi một ứng dụng Java quá trình thực thi một ứng dụng Android: 1 Hình 1 Qúa trình thực thi ứng dụng Java ứng dụng Android [4] Hình 1 thể hiện hai sự khác biệt giữa máy ảo Java (JVM: Java Virtual Machine) máy ảo Dalvik (DVM: Dalvik Virtual Machine) Sự khác... triệu gọi truyền các dữ liệu cần thi t để thực hiện một Activity từ một Activity khác Hình 15 cho thấy Intent có thể được sử dụng để “nhảy” giữa các Activity khác nhau ở trong cùng một ứng dụng hoặc trong các ứng dụng khác nhau Hình 17.Intent [4] 1.9 Phát triển ứng dụng Android DVM Như tôi đã đề cập ở trên thì file APK là file sẽ được phát hành trên Android cho việc thực thi các ứng dụng Android. .. để 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 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 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à. .. dựng 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à. .. 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 các lớp Trong ứng dụng phát hiện. .. AndroidManifest.xml các file resource thành một file APK File APK này sẽ được phát hành trên Android cho việc thực thi ứng dụng File AndroidManifest.xml là file tự động sinh ra khi ta xây dựng bất kỳ một ứng dụng Android nào File này định nghĩa các thông tin về hệ thống Qúa trình này cũng giải thích được tại sao người ta sử dụng máy ảo Dalvik thay vì sử dụng máy ảo Java để chạy các ứng dụng Một ứng dụng định... triển một ứng dụng Android Mỗi ứng dụng mẫu thể hiện mỗi phần khác nhau về chức năng của Android Chúng ta có thể mở chạy các ứng dụng này từ bên trong của Eclipse Ứng dụng API Demos là một ứng dụng chủ (host application) mô tả nhiều hàm API trong một Activity đơn lẻ Một Activity là một ứng dụng Android Ứng dụng API Demos như chỉ ra hình dưới bao gồm nhiều ví dụ khác nhau về chức năng của Android: ... APK là file sẽ được phát hành trên Android cho việc thực thi ứng dụng) ; Android NDK bao gồm một chuỗi các header của hệ thống được hỗ trợ trong các phiên bản của nền tảng Android (ví dụ: libc, JNI headers, C++ headers, OpenGL, …); Android NDK bao gồm một số tài liệu, mã đơn giản một số các ví dụ Android NDK hỗ trợ JNI giúp các nhà phát triển ứng dụng xây dựng các ứng dụng có sử dụng các đoạn mã gốc . để thực thi các ứng dụng Android. Hình 1 mô tả sự khác nhau giữa giữa quá trình thực thi một ứng dụng Java và quá trình thực thi một ứng dụng Android: 1 Hình 1. Qúa trình thực thi ứng dụng. NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Thị Hợp HỆ ĐIỀU HÀNH ANDROID VÀ THỰC THI ỨNG DỤNG PHÁT HIỆN KHUÔN MẶT TRÊN ANDROID KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Điện Tử Viễn Thông Cán. 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

Ngày đăng: 21/06/2014, 09:09

Từ khóa liên quan

Mục lục

  • Trần Thị Hợp

    • HÀ NỘI - 2011

    • Trần Thị Hợp

      • HÀ NỘI - 2011

      • Tran Thi Hop

        • HA NOI - 2011

        • Danh sách hình vẽ

        • 1.1.Android là gì?

        • 1.2.Máy ảo Dalvik

        • 1.3.Kiến trúc Android

        • 1.4.Android emulator

        • 1.5. Android SDK

        • 1.6.Android NDK

        • 1.7. Porting OpenCV vào Android

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

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

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

          • Tạo lớp Java biểu thị cho mã nguồn

          • Tạo các file header mã nguồn

          • Thực thi mã nguồn bằng cách viết code C

          • Biên dịch tất cả và xây dựng thư viện chia sẻ

          • Sử dụng mã nguồn bên trong các Activity của Android

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

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

            • 2.1.2. AdaBoost

Tài liệu cùng người dùng

Tài liệu liên quan