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

NHẬN DIỆN CHỚP MẮT VÀ CẢNH BÁO BUỒN NGỦ KHI LÁI XE TRÊN NỀN WINDOWS VÀ ANDROID

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (12.23 MB, 108 trang )

ÐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ÐẠI HỌC BÁCH KHOA
KHOA ÐIỆN – ÐIỆN TỬ
BỘ MÔN VIỄN THÔNG

LUẬN VĂN TỐT NGHIỆP

NHẬN DIỆN CHỚP MẮT VÀ CẢNH BÁO
BUỒN NGỦ KHI LÁI XE TRÊN NỀN
WINDOWS VÀ ANDROID

GVHD: PGS. TS. Hoàng Đình Chiến
SVTH : Lê Thế Hải
40700665
Lê Thanh Hòa
40700884

- Tp. Hồ Chí Minh, Tháng 1-2012 -

i


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH BÁCH KHOA
Thành phố Hồ Chí Minh

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập – Tự Do – Hạnh Phúc


Số:______/BKĐT





Khoa: Điện – Điện tử
Bộ Môn: Viễn Thông

NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên:
Họ và tên:
Ngành:

LÊ THẾ HẢI
LÊ THANH HÒA
VIỄN THÔNG

MSSV: 40700665
MSSV: 40700884
LỚP: DD07DV1

1. Đầu đề luận văn: “Nhận diện chớp mắt và cảnh báo buồn ngủ khi lái xe
trên nền Windows và Android”
2. Nhiệm vụ ( Yêu cầu về nội dung và số liệu ban đầu):
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
3. Ngày giao nhiệm vụ luận văn:...............................
4. Ngày hoàn thành nhiệm vụ:...................................
5. Họ và tên người hướng dẫn:..................................Phần hướng dẫn........................
Nội dung và yêu cầu LVTN đã được thông qua Bộ Môn.

........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
Ngày.......tháng .........năm 2011
CHỦ NHIỆM BỘ MÔN
(Ký và ghi rõ họ tên)

PHẦN DÀNH CHO KHOA, BỘ MÔN:
Người duyệt (chấm sơ bộ): ....................................
Đơn vị: ...................................................................
Ngày bảo vệ:...........................................................
Điểm tổng kết:........................................................
Nơi lưu trữ luận văn:...............................................

NGƯỜI HƯỚNG DẪN CHÍNH
(Ký và ghi rõ họ tên)


TRƯỜNG ĐH BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập – Tự Do – Hạnh Phúc
--o0o-Ngày............tháng...........năm 201…

PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người hướng dẫn)
Họ và tên:
LÊ THẾ HẢI

MSSV: 40700665
Họ và tên:
LÊ THANH HÒA
MSSV: 40700884
Ngành:
VIỄN THÔNG
LỚP: DD07DV1
1. Đề tài: “Nhận diện chớp mắt và cảnh báo buồn ngủ khi lái xe trên nền
Windows và Android”
2. Họ tên người hướng dẫn: PGS. TS. HOÀNG ĐÌNH CHIẾN
3. Tổng quát về bản thuyết minh:
Số trang
.........
Số chương
.........
Số bảng số liệu
.........
Số hình vẽ
.........
Số tài liệu tham khảo
.........
Phần mềm tính toán
.........
4. Tổng quát về các bản vẽ:
- Số bản vẽ:
.........bản A1 ..........bản A2
.........khổ khác
- Số bản vẽ tay............
- Số bản vẽ trên máy tính..............
5. Những ưu điểm chính của LVTN:

.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
6. Những thiếu sót chính của LVTN:
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
7. Đề nghị: Được bảo vệ ,
Bổ sung thêm để bảo vệ ,
Không được bảo vệ .
8. 3 câu hỏi sinh viên trả lời trước Hội Đồng:
a)....................................................................................................................................
b)...................................................................................................................................
c)....................................................................................................................................
9. Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm …………………….
Ký tên (ghi rõ họ tên)


TRƯỜNG ĐH BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập – Tự Do – Hạnh Phúc
--o0o-Ngày............tháng...........năm 201…

PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người phản biện)
Họ và tên:
LÊ THẾ HẢI
MSSV: 40700665

Họ và tên:
LÊ THANH HÒA
MSSV: 40700884
Ngành:
VIỄN THÔNG
LỚP: DD07DV1
10. Đề tài: “Nhận diện chớp mắt và cảnh báo buồn ngủ khi lái xe trên nền
Windows và Android”
11. Họ tên người phản biện:
12. Tổng quát về bản thuyết minh:
Số trang
.........
Số chương
.........
Số bảng số liệu
.........
Số hình vẽ
.........
Số tài liệu tham khảo
.........
Phần mềm tính toán
.........
13. Tổng quát về các bản vẽ:
- Số bản vẽ:
.........bản A1 ..........bản A2
.........khổ khác
- Số bản vẽ tay............
- Số bản vẽ trên máy tính..............
14. Những ưu điểm chính của LVTN:
.......................................................................................................................................

.......................................................................................................................................
.......................................................................................................................................
15. Những thiếu sót chính của LVTN:
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
16. Đề nghị: Được bảo vệ ,
Bổ sung thêm để bảo vệ ,
Không được bảo vệ .
17. 3 câu hỏi sinh viên trả lời trước Hội Đồng:
a)....................................................................................................................................
b)...................................................................................................................................
c) ...................................................................................................................................
18. Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm …………………….
Ký tên (ghi rõ họ tên)


LỜI CẢM ƠN
Lời đầu tiên, chúng em xin gửi đến Thầy, PGS. TS. Hoàng Đình Chiến lời
cảm ơn chân thành và sâu sắc nhất. Nhờ có sự hướng dẫn và giúp đỡ tận tình của
Thầy trong suốt thời gian qua, chúng em đã có thể thực hiện và hoàn thành Đồ
Án Môn Học 2, Thực Tập Tốt Nghiệp và Luận Văn Tốt Nghiệp. Những lời nhận
xét, góp ý và hướng dẫn tận tình của Thầy đã giúp chúng em có một định hướng
đúng đắn trong suốt quá trình thực hiện Đề tài, giúp chúng em nhìn ra được
những ưu khuyết điểm của Đề tài và từng bước hoàn thiện hơn.
Đồng thời, chúng em xin trân trọng cảm ơn các Thầy Cô của Trường Đại
Học Bách Khoa nói chung và của khoa Điện - Điện Tử nói riêng đã dạy dỗ
chúng em suốt quãng thời gian ngồi trên ghế giảng đường Đại học. Những lời
giảng của Thầy Cô trên bục giảng đã trang bị cho em những kiến thức và giúp
chúng em tích lũy thêm những kinh nghiệm.

Bên cạnh đó, chúng con cũng chân thành cảm ơn sự động viên và sự hỗ trợ
của gia đình và cha mẹ trong suốt thời gian học tập. Đặc biệt, chúng con xin gửi
lời cảm ơn trân trọng nhất đến cha mẹ, người đã sinh ra và nuôi dưỡng chúng
con nên người. Sự quan tâm, lo lắng và hy sinh lớn lao của cha mẹ luôn là động
lực cho chúng con cố gắng phấn đấu trên con đường học tập của mình. Một lần
nữa, chúng con xin gửi đến cha mẹ sự biết ơn sâu sắc nhất.
Cuối cùng, chúng tôi xin cảm ơn sự hỗ trợ và giúp đỡ của bạn bè trong thời
gian học tập tại Trường Đại Học Bách Khoa và trong quá trình hoàn trình hoàn
thành Luận Văn Tốt Nghiệp này.

Hồ Chí Minh, ngày 8 tháng 1 năm 2012

LÊ THẾ HẢI
LÊ THANH HÒA

5


TÓM TẮT LUẬN VĂN

Đề tài luận văn này xây dựng một phần mềm phát hiện chớp mắt và cảnh
báo buồn ngủ cho người lái xe ở thời gian thực sử dụng camera kết nối với máy
tính hay nạp trên hệ điều hành Android. Theo những khảo sát thì ngủ gật sau vô
lăng là nguyên nhân dẫn tới 30% số tai nạn xảy ra, đặc biệt với chuyến đi dài
ngày. Buồn ngủ có thể làm các tài xế lao ra vệ đường hoặc đâm vào đuôi xe
khác. Do đó cảnh báo tài xế khi có hiện tượng buồn ngủ là một vấn đề cấp thiết
và thiết thực nhằm làm giảm tị lệ tai nạn giao thông.
Trong khuôn khổ của luận văn, nhóm sẽ tập trung xây dựng một chương
trình có thể ứng dụng vào thực tế để cảnh báo buồn ngủ khi lái xe. Chương trình
sẽ được thực hiện trên 2 hệ điều hành Windows và Android. Trên nền Windows

chương trình sử dụng ngôn ngữ C và mã nguồn mở OpenCV2.1, trên nền
Android sử dụng ngôn ngữ Java và mã nguồn mở OpenCV2.3.1 cho Android.
Chương trình trên cả hai nền hệ điều hành đều đáp ứng được độ chính xác và
tốc độ thời gian thực trong những điều kiện khi lái xe. Khi người lái xe ngủ và
đóng mắt lại, lập tức sẽ có âm thanh cảnh báo nguy hiểm. Đây là một trong
những điểm mới khi mà việc cảnh báo lái xe buồn ngủ vẫn chưa được phổ biến ở
Việt Nam.
Nhóm sinh viên thực hiện
LÊ THẾ HẢI
LÊ THANH HÒA
6


MỤC LỤC
Đề mục
Trang
Trang bìa.........................................................................................................................i
Nhiệm vụ luận văn...........................................................................................................
Lời cảm ơn.....................................................................................................................ii
Tóm tắt luận văn...........................................................................................................iii
Mục lục.........................................................................................................................iv
Danh sách hình vẽ........................................................................................................vii
Danh sách bảng biểu.....................................................................................................ix
Danh mục từ viết tắt.......................................................................................................x
Nội dung luận văn
Phần mở đầu: Giới thiệu chung..................................................1
Phần I: Lý thuyết tổng quan................................................................................................4
Chương 1: Giới thiệu về thị giác máy tính.........................................................................5
1.1


Thế nào là thị giác máy tính.....................................................................................6

1.2

Các ứng dụng của thị giác máy tính.........................................................................7

1.3

Các thư viện thị giác máy tính mã nguồn mở..........................................................7

1.4

Thư viện mã nguồn mở OpenCV.............................................................................7
1.4.1

Tổng quan về OpenCV............................................................................7

1.4.2

Những khả năng của OpenCV.................................................................8

1.4.3

Cấu tạo của OpenCV...............................................................................9

Chương 2: Các khái niệm và nền tảng xử lý ảnh............................................................10
2.1

Cấu trúc mắt người.................................................................................................11


2.2

Không gian màu.....................................................................................................11

2.3

2.2.1

Không gian màu GRAY.........................................................................12

2.2.2

Không gian màu HSV............................................................................12

2.2.3

Không gian màu XYZ...........................................................................13

Ngưỡng ảnh............................................................................................................14
2.3.1

Ngưỡng toàn cục....................................................................................14

2.3.2

Ngưỡng thích nghi.................................................................................14

Chương 3: Một số thuật toán về nhận dạng....................................................................16
7



3.1

3.2

3.3

Các phương pháp nhận dạng khuôn mặt người......................................................17
3.1.1

Hướng tiếp cận dựa trên tri thức............................................................17

3.1.2

Hướng tiếp cận dựa trên đặc trưng không đổi.......................................17

3.1.3

Hướng tiếp cận dựa trên so khớp mẫu...................................................18

3.1.4

Hướng tiếp cận dựa trên diện mạo.........................................................18

Giải thuật AdaBoost và đặc trưng Haar của khuôn mặt.........................................19
3.2.1

Giải thuật AdaBoost...............................................................................19

3.2.2


Đặc trưng Haar-like của khuôn mặt.......................................................21

Giải thuật Adaptive Mean Shift..............................................................................23

Chương 4: Giới thiệu về Android và máy ảo Dalvik......................................................25
4.1

Lịch sử Android......................................................................................................26

4.2

Kiến trúc Android...................................................................................................27
4.2.1

Tầng ứng dụng.......................................................................................27

4.2.2

Application framework..........................................................................27

4.2.3

Thư viện.................................................................................................28

4.2.4

Android Runtime...................................................................................29

4.3


Máy ảo Dalvik........................................................................................................29

4.4

Các thành phần trong một chương trình Android...................................................30

4.5

4.4.1

AndroidManifest.xml.............................................................................30

4.4.2

File R.java..............................................................................................31

Chu kỳ ứng dụng Android......................................................................................33

Chương 5: Android với OpenCV2.3.1..............................................................................36
5.1

5.2

5.3

Cài đặt và sử dụng Android SDK trên Eclipse.......................................................37
5.5.1

Eclipse....................................................................................................37


5.5.2

Android SDK – NDK – JDK – JRE......................................................38

Sử dụng OpenCV2.3.1 trên nền Android...............................................................39
5.2.1

JNI (JavaTM Native Interface)................................................................39

5.2.2

JNA (JaveTM Native Access)..................................................................40

Các thành phần giao diện trong Android................................................................41
5.3.1

View.......................................................................................................41

5.3.2

ViewGroup.............................................................................................41
8


5.3.3

Button và ImageButton..........................................................................44

5.3.4


Activity và Intent...................................................................................45

Phần II: Lập trình...............................................................................................................48
Chương 6: Lập trình trên nền Windows..........................................................................49
6.1

Sơ đồ giải thuật chương trình chính.......................................................................50

6.2

Sơ đồ giải thuật một số chương trình con..............................................................52
6.2.1
6.2.2
6.2.3

6.3

Chương trình con phát hiện khuôn mặt.................................................52
Chương trình con phát hiện tròng mắt...................................................55
Chương trình con cảnh báo âm thanh....................................................57

Kết quả chương trình chạy trên Windows 7...........................................................59

Chương 7: Lập trình trên nền Android............................................................................63
7.1

Sơ đồ giải thuật lớp SampleCvViewBase..............................................................64

7.2


Sơ đồ giải thuật một số hàm con............................................................................64

7.3

7.2.1

Hàm public FdView()............................................................................64

7.2.2

Hàm protected Bitmap processFrame().................................................66

Kết quả chương trình chạy trên Transformer TF101 và Galaxy i9003..................68

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.........................................................................72
PHỤ LỤC
TÀI LIỆU THAM KHẢO

9


DANH SÁCH HÌNH VẼ
Chương 1
Hình 1.1: Mối quan hệ giữa thị giác máy tính và các ngành liên quan................6
Chương 2
Hình 2.1: Cấu tạo mắt người.................................................................................................... 11
Hình 2.2: Không gian màu HSV............................................................................................ 12
Hình 2.3: Ảnh gốc và ngưỡng thích nghi nó với một cửa sổ 7x7, C=4.................15
Chương 3

Hình 3.1: Nhận dạng dựa trên tri thức............................................................................17
Hình 3.2: Nhận dạng dựa trên so khớp mẫu.................................................................18
Hình 3.3: Tập ảnh dùng để huấn luyện mặt người...................................................19
Hình 3.4: Phương pháp nhận dạng mặt người theo mạng Neural.......................19
Hình 3.5: Mô hình phân tầng kết hợp các bộ phân loại yếu xác định khuôn m ặt
20
Hình 3.6: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh....................20
Hình 3.7: Đặc trưng Haar-like cơ bản..............................................................................21
Hình 3.8: Đặc trưng cạnh........................................................................................................... 21
Hình 3.9: Đặc trưng đường................................................................................................... 21
Hình 3.10: Đặc trưng xung quanh tâm............................................................................. 21
Hình 3.11: Cách tính Integral Image của ảnh................................................................22
Hình 3.12: Ví dụ cách tính nhanh các giá trị mức xám của vùng D trên ảnh....22
Hình 3.13: Giải thuật Adaptive Mean Shift.....................................................................23
Hình 3.14: Màu da của khuôn mặt (kênh H)..................................................................24
Chương 4
Hình 4.1: Android timeline.................................................................................................... 26
Hình 4.2: Cấu trúc stack hệ thống Android.................................................................... 27
Hình 4.3: Máy ảo Dalvik.......................................................................................................... 29
Hình 4.4: Chu kỳ ứng dụng Android.................................................................................. 33
Chương 5
Hình 5.1: Kiến trúc Eclipse.................................................................................................... 37
Hình 5.2: Cấu trúc một giao diện ứng dụng Android................................................41
10


Hình 5.3: Bố trí các widget sử dụng LinearLayout......................................................42
Hình 5.4: Bố trí các widget trong FrameLayout............................................................42
Hình 5.5: Bố trí widget trong RetaliveLayout........................................................43
Hình 5.6: Bố trí widget trong TableLayout.............................................................43

Hình 5.7: ImageButon.............................................................................................................. 45
Hình 5.8: Truyền dữ liệu giữa 2 Activity......................................................................... 46
Chương 6
Hình 6.1: Sơ đồ giải thuật chương trình chính.............................................................50
Hình 6.2: Phát hiện khuôn mặt trong 1 frame ảnh.....................................................51
Hình 6.3: Phát hiện mắt trong vùng mặt được cắt.....................................................51
Hình 6.4: Sơ đồ chương trình con phát hiện khuôn mặt..........................................52
Hình 6.5: Phát hiện khuôn mặt dùng Haar Cascade.....................................................52
Hình 6.6: Tỷ lệ vùng chứa mắt phải trong khuôn mặt.............................................53
Hình 6.7: Vùng chứa mắt phải............................................................................................. 53
Hình 6.8: Góc giới hạn của Haar Cascade front face...................................................53
Hình 6.9: Phát hiện khuôn mặt dùng Camshift............................................................54
Hình 6.10: Kết quả chạy ban đêm..................................................................................... 55
Hình 6.11: Sơ đồ chương trình con detect pupil..........................................................56
Hình 6.12: Sơ đồ giải thuật hàm Void count_sleep().................................................57
Hình 6.13: Sơ đồ giải thuật hàm Void alert_sleep()...................................................58
Hình 6.14: Sơ đồ giải thuật phát tín hiệu âm thanh cảnh báo..............................59
Hình 6.15: Trường hợp không đeo kính ban ngày mắt mở và đóng....................60
Hình 6.16: Trường hợp không đeo kính ban đêm mắt mở và đóng.....................60
Hình 6.17: Trường hợp đeo kính ban ngày mắt mở và đóng..................................60
Hình 6.18: Trường hợp đeo kính ban đêm mắt mở và đóng...................................61
Chương 7
Hình 7.1: Sơ đồ giải thuật lớp SampleCvViewBase...............................................64
Hình 7.2: Sơ đồ giải thuật Class FdView.................................................................65
Hình 7.3: Sơ đồ giải thuật hàm public FdView().....................................................65
Hình 7.4: Sơ đồ giải thuật hàm Bitmap processFrame()..........................................66
Hình 7.5: Sơ đồ giải thuật Pupil Detect...........................................................................67
Hình 7.6: Trường hợp không đeo kính dùng Galaxy i9003.................................69
11



Hình 7.7: Trường hợp có đeo kính dùng Transformer TF101..............................70

DANH SÁCH BẢNG BIỂU
Chương 5
Bảng 5.1: Các thuộc tính của Intent.................................................................................... 47
Bảng 5.2: Các Action đã được định nghĩa sẵn trong Intent.....................................47
Chương 6
Biểu đồ 6.1: Trường hợp không đeo kính ban ngày..................................................61
Biểu đồ 6.2: Trường hợp có đeo kính ban ngày...........................................................61
Biểu đồ 6.3: Trường hợp không đeo kính ban đêm...................................................62
Biểu đồ 6.4: Trường hợp có đeo kính ban đêm...........................................................62
Biểu đồ 6.5: So sánh kết quả giữa các trường hợp....................................................62
Chương 7
Bảng 7.1: Kết quả đo để đánh giá độ chính xác của chương trình.........................71
Biểu đồ 7.1: Trường hợp không đeo kính ban ngày................................................71

12


DANH MỤC TỪ VIẾT TẮT
A
API
ADT

Application Programming Interface
Android Developer Tool

I
IDE


Integrated Development Environment

J
JDK
JRE
JNI
JNA

Java Development Kit
Jave Runtime Environment
JavaTM Native Interface
JavaTM Native Access

N
NDK

Native Development Kit

O
OpenCV Open Computer Vision

R
RGB

Red – Green – Blue

S
SDK


Software Development Kit

13


Phần mở đầu

GIỚI THIỆU CHUNG


PHẦN MỞ ĐẦU: GIỚI THIỆU CHUNG
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là m ột ngành khoa
học mới mẻ so với các ngành khoa học khác nhưng t ốc độ phát tri ển c ủa nó r ất nhanh,
kích thích các trung tâm nghiên cứu ứng dụng, đặc biệt là máy tính chuyên d ụng cho x ử
lý ảnh.
Đi sâu vào giải quyết những vấn đề trong thực tế như an ninh quốc phòng, b ảo
mật dữ liệu, cảnh báo, robotic, khôi phục 3D hay một số ứng d ụng gi ải trí khác. Ng ười
ta nhận thấy hiệu năng của xử lý ảnh là rất lớn so với các h ệ thống thi ết b ị cũ c ồng
kềnh, chi phí sản xuất lớn. Do đó xử lý ảnh ngày càng được chú tr ọng nghiên c ứu và
phát triển bởi những tập đoàn công nghiệp lớn và ngay cả nhiều quốc gia trên thế gi ới.
Đặc biệt đối với những nhà sản xuất xe hơi lớn như Honda, Mercedes – Benz,
HuynDai… vấn đề quan trọng bậc nhất là an toàn cho người sử dụng. Đi kèm v ới h ệ
thống an toàn tối tân trên xe như theo dõi tình tr ạng hoạt đ ộng c ủa xe, h ệ th ống an
toàn của Toyota có thể cảm nhận người đi bộ, tránh tai nạn sử dụng radar có bước sóng
cỡ milimet và camera stereo để liên tục theo dõi những gì đang ở phía tr ước c ủa chi ếc
xe, chế độ lái xe tự động hay những ý tưởng phát triển trong t ương lai nh ư theo dõi s ức
khỏe người lái xe qua hệ thống mới của Toyota sẽ kiểm soát các ch ức năng tim m ạch
của người lái thông qua cách cầm vô - lăng và phát hiện tình huống xấu.
Phát hiện buồn ngủ khi lái xe cũng là một trong những vấn đề quan trong khi
tham gia giao thông bằng xe ô tô. Với thực tr ạng tai nạn giao thông và đ ặc đi ểm ngành

nghề của những tài xế lái xe đường dài, vào ban đêm hay r ạng sáng h ọ r ất d ễ r ơi vào
trạng thái buồn ngủ và gây ra tai nạn đáng tiếc.
Nhận thấy sự cấp thiết của vấn đề trên, các hãng sản xuất xe l ớn cũng dã phát
triển những thiết bị cảnh báo như hệ thống cảnh báo mệt mỏi của Mercedes-Benz –
Autonet, BMW từng đưa ra kế hoạch về hệ thống nhận diện người lái, Toyota và một số
hãng xe Nhật Bản lại đưa ra ghế ngồi đo cảm biến áp suất tim mạch . Gần đây thì
phương pháp phát hiện buồn ngủ dựa theo chu kỳ sinh h ọc c ủa m ắt đã và đang đ ược
thực hiện như một ứng dụng của công nghệ xử lý ảnh.
Trong phạm vi đề tài này, cũng sử dụng một trong những ứng dụng c ủa x ử lý ảnh
để phát hiện và cảnh báo buồn ngủ bằng cách phát hiện trạng thái đóng/m ở c ủa m ắt.
Đặc biệt, gần đây với sự phát triển mạnh mẽ của hệ điều hành Android, và sự ph ổ bi ến
của các thiết bị cầm tay như GPS hay máy tính bảng chỉ đường trên ô tô, m ột v ấn đ ề r ất
mới của đề tài này là thực hiện trên các thi ết bị đi d ộng c ầm tay. Vì tính th ực ti ễn và s ự

Trang 2


PHẦN MỞ ĐẦU: GIỚI THIỆU CHUNG
mới mẻ của đề tài cần nhiều thời gian nghiên cứu, chúng em đã th ực hi ện và ki ểm tra
hoàn thiện giải thuật trên máy tính, sau đó chuy ển đổi ngôn ngữ và n ạp đó lên trên
thiết bị cầm tay chạy hệ điều hành Android.
Hiện tại ở Việt Nam, chưa có một dự án hay một nghiên cứu chính th ức nào v ề
vấn đề “Cảnh báo buồn ngủ bằng Camera và trên thiết bị cầm tay Android” tuy nhiên
nhu cầu về nó lại rất cấp thiết. Cho nên nhiệm vụ chính c ủa đề tài lu ận văn này là gi ải
quyết vấn đề trên và ứng dụng vào thực tế.
Đề tài được chia làm 2 phần gồm 7 chương và phụ lục:
PHẦN 1: LÝ THUYẾT TỔNG QUAN
Chương 1: Giới thiệu về thị giác máy tính
Chương 2: Các khái niệm và nền tảng xử lý ảnh
Chương 3: Một số thuật toán về nhận dạng

Chương 4: Giới thiệu về Android và máy ảo Dalvik
Chương 5: Android với OpenCV2.3.1
PHẦN 2: LẬP TRÌNH
Chương 6: Lập trình trên nền Windows
Chương 7: Lập trình trên nền Android
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong quá trình thực hiện, chắc chắn sẽ còn những thiếu sót trong đề tài. Chúng em rất
mong nhận được sự góp ý của Thầy Cô và các bạn để đề tài ngày càng hoàn thiện hơn.

Nhóm sinh viên thực hiện
Lê Thế Hải
Lê Thanh Hòa

Trang 3


Phần I

LÝ THUYẾT TỔNG QUAN

Chương
Chương
Chương
Chương
Chương

1:
2:
3:
4:

5:

Giới thiệu về thị giác máy tính
Các khái niệm và nền tảng xử lý ảnh
Một số thuật toán về nhận dạng
Giới thiệu về Android và máy ảo Dalvik
Android với OpenCV2.3.1


Chương 1

Giới thiệu về thị giác máy tính

Nội dung chính

1.1

Thế nào là thị giác máy tính

1.2

Các ứng dụng của thị giác máy tính

1.3

Các thư viện thị giác máy tính mã nguồn mở

1.4

Thư viện mã nguồn mở OpenCV


1.4.1

Tổng quan về OpenCV

1.4.2

Những khả năng của OpenCV

1.4.3

Cấu tạo của OpenCV


PHẦN I: LÝ THUYẾT TỔNG QUAN
Chương 1: GIỚI THIỆU VỀ THỊ GIÁC MÁY TÍNH
1.1

Thế nào là thị giác máy tính
Thị giác máy là một lĩnh vực đã và đang phát triển mạnh mẽ trên th ế gi ới
hiện nay. Khái niệm về thị giác máy tính – Computer Vision có liên quan t ới
nhiều ngành học và có nhiều hướng nghiên cứu khác nhau. Kể từ nh ững năm 70
của thế kỷ 20 khi mà khả năng tính toán của các máy tính tr ở nên m ạnh mẽ, nó
có thể giải quyết được những công việc cần tới tốc độ cao như xử lý các t ập ảnh
hay các đoạn video thì thị giác máy được nhắc đến, nghiên c ứu và phát tri ển cho
đến ngày nay.
Thị giác máy là một lĩnh vực rất mới mẻ đối với các nhà nghiên c ứu ở Vi ệt
nam, nó chỉ mới xuất hiện gần đây ở trong các tổ chức quân đội và m ột s ố vi ện
nghiên cứu khác. Việc áp dụng thị giác máy vào các ứng d ụng nghiên c ứu khoa
học được coi là một khởi đầu cho chặng đường phát tri ển c ủa thị giác máy ở các

trường đại học hiện nay.
Thị giác máy bao gồm lý thuyết và các kỹ thuật liên quan nh ằm m ục đích
tạo ra một hệ thống nhân tạo có thể nhận thông tin t ừ các hình ảnh thu đ ược
hoặc các tập dữ liệu đa chiều. Máy móc càng ngày càng thông minh, nó không ch ỉ
thay con người làm những công việc nặng nhọc và nhàm chán mà nó còn có m ột
số khả năng bắt chước động vật và con người. Một trong số những kh ả năng đó
là nhận biết được thế giới qua “mắt” của nó. Bằng vi ệc kết hợp v ới các mô hình
khác nữa như máy học, mạng nơron … giúp cho chúng dần tiến tới một hệ thống
nhân tạo có những quyết định linh hoạt và chính xác hơn.
Lĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc đi ểm chung là các bài
toán về thị giác máy đều không có một đề bài chung và cách gi ải quy ết duy nh ất.
Mỗi giải pháp giải quyết vấn đề được một kết quả nhất định cho nh ững tr ường
hợp cụ thể. Ta có thể thấy sự tương quan giữa thị giác máy với các lĩnh v ực khác
như sau:

Trang 6


PHẦN I: LÝ THUYẾT TỔNG QUAN
Chương 1: GIỚI THIỆU VỀ THỊ GIÁC MÁY TÍNH

Hình 1.1: Mối quan hệ giữa thị giác máy tính và các ngành liên quan
Các ứng dụng của thị giác máy tính

1.2

Một số ứng dụng của thị giác máy vào các lĩnh vực được kể đến ở đây là:
-

Điều khiển tiến trình (ví dụ: trong các robot công nghi ệp, hay các thi ết b ị,


-

xe tự hành…).
Phát hiện sự thay đổi (ví dụ: các thiết bị giám sát…).
Tổ chức thông tin (ví dụ: chỉ số kho dữ liệu các ảnh hoặc chuỗi ảnh liên

-

tục…).
Mô hình hoá đối tượng (ví dụ: quá trình ki ểm tra trong môi tr ường công

-

nghiệp, xử lý ảnh trong y học).
Tương tác (đóng vai trò làm đầu vào cho thiết bị trong quá trình t ương tác

giữa người và máy).
Các thư viện thị giác máy tính mã nguồn mở

1.3

Chúng ta có thể tận dụng những thành quả của cộng đồng mã ngu ồn m ở
để áp dụng cho ứng dụng thị giác máy của mình. Hiện nay trên thế gi ới có r ất
nhiều thư viện mã nguồn mở cho chúng ta sử dụng, cụ thể là:
OpenCV ( />OpenTL ( />OpenTLD ( />OpenGL ( />CMVision ( />ImLib3D.
Imalab.
v.v…
1.4 Thư viện mã nguồn mở OpenCV
1.4.1 Tổng quan về OpenCV

-

OpenCV là một thư viện thị giác máy tính mã nguồn m ở của Intel nó có th ể
làm đơn giản hóa công việc lập trình thị giác máy tính của bạn. OpenCV bao g ồm
Trang 7


PHẦN I: LÝ THUYẾT TỔNG QUAN
Chương 1: GIỚI THIỆU VỀ THỊ GIÁC MÁY TÍNH
nhiều khả năng tiên tiến – tìm, theo dõi, nhận dạng các b ề m ặt, l ọc Kalman, là
sự đa dạng của một hệ thống trí tuệ nhân tạo. Ngoài ra nó còn cung c ấp các c ơ
sở thuật toán thị giác máy tính thông qua các giao diện lập trình ứng dụng ở mức
thấp. Nó được đóng gói và hoàn toàn miễn phí, người dùng có thể s ẵn sàng s ử
dụng cho những mục đích khác nhau của họ.
Intel đưa ra phiên bản OpenCV đầu tiên vào năm 1999. Ban đ ầu, nó ch ỉ là
thư viện xử lý ảnh của Intel. Về sau, tính lệ thuộc đó đã được loại bỏ và bây gi ờ
bạn có thể sử dụng OpenCV như một thư viện độc lập. OpenCV là một thư viện
đa nền tảng, nó chấp nhận cả Windows và Linux, hơn thế nữa gần đây là Mac
OSX.
1.4.2 Những khả năng của OpenCV
OpenCV có nhiều chức năng, sau đây là tóm tắt các chức năng của nó:
-

Ảnh và vào ra video:
Các giao diện này cho phép bạn đọc dữ liệu ảnh từ các tập ảnh hoặc t ừ các
video. Bạn cũng có thể tạo file ảnh và video.

-

Thị giác máy tính nói chung và các giải thuật xử lý ảnh (APIs m ức th ấp và trung

bình):
Sử dụng các giao diện này, bạn có thể thí nghiệm v ới nhi ều thuật toán th ị
giác nhân tạo chuẩn mà bạn không cần viết code về chúng. Chúng bao g ồm s ự
dò tìm viền, đường thẳng và góc, điều chỉnh elip, lấy m ẫu và nh ững bi ến đ ổi
khác nhau (Fourier rời rạc, cosin rời rạc và các biến đổi khoảng cách), v.v…

-

Những module thị giác máy ở mức cao:
OpenCV bao gồm vài khả năng ở mức cao. Ngoài vi ệc dò tìm, nh ận d ạng và
theo dõi khuôn mặt nó còn bao gồm cả luồng quang hoc (sử d ụng s ự di chuy ển
động của camera để xác định cấu trúc 3D), định cỡ camera và hình khối.

-

Các giải thuật trí tuệ nhân tạo và dạy học máy:
Các ứng dụng thị giác máy tính thường đòi hỏi các phương pháp d ạy h ọc
máy hoặc trí tuệ nhân tạo (AI) khác. Một vài trong số chúng sẵn có trong gói d ạy
học máy của OpenCV.

-

Lấy mẫu ảnh và các biến đổi khung nhìn:

Trang 8


PHẦN I: LÝ THUYẾT TỔNG QUAN
Chương 1: GIỚI THIỆU VỀ THỊ GIÁC MÁY TÍNH
Nó thường có ích để xử lý một tập điểm như một khối. OpenCV bao gồm

giao diện cho những sự phân miền sao chép ảnh, xử lý ngẫu nhiên, hồi ph ục kích
thước yêu cầu, làm vênh, quay và sử dụng những hiệu ứng phối cảnh.
-

Các phương pháp tạo và phân tích ảnh nhị phân:
Ảnh nhị phân thường xuyên được sử dụng trong các hệ thống quét để
kiểm tra khuyết điểm hình dạng hay đếm các bộ phận của vật.

-

Thao tác với ảnh 3D
Các chức năng này có ích cho phép ánh xạ và sự xác đ ịnh v ị trí – hay v ới
thiết bị vật thể hoặc với nhiều dạng phép chiếu từ một camera đơn.

-

Các thuật toán xử lý ảnh, thị giác máy và hiển thị ảnh:
OpenCV bao gồm cả toán học cũ, các thuật toán đại số tuy ến tính, khoa học
thống kê và hình học tính toán.

-

Đồ họa:
Các giao diện này cho phép bạn viết chữ và vẽ trên ảnh. Thêm vào các hàm
khác nhau và khả năng sáng tạo, các hàm này có ích cho sự ghi nhãn và đánh d ấu.
Ví dụ, nếu bạn viết một chương trình dò tìm đối tượng, nó giúp ích cho các ảnh
nhãn về kích thước và vị trí của chúng.

-


Các phương pháp GUI:
OpenCV bao gồm các giao diện cửa sổ của chính nó. Trong khi đây là h ạn
chế so sánh tới cái gì có thể được làm trên mỗi nền tảng, h ọ cung c ấp API đ ơn,
nhiều nền tảng để hiển thị ảnh, chấp nhận người sử dụng nhập vào qua chuột
hay bàn phím và thực hiện điều khiển bằng thanh trượt.

-

Cấu trúc dữ liệu và thuật toán:
Với những giao diện này bạn có thể lưu trữ, tìm ki ếm, bảo lưu và thao tác
một cách hiệu nghiệm các danh sách lớn, đống, đồ thị và cây.

-

Ổn định dữ liệu:
Các phương pháp này cung cấp các giao di ện ti ện l ợi cho các ki ểu l ưu tr ữ
khác nhau của dữ liệu trên đĩa và khôi phục chúng sau.

1.4.3 Cấu tạo OpenCV
Chức năng của OpenCV được chứa trong các module khác nhau:
-

CXCORE chứa các định nghĩa kiểu dữ liệu cơ sở. Ví dụ, các cấu trúc dữ li ệu cho
ảnh, điểm và hình chữ nhật được định nghĩa trong cxtypes.h. CXCORE cũng chứa

Trang 9


PHẦN I: LÝ THUYẾT TỔNG QUAN
Chương 1: GIỚI THIỆU VỀ THỊ GIÁC MÁY TÍNH

đại số tuyến tính và phương pháp thống kê, chức năng duy trì và đi ều khi ển
-

chuỗi. Một số ít các chức năng đồ họa để vẽ trên ảnh cũng được đặt ở đây.
CV chứa các thuật toán về xử lý ảnh và định kích cỡ camera. Các ch ức năng hình

-

họa máy tính cũng được đặt ở đây.
CVAUX được mô tả trong tài liệu của OpenCV như chứa các mã cũ và thử nghiệm.
Tuy nhiên, các giao diện đơn cho sự nhận diện ảnh ở trong module này. Code sau
này chúng được chuyên dụng cho nhận diện mặt và chúng được ứng d ụng r ộng

-

rãi cho mục đích đó.
HIGHGUI và CVCAM được đặt trong cùng thư mục là “otherlibs”.
HIGHGUI chứa các giao diện vào ra cơ bản, nó cũng chứa các khả năng c ửa s ổ
mở rộng và vào ra video. CVCAM chứa các giao diện cho video truy cập qua
DirectX trên nền Windows 32 bits.

Trang 10


Chương 2

Các khái niệm và nền tảng xử lý ảnh

Nội dung chính


2.1 Cấu trúc mắt người
2.2 Không gian màu
2.2.1 Không gian màu GRAY
2.2.2 Không gian màu HSV
2.2.3 Không gian màu XYZ
2.3 Ngưỡng ảnh
2.3.1 Ngưỡng toàn cục
2.3.2 Ngưỡng thích nghi


PHẦN I: LÝ THUYẾT TỔNG QUAN
Chương 2: CÁC KHÁI NIỆM VÀ NỀN TẢNG XỬ LÝ ẢNH
2.1

Cấu trúc mắt người
Mắt là một bộ phận phức tạp của cơ thể con người. Phần rất đen của m ắt

được nối với một lớp gọi là võng mạc hoạt động gi ống nh ư film c ủa máy ảnh.
Võng mạc là một tấm màng mỏng chứa các tế bào thần kinh cảm nhận ánh sáng
nối với mặt sau của mắt. Các tế bào thần kinh cảm nhận ánh sáng c ủa võng
mạc chuyển đổi các tia sáng đi qua tròng tử thành những xung đi ện và truy ền
chúng thông qua các dây thần kinh thị giác tới vùng khá ki ến c ủa não, n ơi mà

hình ảnh được cảm nhận thấy.
Hình 2.1: Cấu tạo mắt người
Ví trí của mắt trên đầu quyết định tầm nhìn. Có 2 loại tầm nhìn, t ầm nhìn
của một mắt riêng biệt, và phần che phủ của tầm nhìn. Khi 2 m ắt ở hai bên đ ầu,
tầm nhìn hầu như toàn cảnh, nhưng có một phần mất mát về s ự c ảm nhận 3
chiều. Con người có tổng tầm nhìn từ 160 đến 208 độ, khoảng 140 đ ộ ho ặc h ơn
cho mỗi mắt.

2.2

Không gian màu
Màu được hình thành từ 2 nhân tố là thành phần màu sắc và đ ộ sáng. Giá

trị thành phần màu của một đối tượng xác định thuộc tính màu c ủa đối t ượng,
độ sáng là thuộc tính của môi trường chứa đối tượng. Đ ối với một t ấm ảnh màu
chúng ta có thể nói về giá trị của cả thành phần màu sắc và độ sáng.
Không gian màu là một mô hình toán học mô tả cách mà màu s ắc có th ể
được biểu diễn như những con số, thông thường là 3 hay 4 nhân t ố. Phát hi ện
một đối tượng bằng cách sử dụng thuộc tính màu sắc của nó có thể không chính
xác với sự thay đổi độ sáng xung quanh, khi sự thay đổi này cũng ảnh h ưởng
màu sắc biểu kiến của đối tượng. Màu của hình thường được biểu diễn trong

Trang 12


×