Ứng dụng thuật toán adaboost và hog vào hệ thống trợ lái thông minh adas để phát hiện, phân loại các phương tiện chuyển động Ứng dụng thuật toán adaboost và hog vào hệ thống trợ lái thông minh adas để phát hiện, phân loại các phương tiện chuyển động
Trang 1ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NGUYỄN THỊ MAI
ỨNG DỤNG THUẬT TOÁN ADABOOST VÀ HOG VÀO HỆ THỐNG TRỢ LÁI
THÔNG MINH ADAS ĐỂ PHÁT HIỆN, PHÂN LOẠI
CÁC PHƯƠNG TIỆN CHUYỂN ĐỘNG
Luận văn thạc sỹ kỹ thuật điều khiển tự động hóa
Thái Nguyên - 2020
Trang 2ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NGUYỄN THỊ MAI
ỨNG DỤNG THUẬT TOÁN ADABOOST VÀ HOG VÀO HỆ THỐNG TRỢ LÁI
THÔNG MINH ADAS ĐỂ PHÁT HIỆN, PHÂN LOẠI
CÁC PHƯƠNG TIỆN CHUYỂN ĐỘNG
Ngành: Kỹ thuật điều khiển và tự động hóa
Mã số: 852 02 16
Luận văn thạc sỹ kỹ thuật điều khiển tự động hóa
Người hướng dẫn khoa học
TS Lê Hùng Linh
Thái Nguyên - 2020
Trang 3LỜI CAM ĐOAN
Họ và tên: Nguyễn Thị Mai
Năm sinh: Ngày 09 tháng 06 năm 1992
Học viên lớp CĐK17A – KTĐK&TĐH,Trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu nêu trong luận văn là trung thực Những kết luận trong luận văn chưa từng được công bố trong bất kỳ công trình nào Mọi thông tin trích dẫn trong luận văn đều chỉ rõ nguồn gốc
Tác giả luận văn
Nguyễn Thị Mai
Trang 4LỜI CẢM ƠN
Tôi xin trân trọng bày tỏ lòng biết ơn sâu sắc đến thầy giáo TS Lê Hùng Linh - người đã hướng dẫn, tận tình giúp đỡ tôi hoàn thành luận văn thạc sĩ này
Tôi xin chân thành cảm ơn các thầy cô giáo ở Khoa công nghệ tự động hóa trường Đại học Công nghệ Thông tin và Truyền thông Thái Nguyên đã đóng góp nhiều ý kiến và tạo điều kiện thuận lợi cho tôi hoàn thành luận văn
Tôi xin chân thành cảm ơn Ban giám hiệu, các Khoa, Phòng chức năng trường Đại học Công nghệ Thông tin và Truyền thông Thái Nguyên đã tạo những điều kiện thuận lợi nhất về mọi mặt để tôi hoàn thành khóa học!
Tác giả luận văn
Nguyễn Thị Mai
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
MỤC LỤC ii
DANH SÁCH HÌNH VẼ v
LỜI CẢM ƠN ii
LỜI MỞ ĐẦU 1
Chương 1: KHÁI QUÁT CÔNG NGHỆ VÀ HỆ THỐNG TRỢ LÁI THÔNG MINH 3
1.1 TỔNG QUAN VỀ HỆ THỐNG TRỢ LÁI THÔNG MINH 3
1.2 HỆ THỐNG PHÁT HIỆN VÀ PHÂN LOẠI CÁC PHƯƠNG TIỆN DI ĐỘNG 6
1.2.1 Phương pháp phát hiện dựa trên hình dạng 7
1.2.2 Phương pháp phát hiện dựa trên máy học 9
1.3 NGUYÊN TẮC THU THẬP VÀ XỬ LÝ DỮ LIỆU CỦA HỆ THỐNG ADAS 9
1.3.1 Thuật toán học tập dựa trên AdaBoost 11
1.3.2 Tính năng Haar-Like 12
1.3.3 Cấu trúc tầng để phát hiện nhanh đối tượng 13
1.3.4 Luồng phát hiện 13
1.4 KẾT LUẬN CHƯƠNG 1 15
Chương 2: ĐỀ XUẤT MÔ HÌNH TRỢ LÁI THÔNG MINH 16
2.1 NGUYÊN TẮC KIỂM SOÁT DỮ LIỆU CỦA HỆ THỐNG 16
2.2 PHẦN MỀM CHO HỆ THỐNG TRỢ LÁI THÔNG MINH 17
2.2.1 Tổng quan về visual studio 2010 17
2.2.2 Tổng quan về phần mềm mô phòng OpenCV 20
2.3 THUẬT TOÁN ADABOOST VÀ HOG 28
2.3.1 Thuật toán AdaBoost 28
2.3.2 Thuật toán HOG 38
2.4 MÔ HÌNH HỆ THỐNG TRỢ LÁI THÔNG MINH ĐƯỢC ĐỀ XUẤT 48
Trang 62.5 KẾT LUẬN CHƯƠNG 2 53
Chương 3: ĐÁNH GIÁ HIỆU SUẤT VÀ SO SÁNH 54
3.1 YÊU CẦU CỦA HỆ THỐNG VÀ CẤU TRÚC CHƯƠNG TRÌNH 54
3.2 NGUYÊN TẮC VẬN HÀNH, THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG 54
3.3 CÁC KẾT QUẢ THỬ NGHIỆM 57
3.4 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 61
3.5 KẾT LUẬN CHƯƠNG 3 62
KẾT LUẬN VẦ KIÊN NGHỊ 63
TÀI LIỆU THAM KHẢO 64
Trang 7DANH SÁCH HÌNH VẼ
Hình 1.1 Tầm nhìn của một ô tô đang di chuyển trên đường 3
Hình 1.2 Hệ thống camera lắp ở đầu xe 4
Hình 1.3 Hệ thống cảnh báo mất tập trung 5
Hình 1.4 Các vị trí của một đề cử điểm ảnh cho tâm đối tượng [6] 7
Hình 1.5 Nhân các góc gradient của một tam giác với 3 [6] 8
Hình 1.6 Ví dụ về các tính năng Haar-like Những tính năng đơn giản này tương tự như Chức năng cơ sở Haar 11
Hình 1.7 Vùng xác định trong điểm ảnh gốc 12
Hình 1.8 Cấu trúc tầng của hệ thống 13
Hình 1.9 Bước nhảy của quá trình phát hiện vật [7] 14
Hình 2.1 Cấu trúc Visual Studio 2010 17
Hình 2.2 Thiết lập cấu hình 18
Hình 2.3 Quá trình phát triển của OpenCV 21
Hình 2.4 Cấu trúc cơ sở của OpenCV 22
Hình 2.5 Boosting 30
Hình 2.6 Các khái niệm cơ bản được sử dụng trong phát hiện đối tượng AdaBoost [8] 33
Hình 2.7 Sơ lược về quy trình phân loại dựa trên AdaBoost [9] 36
Hình 2.8 Các giai đoạn của thuật toán [9] 37
Hình 2.9 Ảnh input và hai đạo hàm của nó 39
Hình 2.10 Tổng quan về các bước trừ nền 43
Hình 2.11 Hình nền được tạo ra từ ảnh gốc 48
Trang 8Hình 2.12 Một ví dụ minh họa của bộ mô tả HOG 49
Hình 2.13 Cấu trúc tầng của các giai đoạn phân loại 50
Hình 2.14 Bốn đặc trưng Haar-like 51
Hình 2.15 Tính toán tổng các điểm ảnh bên trong hình chữ nhật D 52
Hình 3.1 Các mẫu đào tạo dương và âm trong tập dữ liệu đào tạo 55
Hình 3.2 Kỹ thuật ROI được đề xuất trong đề tài 56
Hình 3.3 Các kết quả được phát hiện bởi thuật toán đề xuất 59
Hình 3.4 So sánh hiệu suất của phương pháp đề xuất và phương pháp khác 60
Trang 9LỜI MỞ ĐẦU
Xử lý ảnh 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ể tiếp 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 Đối với mỗi người chúng ta, quá trình nhận thức bên ngoài là một điều dễ dàng, quá trình nhận thức đó được học thông qua quá trình sống của mỗi người Tuy nhiên với các vật vô tri vô giác như máy tính, robot… thì điều đó quả thật là một bước tiến gian nan Các thiết bị ngày nay không chỉ nhận thông tin ở dạng tín hiệu đơn lẻ mà còn có thể có cái nhìn thật với thế giới bên ngoài Cái nhìn này qua quá trình phân tích, kết hợp với các mô hình như máy học, mạng noron… sẽ giúp cho thiết bị tiến dần tới một hệ thống nhân tạo có khả năng quyết định linh hoạt và đúng đắn hơn rất nhiều OpenCV là thư viện mã nguồn mở về xử lí ảnh của Intel nó đáp ứng đầy đủ các yêu cầu đó của lĩnh vực xử lý ảnh
Trên thế giới lĩnh vực công nghiệp, nghiên cứu đã ứng dụng xử lý ảnh phát triển vô cùng mạnh mẽ và có được những bước tiến kinh ngạc Ở Việt Nam lĩnh vực này đang rất phát triển, tuy nhiên việc sử dụng xử lý ảnh trong công nghiệp còn rất mới mẻ và non yếu do thiếu thiết bị hỗ trợ, tài liệu nghiên cứu Vì vậy đây sẽ là một hướng phát triển mới đầy hứa hẹn và cũng không ít thách thức Với mong muốn tham gia vào lĩnh vực còn mới này và góp phần
vào sự phát triển xử lý ảnh ở Việt Nam, tôi thực hiện đề tài “ Ứng dụng thuật toán ADABOOST và HOG vào hệ thống trợ lái thông minh ADAS
để phát hiện, phân loại các phương tiện chuyển động”
Trang 10NỘI DUNG LUẬN VĂN ĐƯỢC CHIA LÀM 3 CHƯƠNG Chương 1 Khái quát công nghệ và hệ thống trợ lái thông minh Chương 2 Đề xuất phương án trợ lái thông minh
Chương 3 Đánh giá hiệu suất và so sánh.
Với thời gian và kiến thức có hạn, luận văn không thể tránh khỏi sai sót Rất mong được sự góp ý của các thầy cô, bạn bè và đồng nghiệp
Tôi xin chân thành cảm ơn!
Thái Nguyên, ngày tháng năm 2020
Tác giả luận văn
Nguyễn Thị Mai
Trang 11Chương 1: KHÁI QUÁT CÔNG NGHỆ VÀ HỆ THỐNG TRỢ LÁI
THÔNG MINH
1.1 TỔNG QUAN VỀ HỆ THỐNG TRỢ LÁI THÔNG MINH
Nhạy bén ở mọi giác quan:
Tránh tai nạn và giảm thiểu hậu quả tai nạn: đây là phương pháp tiếp cận tích hợp được sử dụng trong nghiên cứu tai nạn của Mercedes-Benz dưới khẩu hiệu
"Cuộc sống thực sự an toàn" Theo thuật ngữ chung "Lái xe thông minh", Mercedes-Benz theo đuổi chiến lược này một cách hệ thống với nhiều hệ thống hỗ trợ mới, tính năng tăng cường và hệ thống bảo vệ sáng tạo Hệ thống lái thông minh Mercedes-Benz biến chiếc xe hơi của bạn thành một "bạn đồng hành thông minh":
xe có thể phát hiện hầu hết các nguy hiểm và hỗ trợ thông qua cảnh báo bằng hình ảnh, âm thanh hoặc xúc giác, đồng thời có thể thúc đấy phản ứng của lái xe Một số
hệ thống thậm chí đưa ra hành động khắc phục trong trường hợp khẩn cấp như tự động phanh để tránh tai nạn hoặc giảm nhẹ độ nghiêm trọng - do đó lái xe có thể thả lỏng và thoải mái hơn Tổ hợpcác cảm biến và hệ thống thông minh và tân tiến này
là một dấu mốc quan trọng để lái xe tự động và không tai nạn
Hình 1.1 Tầm nhìn của một ô tô đang di chuyển trên đường
Trang 12Mạng lưới thông minh:
Các chức năng mới đều dựa trên hệ thống cảm biến hiện có, bao gồm một stereo camera mới và cảm biến ra-đa nhiều bậc Chúng đóng vai trò là đôi mắt và đôi tai của xe Với stereo camera đa năng (SMPC) mới, camera stereo dành cho công nghệ "Vision 6D" và tầm ngắn, phạm vi quan sát của chiếc xe được tăng lên rất nhiều Camera cung cấp thông tin về không gian phía trước xe tối đa 50 mét và ghi nhận môi trường 500 mét phía trước Các xe đang lái phía trước, phương tiện đang đến và đi ngang qua, người đi bộ cũng như các biển báo giao thông và dải phân cách đều được phát hiện và xử lý Các dữ liệu từ các cảm biến ra-đa tầm ngắn được định vị xung quanh xe cũng như từ các cảm biến ra-đa tầm xa với khả năng phát hiện tầm trung cung cấp thông tin về khoảng cách từ đối tượng phát hiện Các thông tin từ hệ thống camera và ra-đa được biên soạn trong bộ thiết bị điều khiển, tại đó thông tin được kết hợp với nhau một cách thông minh "Tổ hợp cảm biến" này cho phép phối hợp hiệu quả công nghệ an toàn chủ động và thụ động trên xe
Hình 1.2 Hệ thống camera lắp ở đầu xe
Trang 13Hệ thống tư duy tương lai:
Dưới đây là một tổng quan về các hệ thống hỗ trợ mới có chức năng đã cải thiện đáng kể giúp giảm bớt áp lực cho lái xe khi xe đang ở trong đường và hệ thống có thể tự động một phần đi theo xe các xe trước, dừng xe và lưu thông Nhờ camera quan sát, hệ thống hỗ trợ phanh kết hợp với tính năng dự đoán va chạm khi
có phương tiện băng qua đường giúp phát hiện phương tiện giao thông và người đi
bộ băng qua đường cũng như cảnh báo lái xe phanh xe Nếu các vạch dấu làn đường
là nét đứt, hỗ trợ duy trì làn đường có thể phát hiện khi làn đường liền kề có xe, đặc biệt có phương tiện đang đi tới, và giảm nguy cơ xe vô ý lấn khỏi làn đường bằng cách áp dụng hệ thống phanh ở một bên Hệ thống hỗ trợ đèn pha chủ động cho phép đèn pha chùm chính chiếu sáng liên tục mà không gây chói cho người tham gia giao thông khác Với sự hỗ trợ của một camera ảnh nhiệt, hệ thống hỗ trợ quan sát ban đêm có thể cảnh báo cho lái xe những nguy hiểm tiềm ẩn từ người đi bộ hoặc động vật ở các khu vực không có ánh sáng Hệ thống cảnh báo mất tập trung bây giờ có thể cảnh báo lái xe khi không tập trung và buồn ngủ trên một phạm vi tốc độ mở rộng
Hình 1.3 Hệ thống cảnh báo mất tập trung
Trang 141.2 HỆ THỐNG PHÁT HIỆN VÀ PHÂN LOẠI CÁC PHƯƠNG TIỆN DI ĐỘNG
Phân loại ảnh là một bài toán đã và đang thu hút được sự quan tâm của các nhà nghiên cứu và phát triển, được ứng dụng rộng rãi nhiều ứng dụng hữu ích như: tìm kiếm ảnh, nhận dạng, theo dõi và phát hiện đối tượng Trong giám sát đối tượng chuyển động từ video chẳng hạn như giám sát phương tiện giao thông, thì phân loại ảnh là bài toán kế tiếp sau bài toán phát hiện đối tượng chuyển động Cách tiếp cận phổ biến của bài toán phân loại ảnh là đối sánh ảnh, tức là tìm ra những vùng giống nhau trên hai ảnh dựa trên những điểm đặc trưng Khi đó bài toán đối sánh ảnh sẽ quy về bài toán so sánh các đặc trưng trích chọn Các đặc trưng cho phép biểu diễn ảnh đã được nghiên cứu bao gồm đường biên vùng ảnh, điểm ảnh đặc trưng, lược đồ xám,
Có hai vấn đề cơ bản thường đặt ra trong bài toán đối sánh ảnh:
Một là, làm sao có thể biểu diễn thông tin một cách hiệu quả nhằm thực hiện việc đối sánh hai ảnh nhanh nhất có thể;
Hai là, làm thế nào để giải pháp đối sánh vẫn hoạt động hiệu quả khi có sự thay đổi của môi trường: nhiễu trong quá trình thu nhận ảnh, sự thay đổi về ánh sáng, sự che khuất,
Các phương pháp đối sánh ảnh dựa trên đối sánh các điểm đặc trưng được đề xuất rất nhiều và đạt được sự thành công đáng kể Tuy nhiên để đạt được một độ chính xác nhất định, các phương pháp này đều đòi hỏi rất nhiều thời gian tính toán Trong những ứng dụng thời gian thực như giám sát giao thông tự động, việc đưa ra một phương pháp đối sánh ảnh thực hiện trong thời gian thực là một công việc cần thiết
Đề tài nghiên cứu này trình bày và giới thiệu một phương pháp tiếp cận phân loại mạnh mẽ đối với ô tô và xe máy trong ảnh giao thông Đóng góp cơ bản trong bài toán này là đề xuất một phương pháp phát hiện và phân loại các phương tiện di
Trang 15động cho hệ thống trợ lái thông minh áp dụng cho việc nhận dạng và phân loại đối tượng
1.2.1 Phương pháp phát hiện dựa trên hình dạng
Phát hiện biển báo giao thông dựa trên hình dạng có nhiều cách tiếp cận đã được công bố trong nhiều tài liệu hiện nay Tuy nhiên có lẽ phương pháp dựa trên hình dạng phổ biến nhất là sử dụng phép biến đổi Hough
Phép biến đổi Hough là một kĩ thuật dùng để xác định một hình dạng ngẫu nhiên trong ảnh Ý tưởng cơ bản là sử dụng một cạnh của ảnh, mỗi điểm ảnh của cạnh ảnh có khả năng là tâm của đối tượng nếu như điểm ảnh đó nằm trên biên Kĩ
thuật này sớm ra đời trong lịch sử thị giác máy tính (computer vision) Nó đã được
mở rộng và thay đổi nhiều lần với nhiều biến thể khác nhau Ở đây chúng ta chỉ trình bày về nghiên cứu của Loy và Barnes, và nó được x là phương pháp hiệu quả cho việc nhận dạng biển báo giao thông Loy và Barnes đã đề xuất bộ phát hiện đa giác đều tổng quát và chỉ sử dụng nó để phát hiện biển báo giao thông Bộ phát hiện dựa trên phép biến đổi đối xứng xuyên tâm, về mặt tổng quan nó tương tự như phép biến đổi Hough Đầu tiên ta tính đạo hàm cấp một của ảnh từ ảnh gốc Ảnh đạo hàm cấp một sau đó được phân ngưỡng để cho các điểm có biên độ thấp bị loại bỏ Các điểm ảnh còn lại có khả năng là vị trí của tâm đa giác đều Một điểm ảnh đóng vai trò là điểm có khả năng được chọn trên nhiều vị trí được phân bổ dọc theo đường trực giao với đạo hàm cấp một của điểm ảnh và có khoảng cách đến các điểm ảnh là
tương đương với các bán kính của đa giác đều (X hình 1.4) Lưu ý rằng thật sự có
tới hai đường thẳng có thể thỏa mãn yêu cầu này, một là cùng hướng với đạo hàm
và một là theo hướng ngược lại Cả hai đều có thể sử dụng nếu chúng ta không thể biết trước liệu biển báo này sáng hơn hay tối hơn so với quang cảnh nền
Hình 1.4 Các vị trí của một đề cử điểm ảnh cho tâm đối tượng [6]
Trang 16Chiều dài của đường biểu quyết được bao bởi bán kính của đa giác đều Các điểm ảnh được chọn ở cuối đường thẳng có trọng số tiêu cực, để tối thiểu hóa ảnh hưởng của các đường thẳng trong ảnh mà dài quá để có thể x như là một cạnh của
đa giác Kết quả ảnh đề cử được gán nhãn là
Ngoài ảnh đề cử ra, một ảnh khác được gọi là ảnh đẳng giác được tạo Thủ tục được đề xuất như sau: Nếu góc đạo hàm của các điểm ảnh trên cạnh của một đa giác đều mặt –sided) được nhân với , thì kết quả các góc sẽ bằng nhau (X hình 1.5) Ví dụ, xét một tam giác đẳng giác và thử một giá trị góc đạo hàm tại mỗi bên Giả sử chúng ta có được các giá trị đạo hàm của 730, 1930, và 3130 Các đạo hàm được cách nhau một khoảng = 1200 Sau đó 730 x 3 = 2190 và 1930 x 3 = 5790,
5790 – 3600 = 2190 Tương tự như vậy 3130 x 3 = 9390, 9390 – 2 x 3600 = 2190 Với từng điểm ảnh được chọn là tâm của đa giác, một vector đơn vị được tạo ra Độ dốc (slope) của vector đơn vị được cho bằng với góc đạo hàm của điểm ảnh nhân với số mặt của đa gia đều Các điểm ảnh sau đó một lần nữa được chọn trên những vị trí được mô tả bằng một đường thẳng đề cử, ngoại trừ đề cử mang dạng của một vector đơn vị Các điểm được chọn được biểu diễn trong một ảnh mới gọi là ảnh đẳng giác Từng điểm trong ảnh đại diện cho một vector là tổng của các điểm được chọn đóng góp Các điểm được chọn từ các cạnh của đa giác đẳng giác sẽ có cùng độ dốc (slope), do đó độ lớn của các vector được chọn trong trọng tâm đa giác đẳng giác sẽ
là lớn nhất
Hình 1.5 Nhân các góc gradient của một tam giác với 3 [6]
Kết quả các góc sẽ bằng nhau
Cuối cùng, ảnh đề cử và định mức của ảnh đẳng giác được kết hợp để tạo ra
đáp ứng tổng thể Độ phức tạp của phương thức này là O(Nkl,) trong đó l là độ dài
Trang 17cực đại của đường thẳng được chọn, N là số lượng điểm ảnh có trong ảnh và k là số
lượng bán kính đang được x xét
Khuyết điểm chính của hướng tiếp cận này là bán kính của đa giác phải được biết trước, và đây không bao giờ là điều dễ thực hiện Ở đây có thể được giải quyết bằng cách thử nhiều bán kính nhưng nó tiêu tốn quá nhiều thời gian xử lý
1.2.2 Phương pháp phát hiện dựa trên máy học
Với phương pháp tiếp cận dựa trên hình dạng thì để giải quyết bài toán phải
tự giải quyết bằng tay Tuy nhiên, với kiến thức này cũng có thể được phát hiện bằng cách dùng máy học
Nghiên cứu của Viola và Jones là một cột mốc quan trong trong lĩnh vực thị
giác máy tính Viola và Jones đã phát triển một thuật toán có khả năng xác định một đối tượng trong thời gian thực Bộ phát hiện được huấn luyện bằng cách sử dụng một tập các mẫu tích cực và tiêu cực chứa các mẫu dương và mẫu âm Nghiên cứu gốc chỉ dành cho việc phát hiện khuôn mặt, tuy nhiên nhiều nhà nghiên cứu khác cũng đã ứng dụng thành công bộ phát hiện cho nhiều đối tượng khác Trong số đó, nhiều phương tiện cũng như các biển báo giao thông cũng được phát hiện thành công
Bộ phát hiện của Viola và Jones kết hợp giữa hai khái niệm Adaboost và bộ phân lớp Haar-like
1.3 NGUYÊN TẮC THU THẬP VÀ XỬ LÝ DỮ LIỆU CỦA HỆ THỐNG ADAS
Phát hiện vật thể, thường được sử dụng như một bước trong các hệ thống nhận diện mặt người đi bộ, là một thách thức gần đây trong lĩnh vực thị giác máy tính Lược đồ phát hiện đối tượng được đề xuất bởi Viola và Jones, một trong những thuật toán dựa trên AdaBoost được sử dụng rộng rãi nhất, đạt được tỷ lệ phát hiện cao và nhanh chóng phát triển Khung phát hiện của họ sử dụng không chỉ cho khuôn mặt, mà còn cho cả người đi bộ và các phương tiện đang di chuyển
Trang 18Để đạt được các hệ thống thực tế để nhận dạng hình ảnh, thời gian thực xử lý
là không thể thiếu, và một số phương pháp nhanh để phát hiện đối tượng đã được đề xuất để đạt được xử lý như vậy Ví dụ, thư viện Computer Vision của Intel Open source (OpenCV), cung cấp nhiều chức năng tiện lợi cho các thuật toán xử lý hình ảnh phổ biến và các thuật toán thị giác máy tính trên các hệ thống dựa trên PC, có thể xử lý nhanh chóng với các chức năng được tối ưu hóa cao cho CPU Vì có giới hạn về cách xử lý nhiều có thể được tăng tốc với một bộ xử lý đơn lẻ, những tiến bộ hơn nữa phải đạt được thông qua việc thực hiện trên các hệ thống tính toán song song, chẳng hạn như bộ xử lý đa nhân hoặc đa lõi bộ vi xử lý
Mặt khác, xử lý nhận dạng hình ảnh theo thời gian thực là bắt buộc đối với các hệ thống nhúng, ví dụ: ô tô, hệ thống bảo mật và thiết bị di động Để sử dụng trong các hệ thống nhúng, chúng ta phải xử lý được thời gian thực trong hệ thống Tuy nhiên, các phương pháp được mô tả ở trên không phù hợp với mục đích này vì chúng đòi hỏi tiêu thụ điện năng cao hoặc trong các hệ thống lớn
Một số ví dụ về phần cứng chuyên dùng cho phát hiện đối tượng đã được đề xuất Tuy nhiên, không có công việc nào khai thác hiệu quả tính song song của thuật toán phát hiện đối tượng đạt được tỷ lệ phát hiện cao và xử lý nhanh Trong đó
để phát triển một hệ thống nhúng hiệu quả, có hai tính năng quan trọng Đầu tiên là phân tích thuật toán phát hiện chi tiết Chúng ta phải chọn thuật toán phù hợp nhất
để thực hiện dựa trên phần cứng đã phân tích như vậy Vì hiệu suất cần thiết và hạn chế của các nguồn lực rất khác nhau tùy thuộc vào hệ thống ta muốn tạo ra, một thiết kế kiến trúc duy nhất không đủ
Đề xuất phát hiện đối tượng nhanh và mạnh mẽ bằng cách sử dụng một biến thể của thuật toán AdaBoost cho cả hai chọn các tính năng và đào tạo trình phân loại Trong kế hoạch của Viola và Jone, phương pháp trích xuất tính năng được gọi
là “tính năng Haar-like” được sử dụng đối với các bộ phân loại yếu và cấu trúc tầng của một trình phân loại được giới thiệu để đạt được phát hiện nhanh chóng Chi tiết của từng phương pháp được mô tả như sau
Trang 191.3.1 Thuật toán học tập dựa trên AdaBoost
Để phát hiện đối tượng từ một hình ảnh đầu vào, cần phải phân loại để xác định x khu vực nào là đối tượng mục tiêu Một chức năng phân loại có thể đạt được bằng phương pháp máy học, sử dụng một số lượng lớn các hình ảnh để đào tạo phân loại Một số đề án đã được đề xuất để đạt được chức năng phân loại theo máy học
Ví dụ, Sung và Poggio sử dụng hỗn hợp các mô hình Gaussian cùng Rowley và cộng sự đã sử dụng một tập hợp nhỏ các tính năng hình ảnh đơn giản và mạng thần kinh Osuna et al đã sử dụng máy vectơ hỗ trợ Yang và các cộng sự đề xuất một hình ảnh đại diện ban đầu và sử dụng phương pháp học tập Winnow
Mặt khác, Viola và Jones đã sử dụng thuật toán AdaBoost, là một trong những máy học được đề xuất Vì phát hiện đối tượng đòi hỏi một số lượng lớn phân loại khu vực mục tiêu, yêu cầu cho mỗi khu vực phải nhỏ
Hình 1.6 Ví dụ về các tính năng Haar-like Những tính năng đơn giản này tương tự như Chức năng cơ sở Haar
Thuật toán dựa trên AdaBoost có thể đạt được phân loại chính xác với ít chi phí tính toán nếu các tính năng đầy đủ được chấp nhận
Trang 20Thuật toán học AdaBoost được sử dụng để tăng hiệu suất phân loại của một thuật toán học tập đơn giản Với thuật toán này, một trình phân loại cao được xây dựng bằng cách kết hợp nhiều phân loại yếu Trình phân loại cao được biểu diễn dưới dạng tuyến tính kết hợp các kết quả có trọng số của các phân loại yếu này và trọng số cho các phân loại yếu được đào tạo với nhiều hình ảnh ở các hình dạng khác nhau
1.3.2 Tính năng Haar-Like
Đối với các bộ phân loại yếu trong thuật toán AdaBoost, Viola và Jones sử dụng các tính năng Haar-like, có thể phát hiện một cạnh hoặc một đường thẳng và giống với hàm cơ sở Haar Các ví dụ được thể hiện trong hình 1.6 Các tính năng Haar-like thu được từ hình ảnh đầu vào bằng các thao tác sau Đầu tiên, tổng các giá trị pixel trong màu trắng và bên trong các vùng màu đen trong hình 1.6 được tính toán, và sau đó là sự khác biệt của các trọng số trong các khu vực này được tính toán Nếu sự khác biệt vượt quá ngưỡng được xác định trước, bộ phân loại yếu phát hiện, có nghĩa là một tính năng cạnh tồn tại Nếu không, bộ phân loại đầu ra của trình phân loại sai Bằng cách kết hợp các bộ phân loại yếu này, để tăng mạnh phân loại có thể phát hiện các đối tượng phức tạp hơn Tính toán tổng các giá trị pixel trong màu trắng và hình chữ nhật màu đen được tăng tốc bằng cách sử dụng hình ảnh tích phân
Các hình ảnh tích phân tại vị trí chứa tổng của pixel trong vùng được xác định bởi một điểm gốc và điểm (x hình 1.7)
Hình 1.7 Vùng xác định trong điểm ảnh gốc
Trang 211.3.3 Cấu trúc tầng để phát hiện nhanh đối tượng
Để đạt được phát hiện nhanh đối tượng, Viola và Jones đã đề xuất một cấu trúc xếp tầng của một trình phân loại là một chuỗi các bộ phân lớp giai đoạn Mặc
dù phân loại chính xác là khó khăn và đòi hỏi một số lượng lớn của các trình phân loại yếu, ngoại trừ các vùng phủ định rõ ràng có thể đạt được với một vài phân loại đơn giản hơn Cách tiếp cận khai thác thực tế này và đặt các trình phân loại đơn giản hơn từ chối hiệu quả phần lớn các cửa sổ phụ trước khi các bộ phân loại phức tạp thực hiện phân loại chính xác Các cấu trúc tầng được thể hiện trong hình 1.8 của một số trình phân loại giai đoạn, bao gồm các trình phân loại yếu Các cửa sổ phụ được đánh giá tuần tự bởi các bộ phân loại giai đoạn và quy trình tiếp theo chỉ được gọi nếu giai đoạn ban đầu trả về tích cực Cấu trúc tầng này giảm đáng kể thời gian xử lý vì trình phân loại được đào tạo để nhanh chóng từ chối các cửa sổ phụ không phải đối tượng và chi tiêu nhiều tính toán hơn trên các vùng giống như đối tượng đầy hứa hẹn
Hình 1.8 Cấu trúc tầng của hệ thống
1.3.4 Luồng phát hiện
Phát hiện được thực hiện trên mỗi hình chữ nhật vùng được gọi là cửa sổ con, quét toàn bộ hình ảnh đầu vào trong các bước Ở đây, là yếu tố tỷ lệ của các cửa sổ phụ và là bước cố định bất kể yếu tố tỷ lệ Viola và Jones đạt được phát hiện các đối tượng có kích thước lớn bằng cách mở rộng các cửa sổ phụ Bước nhảy của quá trình phát hiện như sau
Trang 22Bước 1: Tạo ra một hình ảnh tích phân từ một hình ảnh gốc
Bước 2: Đối với tất cả các cửa sổ phụ trong hình ảnh đầu vào
Bước 2.1: Bắt đầu với giai đoạn xếp tầng
Bước 2.2: Đánh giá các bộ phân loại yếu trong giai đoạn như sau:
+, Tính toán tính năng Haar-like cho từng phân loại yếu bằng cách sử dụng hình ảnh tích phân
+ Trả về đúng nếu đối tượng vượt quá ngưỡng đối tượng địa lý hoặc sai khác
Bước 2.3: Nếu tổng trọng số của các bộ phân loại yếu trong giai đoạn vượt quá ngưỡng, sau đó cập nhật và đi đến 2b Trong trường hợp của giai đoạn cuối cùng, đầu ra đúng và đi đến 3 Nếu tổng không vượt quá ngưỡng, xuất sai và chuyển đến 3
Bước 3: Thay đổi hệ số tỷ lệ của các cửa sổ phụ, và lặp lại Bước 2
Hình 1.9 Bước nhảy của quá trình phát hiện vật [7]
Trang 231.4 KẾT LUẬN CHƯƠNG 1
Chương này trình bày một số phương pháp tiếp cận cơ bản trong việc phát hiện, nhận dạng vật thể đã được áp dụng trong nhiều đề tài nghiên cứu đồng thời phân tích nguyên tắc thu thập và xử lý dữ liệu của hệ thống ADAS Thông qua đó chọn lựa và xác định những thuật toán, công nghệ phù hợp để xây dựng đề tài
Trang 24Chương 2: ĐỀ XUẤT MÔ HÌNH TRỢ LÁI THÔNG MINH
2.1 NGUYÊN TẮC KIỂM SOÁT DỮ LIỆU CỦA HỆ THỐNG
Phát hiện đối tượng theo thời gian thực đang trở nên cần thiết với số lượng lớn các ứng dụng liên quan đến thị giác và hình ảnh máy tính, bảo mật, tin sinh học
và một số lĩnh vực khác Việc triển khai phần mềm hiện tại của các thuật toán phát hiện đối tượng là bị hạn chế ở các hình có độ phân giải thấp và dựa vào điều kiện thuận lợi trong khung hình để đạt được tỷ lệ khung hình phát hiện trong thời gian thực Nỗ lực thiết kế kiến trúc phần cứng đã mang lại những kết quả khích lệ, nhưng chủ yếu hướng đến một ứng dụng duy nhất, nhắm mục tiêu tới các môi trường hoạt động cụ thể Do đó, cần có một kiến trúc phần cứng có khả năng phát hiện một số đối tượng trong các ảnh có độ phân giải cao và có thể được sử dụng trong một số các tình huống phát hiện đối tượng Luận văn đề xuất sử dụng một kiến trúc chung, linh hoạt, phù hợp cho tất cả các phạm vi của các ứng dụng phát hiện đối tượng và kích thước hình ảnh Kiến trúc phát hiện và phân loại đối tượng dựa trên thuật toán AdaBoost, được coi là một trong những thuật toán phát hiện đối tượng hiệu quả nhất Thông qua việc lập trình, mô phỏng và thực thi quy mô lớn, kiến trúc có thể phát hiện các đối tượng trong các ảnh có độ phân giải cao (lên đến 1024 x 768 pixel) với tốc độ khung hình có thể thay đổi giữa 64–139 khung hình / giây cho các ứng dụng khác nhau
Phát hiện đối tượng trong video và hình ảnh là một hoạt động quan trọng trong một số ứng dụng nhúng, chẳng hạn như ứng dụng xử lý hình ảnh và máy tính, tin sinh học, an ninh, và trí tuệ nhân tạo Phát hiện đối tượng liên quan đến trích xuất thông tin từ một hình ảnh, xử lý thông tin và xác định x liệu thông tin chứa một đối tượng cụ thể và vị trí chính xác của nó trong hình ảnh Quá trình này được tính toán chuyên sâu, và một số ứng dụng đã được thực hiện để thiết kế dựa trên phần cứng các thuật toán phát hiện đối tượng, đặc biệt là trong ngữ cảnh của các hệ thống thời gian thực và nhúng Điều này đặc biệt được nhấn mạnh trong các ứng dụng quan trọng về an toàn như các hoạt động tìm kiếm và cứu nạn, các ứng dụng y sinh
Trang 25học (như phẫu thuật nội soi), giám sát cơ sở hạ tầng quan trọng và một số ứng dụng khác Có một số thuật toán được sử dụng để thực hiện phát hiện đối tượng, mỗi thuật toán trong đó có những ưu và nhược điểm riêng Luận văn này đề đề xuất thêm một số kỹ thuật mới như ROI, đường cơ sở phát hiện tọa độ của đối tượng nhằm tăng tốc độ xử lý cho thuật toán phát hiện AdaBoost Ngoài ra, để giảm tỷ lệ phát hiện lỗi trên mỗi khung hình đề tài này đề xuất thêm chiến lược đào tạo cho thuật toán nhận dạng như là: bổ sung thêm các mẫu dương và âm cùng với các tập mẫu hiện tại, hiệu chỉnh thay đổi các tầng trong quá trình đào tạo máy học Mô hình được đề xuất trong đề tài này có khả năng phát hiện đối tượng ở tốc độ cao 55 khung hình/giây với tỷ lệ phát hiện là 99.4% và một tỷ lệ cảnh báo lỗi thấp 4.08%
2.2 PHẦN MỀM CHO HỆ THỐNG TRỢ LÁI THÔNG MINH
2.2.1 Tổng quan về visual studio 2010
2.2.1.1 Giới thiệu visual studio 2010
Hình 2.1 Cấu trúc Visual Studio 2010
Visual Studio là bộ công cụ hoàn chỉnh cho phép xây dựng cả các ứng dụng cho máy để bàn lẫn các ứng dụng web doanh nghiệp theo nhóm Ngoài khả năng xây
Trang 26dựng những ứng dụng desktop tốc độ cao, bạn còn có thể sử dụng các công cụ phát triển mạnh mẽ dựa trên thành phần cùng các công nghệ khác nhằm đơn giản hóa thiết kế, phát triển và triển khai các giải pháp doanh nghiệp theo nhóm
2.2.1.2 Ứng dụng Visual studio
- Sử dụng tính năng trong Visual Studio 2010 để quản lý cơ sở dữ liệu
Trong quá trình phát triển phần mềm, không ít lập trình viên gặp trở ngại khi phải làm việc với cơ sở dữ liệu SQL Server, vì không phải ai cũng có cài đặt SQL Managent để làm việc, để viết các câu lệnh truy vấn và tạo bảng dữ liệu.Vấn đề là
để thực hiện những điều này, máy tính lập trình viên phải được cài đặt SQL Managent, và công cụ để truy xuất trực tiếp vào cơ sở dữ liệu đề tạo bảng, viết câu lệnh truy vấn hay thực hiện viết các hàm, thủ tục
Hình 2.2 Thiết lập cấu hình
Một số tính năng trong sản phẩm này cung cấp cho lập trình viên một công
cụ chuyên nghiệp để có thể thao tác với cơ sở dữ liệu Một số tính năng đó là:
Mô hình hóa yêu cầu phần mềm:
Việc mô tả các giao tác của người dùng trong hệ thống được xác định dựa trên các tác nhân của hệ thống và các giao tác tương ứng, mối quan hệ giữa tác nhân
Trang 27và giao tác, tác nhân và tác nhân, giao tác và giao tác như quan hệ kế thừa, quan hệ phụ thuộc, quan hệ <<include>>, quan hệ <<extend>> và một số quan hệ khác Ngoài ra, các module trong hệ thống phần mềm được xác định dựa trên nhóm các giao tác có cùng mục đích, mỗi nhóm các giao tác này xác định một module hay một gói (package) trong hệ thống
Sơ đồ hoạt động thể hiện các qui trình nghiệp vụ trong tổ chức, doanh nghiệp, ví dụ như quy trình cho vay trong các ngân hàng Việc sử dụng sơ đồ hoạt động mô tả luồng dữ liệu từ một thao tác đến một thao tác khác Sơ đồ hoạt động được hỗ trợ trong Visual Studio 2010 thể hiện sự tương tác giữa các thao tác với nhau dựa trên việc gửi, nhận và chấp thuận của các thao tác Các luồng dữ liệu Vào
- Ra (Input/Output) được dùng để mô tả sự nhập và xuất của dữ liệu trong mỗi thao tác, sự kiện Với nhiều ký tự để mô tả các sự kiện như bắt đầu, kết thúc, các cấu trúc lặp và nhiều thao tác xử lý khác đều được hỗ trợ trong Visual Studio 2010, việc thực hiện xây dựng một sơ đồ hoạt động được thực hiện hoàn toàn nhanh chóng và tiện lợi thông qua việc kéo thả các đối tượng từ thanhcông cụ
Mô hình hóa kiến trúc phần mềm:
Công việc kiến trúc phần mềm ứng dụng là công việc xác định cấu trúc hoàn chỉnh của toàn hệ thống phần mềm, bao gồm việc xác định chức năng, các vấn đề
kỹ thuật, dữ liệu và triển khai, khung nhìn chung về hệ thống, các thành phần luận
lý của dữ liệu và mối quan hệ giữa các thành phần này Qua đó sẽ xác định và kiến lập kiến trúc dự kiến cho phần mềm, xác lập thứ tự ưu tiên, mức độ quan trọng của các thành phần trong hệ thống, các lớp để xác định được các vấn đề về chức năng
và phi chức năng của hệ thống Visual Studio 2010 hỗ trợ UML Modeling Project ứng dụng trong suốt giai đoạn kiến trúc ứng dụng của vòng đời phát triển phần mềm
Trong Visual Studio 2010, việc xây dựng các sơ đồ UML được thực hiện bằng một trong hai cách sau:
Sử dụng UML Model Project (.modelproj)
Trang 28Sử dụng Net Code Project
Các chức năng của phần mềm ứng dụng được mô hình hóa thành các tầng luận lí thể hiện khung nhìn toàn cảnh về phần mềm như Presentation, Business, Data Access, Database/Persistence, mô tả mối quan hệ tương tác, phụ thuộc giữa các thành phần với nhau Trong khi, Visual Studio 2010 không hỗ trợ sơ đồ thể hiện chức năng, phạm vi kỹ thuật của phần mềm, mà thay vào đó thì sơ đồ phân tầng trong mô hình kiến trúc ứng dụng hỗ trợ mô tả kiến trúc các tầng trong hệ thống
Mỗi tầng luận lí trong sơ đồ kiến trúc thể hiện một hệ thống con hay một thành phần của toàn hệ thống Trong suốt quá trình phát triển ứng dụng, các thành phần cài đặt mã nguồn như UI, Business, Data Access tại Visual Studio Solution Explorer được ánh xạ từ từng tầng riêng biệt của sơ đồ phân tầng trong giai đoạn thiết kế kiến trúc ứng dụng Nếu mã nguồn của mỗi tầng kiến trúc không gắn kết, đảm bảo sự kết nối với các hành phần khác của sơ đồ phân tầng ứng dụng, vấn đề rắc rối này sẽ được kiểm soát với tùy chọn “Architecture Validation” bằng cách phải chuột lên sơ đồ phân tầng (Layer Diagram)
2.2.2 Tổng quan về phần mềm mô phòng OpenCV
OpenCV viết tắt của Open Source Computer Vision Library, là một thư viện mã nguồn mở (open source) Thư viện được viết bằng ngôn ngữ C và C++
có thể chạy trên các hệ điều hành Linux, Window và Mac OS X OpenCV được thiết kế để nâng cao hiệu suất tính toán và nhấn mạnh đến hệ thống thời gian thực Một điều tuyệt vời của OpenCV là nó đưa ra một hệ thống đơn giản, dễ sử dụng giúp mọi người nhanh chóng xây dựng các ứng dụng trong thị giác máy, kể cả các
hệ thống kiểm tra trong nhà máy, bức ảnh trong lĩnh vực y học, bảo mật, rô bốt học v v Nó chứa các lập trình xử lý ảnh rất đơn giản, kể cả thực thi các hàm bậc cao như dò tìm khuôn mặt, theo dõi khuôn mặt, nhận dạng khuôn mặt, lọc Kalman
Trang 29Kể từ khi được giới thiệu vào tháng 1 năm 1999, OpenCV đã được sử dụng trong rất nhiều ứng dụng, các sản phẩm và các nghiên cứu Ví dụ trong lĩnh vực hàng không vũ trụ, bản đồ web, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh, hệ thống dò tìm, theo dõi tự động và hệ thống bảo mật, quản lý hệ thống sản xuất, xử lý camera, ứng dụng trong quân sự, hệ thống hàng không không người lái, trên mặt đất, các tàu ngầm Ngoài ra, nó còn được sử dụng trong nhận dạng âm thanh OpenCV còn là một chìa khóa quan trọng trong các rô bốt sử dụng thị giác máy như Stanford, Asimo
Hình 2.3 Quá trình phát triển của OpenCV
Lý do để lựa chọn Open CV
Thị trường thị giác máy đang ngày càng mở rộng và liên tục phát triển Thư viện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dàng hơn đặc
biệt tối ưu khi sử dụng cấu trúc của Intel Tạo ra các mẫu ứng dụng bằng các thư viện được cập nhật thường xuyên và thực hiện được các thuật toán rất nặng như dò tìm khuôn mặt
Có rất nhiều công nghệ hiện đại và các công ty lớn sử dụng thư viện OpenCV trong ứng dụng của mình (điển hình như Intel, Microsoft, IBM, Siens,
Trang 30Google v v.) và các trung tâm nghiên cứu như (Stanford, MIT, CMU, Cambridge, INRIA…)
Hơn 14000 thành viên trên forum OpenCVyahoogroups.com với trung bình 10 đến 20 bức thông điệp được trao đổi hàng ngày
Điều đó có thể khẳng định OpenCV thực sự đã góp phần vô cùng lớn trong lĩnh vực thị giác máy
Cấu trúc và nội dung OpenCV
Để hiểu OpenCV làm việc như thế nào chúng ta bắt đầu từ sự phân chia cấu trúc và nội dung của OpenCV ở 5 phần Cấu trúc của OpenCV được chia thành 5 phần chính, 4 trong số đó được chỉ ra trong hình 6
CV (computer vision) là thành phần chứa những xử lý ảnh cơ sở và thuật toán thị giác máy ở mức cao
MLL (machine learning library) là thư viện machine learning, cái này bao gồm rất nhiều lớp thống kê và gộp các công cụ xử lý
HighGui chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh video
CXCore chứa cấu trúc và nội dung dữ liệu cơ sở
Hình 2.4 Cấu trúc cơ sở của OpenCV
Trang 31Các hàm I/O trong OpenCV
OpenCV cung cấp các hàm mà cho phép chúng ta tương tác trực tiếp với hệ điều hành, các file hệ thống, các phần cứng như Webcam Các hàm này nằm trong thư viện HighGUI, HighGUI cho phép mở một window, hiển thị bức ảnh, đọc các file liên quan đến đồ hoạ (ảnh, video) các file ảnh như jpg, bmp v v các file video như avi, wma, mp4, dat v v Ngoài ra nó còn xử lý các sự kiện chuột, bàn phím, OpenCV còn cho phép chúng ta lựa chọn thuật toán linh động hơn bằng cách cung cấp các hàm tạo thanh trượt slider, switch v v Để làm việc với OpenCV trước hết phải học các hàm trong thư viện này
Thư viện HighGUI có thể chia thành 3 phần: phần cứng, phần file hệ thống và phần GUI (Graphical User Interface) chúng ta có thể x xét các phần trong thư viện HighGUI như sau
Phần cứng: là phần thiết yếu nhất, liên quan đến hoạt động của Camera, trong phần lớn hệ điều hành việc tương tác với phần cứng rất khó khăn và thực sự rất khó nhưng OpenCV cung cấp hàm đơn giản để thực hiện việc tương tác này ví dụ: cvCaptureFromCAM()
Phần file hệ thống: là khái niệm liên quan đến việc tải và lưu ảnh, một đặc điểm rất tuyệt vời trong thư viện HighGUI là cho phép chúng ta làm việc với ảnh tương tự khi làm việc với video Vì vậy chúng ta có thể nhanh chóng tiếp cận với việc xử lý ảnh mà không mất nhiều thời gian cho việc tải, lưu ảnh, video
Phần GUI: là hệ thống cửa sổ (Window), thư viện cung cấp một số hàm đơn giản mà cho phép chúng ta mở một window hiển thị ảnh trên window này Ngoài
ra nó còn cho phép chúng ta thực thi các sự kiện nhận được từ chuột và bàn phím Một số hàm đơn giản thường xuyên sử dụng trong thư viện HighGUI như sau:
Trang 32- Đầu tiên chúng ta cần học cách làm thế nào để đọc và viết các files ảnh, chụp video chuyển đổi giữa các định dạng màu, và truy cập dữ liệu điểm ảnh tất
cả qua giao diện OpenCV
- Đọc và viết một bức ảnh
- Bức ảnh vào/ra thì rất dễ dàng trong OpenCV, để đọc một file ảnh, đơn giản gọi hàm cvLoadImage(tên file) OpenCV hỗ trợ hầu hết các định dạng phổ biến kể cả JPEG, PNG và BMP Bạn không cần cung cấp thông tin định dạng cvLoadImage() tự động quyết định dạng file thông qua file header này
- Để viết một bức ảnh đến một file, ta dùng hàm cvSaveImage() Hàm này cũng tự quyết định file định dạng, để sử dụng từ tên file mở rộng
- Cả cvLoadImage và cvSaveImage đều nằm trong module HighGUI
- Khi bạn sử dụng xong bức ảnh đầu vào nhận được từ cvLoadImage(), loại bỏ nó bằng hàm cvReleaseImage() Hàm này đưa ra một địa chỉ của con trỏ giống đầu vào của nó bởi việc nó làm là loại bỏ an toàn (Safe Release) Nó chỉ loại bức ảnh này khi bức ảnh là non-null Sau khi loại bỏ xong nó đặt giá trị con trỏ về 0
- Làm việc với Video tương tự như là việc với ảnh
- Nhận các frame từ một webcam, hay các thiết bị video số khác thì dễ dàng như tải nó lên từ một file có sẵn Để nhận một khung từ camera ta chỉ việc thay cvCreateFileCapture() bằng hàm cvCreateCameraCapture()
- Chúng ta có thể tạo cvCapture*Object với cvCreateFileCapture() Chúng
ta sử dụng cvQueryFrame () để nhận từng frame và cvWaitkey(33) để chờ 33ms giữa từng frame Chúng ta sử dụng cvReleaseCapture() để loại bỏ capture khi ngừng sử dụng
- Copy một bức ảnh
- Lưu trữ bức ảnh trong OpenCV
Trang 33- OpenCV lưu bức ảnh giống cấu trúc C, IplImage, Ipl viết tắt của image processing library
Kiểu dữ liệu Ipl Image được định nghĩa trong CXCORE Thêm vào dữ liệu ảnh thực, nó chứa một số đặc điểm để mô tả như sau:
- Width - độ rộng bức ảnh tính theo pixel
- Height - độ cao bức ảnh tính theo pixel
- Depth - một kiểu tiền định nghĩa chỉ rõ lượng bits/pixel/channel
Các hàm thực hiện xử lý ảnh
Thư viện HighGUI chỉ cung cấp các hàm thực hiện vào ra bức ảnh tuy nhiên vấn đề xử lý ảnh mới thực sự là quan trọng và khó khăn OpenCV cung cấp các hàm thực hiện xử lý ảnh nằm trong thư viện cv Một bức ảnh không chỉ đơn giản là một mảng giá trị màu sắc khi chúng ta đề cập đến xử lý ảnh thì nó đã bao gồm các hàm xử lý liên quan đến cấu trúc của bức ảnh
Một số hàm xử lý ảnh thường xuyên sử dụng như sau:
- Smoothing (làm mịn)
Smoothing hay còn gọi là blurring nó là một thuật toán xử lý ảnh đơn giản
và thường xuyên sử dụng Có rất nhiều nguyên nhân chúng ta dùng đến smoothing nhưng nó thường dùng để loại bỏ nhiễu do máy ảnh sinh ra Smoothing quan trọng khi bạn muốn giảm độ phân giải của một bức ảnh theo rất nhiều cách khác nhau
Bằng việc thay thế kiểu smooth và các thông số sẽ có các bức ảnh tương đối khác nhau tuy theo mục đích sử dụng nhưng thường dùng nhất vẫn là CV_GAUSSIAN
- Image morphology (hình thái học bức ảnh)
OpenCV cung cấp hàm chuyển đổi morphology nhanh chóng và tiện lợi khi làm việc với bức ảnh Cơ bản của morphology là dilation (giãn) và erosion (co)
Trang 34chúng ngày càng được sử dụng rộng rãi trong việc loại bỏ nhiễu, cô lập những thành phần riêng rẽ, và liên kết các thành phần với nhau
- Theshold (ngưỡng)
Chúng ta thường làm rất nhiều bước xử lý ảnh khác nhau và đưa ra những quyết định cuối cùng về điểm ảnh trên một bức ảnh hay nói cách khác là loại bỏ giá trị phía trên hoặc dưới một ngưỡng nào đó giữ lại nhưng điểm ảnh nằm trong khoảng giá trị mong muốn lúc đó ta dùng hàm threshold
- Các hàm Histograms and Matching
+ Histogram
Trong việc phân tích hình ảnh thông tin về đối tượng và video, chúng ta thường muốn biểu diễn chúng giống như là một histogram Histogram có thể sử dụng để biểu diễn rất nhiều dạng khác nhau như phân bố màu của đối tượng, độ dốc mẫu cạnh của một đối tượng, hay xác suất phân bố vị trí của đối tượng
Tìm histogram được sử dụng rất nhiều trong các chương trình ứng dụng thị giác máy tính Histogram được sử dụng để dò tìm sự thay đổi giữa các cảnh trong video bằng cách đánh dấu khi cạnh và màu sắc thay đổi từ khung này đến khung khác Chúng sử dụng để nhận dạng nhưng điểm quan tâm trên một bức ảnh bằng cách gán mỗi điểm ảnh một “tag” chứa những Histogram của những đặc điểm gần nhất Histogram của cạnh, màu, góc và rất nhiều đặc điểm khác Một chuỗi các màu sắc, cạnh có thể dùng để xác nhận dù có hay không một video
đã được copy trên web
+ Ghép mẫu tplate matching
Hàm ghép cvMatchTplate() không dựa trên histogram, hơn nữa, hàm này ghép một bức ảnh thực đến một bức ảnh đầu vào bằng cách “Sliding” đường dẫn qua bức ảnh đầu vào này sử dụng thao tác ghép mô tả trong phần này
- Hàm Contours
Trang 35Mặc dù thuật toán như dò tìm cạnh candy có thể sử dụng để tìm ra cạnh pixel để phân bức ảnh thành các phần khác nhau Bước tiếp theo là xây dựng các cạnh này thành contours
- Cơ sở toán học của thuật toán CamShift
Camshift viết gọn của “Continuously Adaptive Mean Shift” là cơ sở của thuật toán theo dõi khuôn mặt trong OpenCV Nó bao gồm thuật toán cơ sở Mean Shift với thích ứng các bước thay đổi kích cỡ của vùng Nhân là một hàm step đơn giản nằm trong một bản đồ vỏ xác suất (skin-probability) Vỏ xác suất của mỗi một điểm ảnh được tính toán dựa trên màu sắc bằng cách sử dụng một phương pháp gọi là Histogram backprojection Màu sắc được đưa ra như Hue từ
mô hình màu HSV
Kể từ nhân là một hàm step, Mean Shift ở mỗi một lần lặp thì chỉ đơn giản
là giá trị trung bình x và y của vỏ xác suất đóng góp trong vùng hiện tại Điều này được xác định bằng cách chia moment thứ nhất của vùng này cho moment thứ không ở mỗi lần lặp và dịch chuyển vùng đến trọng tâm xác suất
Sau khi Mean Shift hội tụ đến một vị trí (x,y), phạm vi của vùng được cập nhật dựa trên giá trị hiện tại của moment thứ 0 Giá trị của bản cập nhật này có thể thay đổi, phạm vi tuyến tính của nó được giả định là tỉ lệ thuận với căn bậc 2 của tổng của các khoản đóng góp xác suất của khu vực hiện tại (ví dụ Moment thứ không) Chiều rộng và chiều dài tại thời điểm thứ i sẽ được tính thông qua giá trị tại thời điểm thứ i-1, nghĩa là giá trị trước đó
Trong thuật toán CamShift, một bức ảnh về xác suất phân bố màu sắc của bức ảnh trong chuỗi video được tạo ra Đầu tiên nó tạo ra một mẫu mô tả hue
sử dụng một biểu đồ màu sắc (color Histogram) và sử dụng không gian màu Hue Saturation Value (HSV) được tham chiếu từ không gian màu tiêu chuẩn RGB Vì phân bố màu sắc của các bức ảnh trong video thay đổi theo thời gian, nên thuật toán CamShift đã được sửa đổi để dễ dàng thích ứng với sự thay đổi phân bố xác suất màu sắc của mục tiêu nó theo dõi
Trang 36Trong OpenCV thuật toán CamShift được điều chỉnh từ thuật toán Mean Shift Và nó đươc tính toán như sau:
+ Chọn vị trí ban đầu của Search Window
+ Dùng thuật toán Mean Shift (lặp lại một hoặc nhiều lần), lưu moment thứ 0 + Đặt kích cỡ của cửa sổ tìm kiếm bằng một hàm của moment thứ 0 tìm được trong bước 2
- Lặp lại bước 2 và 3 cho đến khi hội tụ (vị trí dịch chuyển chính ít hơn giá trị threshold hiện tại)
2.3 THUẬT TOÁN ADABOOST VÀ HOG
2.3.1 Thuật toán AdaBoost
Thuật toán tăng tốc Adaboost là thuật toán máy học được cải tiến từ thuật toán Boosting Với ưu điểm là khả năng phát hiện đối tượng nhanh chóng, cài đặt đơn giản và dễ dàng, không có các tham số để điều chỉnh và không cần kiến thức về
bộ học yếu do đó thuật toán tăng tốc Adaboost được sử dụng nhiều trong các ứng dụng về nhận dạng
- Tiếp cận Boosting
Boosting là kĩ thuật nâng cao độ chính xác cho các thuật toán máy học Năm
1989, Schaire đã đưa ra các chứng minh đầu tiên về thuật toán boosting Và một năm sau đó Freund đã phát triển thuật toán boosting một cách hiệu quả hơn rất nhiều, mặc dù vẫn còn nhiều hạn chế trong thực tế và chỉ tối ưu trong một số trường hợp Các thực nghiệm đầu tiên với thuật toán boosting được thực hiện bởi Drucker,
Schapire và Simard trong chương trình nhận dạng ký tự quang học (OCR_Optical
Character Recognition) Mãi đến năm 1995 thuật toán AdaBoost mới chính thức
được công bố bởi Freund và Schapire
Nguyên lý cơ bản của thuật toán Boosting là kết hợp các bộ phân loại yếu
(weak classifiers) thành một bộ phân loại mạnh (strong classifier) Trong đó bộ