Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
1,98 MB
Nội dung
18CS00120 TRƢỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN ĐINH VIẾT HƢNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Tên đồ án: NGHIÊN CỨU VỀ OPENCV VÀ ỨNG DỤNG VÀO BÀI TỐN TRÍCH CHỌN VÙNG BIỂN SỐ XE Ô TÔ Ở VIỆT NAM Vinh, 1/2016 Đồ án tốt nghiệp đại học TRƢỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Tên đồ án: NGHIÊN CỨU VỀ OPENCV VÀ ỨNG DỤNG VÀO BÀI TỐN TRÍCH CHỌN VÙNG BIỂN SỐ XE Ô TÔ Ở VIỆT NAM Sinh viên thực hiện: Giáo viên hướng dẫn: Đinh Viết Hƣng - MSSV: 1151073692 Lớp 52K2 ThS Nguyễn Thị Hồng Anh Vinh, 1/2016 Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học LỜI CẢM ƠN Lời cho phép em gửi lời cảm ơn sâu sắc tới tồn thể Thầy, Cơ giáo Khoa Công Nghệ Thông Tin từ Đại học Vinh, ngƣời truyền đạt cho chúng em kiến thức quý báu bổ ích suốt năm học vừa qua Để hoàn thành đƣợc đồ án này, đặc biệt em xin đƣợc bày tỏ biết ơn sâu sắc xin chân thành cảm ơn Cô Nguyễn Thị Hồng Anh, giảng viên Khoa Công Nghệ Thông Tin Trƣờng Đại học Vinh, trực tiếp bảo, tận tình giúp đỡ hƣớng dẫn em suốt trình để hồn thành đồ án tốt nghiệp Trong thời gian làm việc với Cô, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà cịn học tập đƣợc tinh thần làm việc, thái độ học tập nghiêm túc, hiệu quả, điều cần thiết cho em q trình học tập cơng tác sau Em xin gửi lời cám ơn Thầy, Cô giáo tổ môn Khoa Học Máy Tính Khoa Cơng nghệ thơng tin Trƣờng Đại học Vinh Sau xin gửi lời cảm ơn chân thành tới gia đình, bạn bè động viên, đóng góp ý kiến giúp đỡ em trình học tâp, nghiên cứu hoàn thành đồ án tốt nghiệp Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học MỤC LỤC LỜI CẢM ƠN MỤC LỤC .2 CHƢƠNG GIỚI THIỆU VỀ THƢ VIỆN MÃ NGUỒN MỞ OPENCV VÀ TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE 1.1 Giới thiệu thƣ viện mã nguồn mở OpenCV 1.1.1 Giới thiệu OpenCV 1.1.2 Hƣớng dẫn sử dụng OpenCV Window 1.2 Khái niệm nhận dạng biển số xe 1.2.1 Khái niệm ứng dụng 1.2.2 Phân loại biển số xe 10 1.3 Một số hƣớng giải toán phát biển số xe 13 1.3.1 Hƣớng tiếp cận phát triển vùng 13 1.3.2 Hƣớng tiếp cận dò biên biến đổi Hough 14 1.3.3 Hƣớng tiếp cận phát biên Heuristic: 14 1.4 Hƣớng giải đề tài .15 CHƢƠNG PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE 17 2.1 Một số khái niệm 17 2.2 Biên phƣơng pháp phát biên 17 2.2.1 Khái niệm biên 17 2.2.2 Các phƣơng pháp phát biên 17 2.3 Phát vùng chứa biển số xe 20 2.3.1 Biến đổi hình thái học 20 2.3.2 Tìm xác vùng chứa biển số 22 CHƢƠNG CHƢƠNG TRÌNH TRÍCH CHỌN VÙNG BIỂN SỐ 26 3.1 Giới thiệu lớp 26 3.2 Giao diện chƣơng trình 28 3.3 Kết thực nghiệm 31 KẾT LUẬN 35 TÀI LIỆU THAM KHẢO 36 Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học LỜI MỞ ĐẦU Hiện Việt Nam, cơng tác quản lý phƣơng tiện giao thơng nói chung quản lý ôtô, xe máy vô phức tạp… nhƣ công tác phát hiện, xử phạt hành vi vi phạm giao thông, chống trộm,… gặp nhiều khó khăn Để giải vấn đề trên, nhu cầu đặt phải có hệ thống tự động thực công việc nhân dạng biển số xe, có khả “đọc” “hiểu” biển số xe cách tự động Một hệ thống nhận dạng nhƣ có nhiều ứng dụng thực tiễn nhƣ: trạm cân xe tự động, trạm thu phí tự động, bãi gửi xe tự động v.v Tuy nhiên các hệ thống Việt Nam lại chƣa đƣợc sử dụng nhiều Cũng nhƣ hệ thống tự động khác, việc nhận dạng biển số xe bao gồm yêu cầu phần cứng phần mềm Phần cứng thiết bị thu nhận ảnh camera hay máy ảnh), ảnh thu đƣợc đƣợc phần mềm xử lý đƣa vào nhận dạng Việc nhận dạng bao gồm khâu: tách biển số xe nhận dạng kí tự Trong phạm vi đề tài này, dừng lại việc trích chọn vùng biển số xe tơ dị tìm vùng biển số - Detection license plate) sử dụng thƣ viện mã nguồn mở OpenCV Bố cục trình bày báo cáo nghiên cứu gồm phần: Chƣơng 1: Giới thiệu thƣ viện mã nguồn mở OpenCv tổng quan toán nhận dạng biển số xe Trong chƣơng này, em xin giới thiệu thƣ viện mã nguồn mở OpenCV khái niệm nhận dạng vùng biển số xe, số ứng dụng toán nhận dạng biển số, phân loại biển số xe Việt Nam, số hƣớng giải toán nhận dạng biển số xe hƣớng giải đề tài Chƣơng 2: Phát vùng chứa biển số xe Trong chƣơng này, em xin trình bày khái niệm phát biển số xe số phƣơng pháp phát biển số xe Chƣơng 3: Xây dựng chƣơng trình, đánh giá kết Trong chƣơng này, em xin trình bày chƣơng trình thực nghiệm xây dựng đƣợc toán phát vùng chứa biển số xe đánh giá kết Mặc dù cố gắng, nhiên thời gian thực chƣa nhiều kiến thức nhiều hạn chế nên khơng tránh khỏi sai sót, mong nhận đƣợc góp ý từ quý thầy cô bạn bề để đề tài hồn thiện tốt Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học CHƢƠNG GIỚI THIỆU VỀ THƢ VIỆN MÃ NGUỒN MỞ OPENCV VÀ TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE 1.1 Giới thiệu thƣ viện mã nguồn mở OpenCV 1.1.1 Giới thiệu OpenCV OpenCV (Open Source Computer Vision) thƣ viện mã nguồn mở thị giác máy tính với 500 hàm 2500 thuật toán đƣợc tối ƣu xử lí ảnh, vấn đề liên quan đến thị giác máy OpenCV đƣợc thiết kế cách tối ƣu, sử dụng tối đa sức mạnh dịng chíp đa lõi… để thực phép tính toán thời gian thực, nghĩa tốc độ đáp ứng đủ nhanh cho ứng dụng thông thƣờng OpenCV thƣ viện đƣợc thiết kế để chạy nhiều tảng khác (cross-patform), nghĩa chạy hệ điều hành Windows, Linux, Mac, iOS… Việc sử dụng thƣ viện OpenCv tuân theo quy định sử dụng phần mềm mã nguồn mở BSD ta sử dụng thƣ viện cách miễn phí cho mục đích thƣơng mại lẫn phi thƣơng mại Dự án OpenCV đƣợc khởi động từ năm 1999, đến năm 2000 đƣợc giới thiệu hội nghị IEEE vấn đề thị giác máy tính nhận dạng, nhiên OpenCV 1.0 mà tới tận 2006 thức đƣợc cơng bố năm 2008 1.1 pre-release đƣợc đời Tháng 10 năm 2009, OpenCV hệ thứ hai đời thƣờng gọi 2.x), phiên có giao diện C++ (khác với phiên trƣớc có giao diện C) có nhiều khác biệt so với phiên thứ Thƣ viện OpenCv ban đầu đƣợc hỗ trợ từ Intel, sau đƣợc hỗ trợ Willow Garage, phịng thí nghiệm chun nghiên cứu công nghệ robot Cho đến nay, OpenCV thƣ viện mở, đƣợc phát triển tổ chức phi lợi nhuận none - profit foundation) đƣợc hƣởng ứng lớn từ cộng đồng Thông tin chi tiết OpenCV tham khảo trang chủ: http://opencv.willowgarage.com/wiki/ 1.1.2 Hướng dẫn sử dụng OpenCV Window Trƣớc hết ta cần download thƣ viện OpenCV máy tính,tốt hết download địa chỉ: http://sourceforge.net/projects/opencvlibrary/ phiên tùy chọn http://opencv.org/downloads.html Chọn Build sẵn phù hợp với hệ điều hành dùng OpenCV đƣợc sử dụng báo cáo Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học 2.4.10 đƣợc Update lần cuối vào ngày tháng 10 năm 2014 Sau download máy ta tiến hành cài đặt bình thƣờng, ta để mặc định thƣ mục cài đặt C:\ Thƣ mục cài đặt xong dẽ có dạng C:\opencv Tiếp theo ta tiến hành tùy chỉnh để làm việc với OpenCV qua Microsoft Visual Studio Phiên Visual Studio sử dụng phiên Visual Studio 2010: Tạo project mới: New > Project, cửa sổ New Project chọn Visual C++, Win32 console application Đặt tên project opencv Chọn OK, sau nhấn Next,hộp thoại xuất hiện,ở hộp thoại ta chon Application Type Console application Additional options Empty project, nhấn Finish để kết thúc trình khởi tạo Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học Project tạo project hoàn toàn trống,ta phải thêm vào file nguồn để chƣơng trình chạy.trong Solution Explorer, ta click chuột phải vào Source Files,chọn Add -> New Item Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học Hộp thoại Add New Item ra, ta chọn kiểu Cần thêm vào C++ File cpp) đồng thời ô Name ta đặt tên cho file thêm vào, giả sử FirstApp.cpp.Bây giở file ta thêm vào #include gọi hàm main ) để chạy chƣơng trình Để chƣơng trình chạy đƣợc với thƣ viện OpenCV ta cần tùy chỉnh lại sơ thuộc tính project nhƣ sau: Vào Project -> Properties nhấn tổ hợp phím Alt + F7) để mở hộp thoại Properties Hộp thoại opencv Property Pages ra, mục Configuration Properties chọn VC++ Directories, tƣơng ứng bên phải, ta tìm mục Include Directories Library Directories Ta đƣờng dẫn hai thƣ mục đến phần tƣơng ứng thƣ viện OpenCV Mục Include Directories, ta tùy chỉnh ô bên phải tới C:\opencv\build\include Mục Library Directories trỏ đến thƣ mục C:\opencv\build\x86\vc10\lib nhƣ ta sử dụng hệ điều hành 32bit C:\opencv\build\x64\vc10\lib cho hệ điều hành 64bit Tiếp theo, hộp thoại opencv Property Pages -> Configuration Properties > Linker, chọn Input, tƣơng ứng ô bên phải, thêm vào giá trị cho mục Additional Dependencies opencv_core243d.lib, opencv_imgproc243d.lib, opencv_highgui243d.lib Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học Chú ý lib thêm vào tƣơng ứng với header ta khai báo chƣơng trình, tùy thuộc vào mục đích sử dụng mà ta thêm vào lib nhau, giả sử ta cần sử dụng tới hàm video, ta thêm vào header #include phần Additional Dependencies ta phải khai báo thêm opencv_video243d.lib Chữ d đứng cuối file thể ta hoạt động chế độ debug, ta thêm lib khơng có chữ “d” cuối nhƣ Opencv_core243.lib… chế độ release Tuy nhiên học tập cần nhiều chỉnh sửa ta nên để chế độ debug Cuối cùng, dịch xong chƣơng trình, để chạy đƣợc ta cần ý tới file *.dll Cách đơn giản ta copy file *.dll tƣơng ứng nhƣ opencv_core243d.dll, opencv_imgproc243d.dll) vào thƣ mục chứa file chạy chƣơng trình file *.exe) Các file *.dll nằm mục C:\opencv\build\x86\bin với win 32 bit C:\opencv\build\x64\bin với win 64 bit Với phiên OpenCV cũ hơn, ta cần copy file tbb_debug.dll chế độ debug) tbb.dll (trong chế độ release) vào thƣ mục chứa file *.exe tbb.dll Thread building block) file quan trọng, thiếu chƣơng trình báo lỗi Sau hoàn tất việc dẫn thƣ mục chứa header, library link tới library tƣơng ứng, ta include header opencv vào chƣơng trình gọi hàm làm việc OpenCV #include #include #include #include using namespace std; using namespace cv; void main() { …… } Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT Đồ án tốt nghiệp đại học cvThreshold( IplImage *src,// Ảnh gốc IplImage *dst, // Ảnh đích double threshold, // ngƣỡng xám double max_value, int threshold_type // kiểu nhị phân hóa ); Hình 2.3: Ảnh nhị phân 2.3.2 Tìm xác vùng chứa biển số a) Lọc c c vùng thỏa mãn Sau nhị phân hóa ảnh ta thực trƣợt hình chữ nhật có kích thƣớc 8x16 tồn ảnh Khu vực có khả biển số đƣợc xác định mật độ pixel khu vực Cứ khu vực thỏa mãn, ta lƣu lại xóa vùng khơng thỏa mãn Điều kiện thỏa mãn nhƣ sau: > 15 điểm ảnh / hình chữ nhật x 16 Đinh Viết Hưng - Lớp 52K2 - Khoa CNTT 22 Đồ án tốt nghiệp đại học Hình 2.4: Ảnh sau hi lọc c c vùng thỏa mãn b) Tỉ lệ rộng/d i Sau có ảnh lọc vùng thỏa mãn, ta tiến hành thao tác giãn ảnh làm nhòe để làm bật vùng chứa biển số Sau xét tỉ lệ rộng/dài vùng vừa đƣợc xác định công đoạn trên: if(2.6