Đăng ký Đăng nhập

Tài liệu Toanvandetai

.DOCX
54
344
72

Mô tả:

Hệ thống nhận dạng biển số xe sử dụng công cụ Open CV
MỤC LỤC Contents MỤC LỤC........................................................................................................1 DANH MỤC HÌNH ẢNH...............................................................................3 MỞ ĐẦU..........................................................................................................5 1. Lý do chọn đề tài:............................................................................................5 2. Giới hạn đề tài:................................................................................................6 3. Mục tiêu:..........................................................................................................6 4. Phương pháp nghiên cứu:..............................................................................6 5. Ý nghĩa khoa học và thực tiễn của đề tài......................................................7 6. Bố cục đề tài:...................................................................................................7 CHƯƠNG 1: NGHIÊN CỨU TỔNG QUAN................................................8 1.1. Bài toán Nhận dạng biển số xe Ôtô.........................................................8 1.2.1.2. Tổ chức thư viện OpenCV:..................................................................8 1.2.2. Cài đặt OpenCV 3.1 trên Visual C++ 2015:........................................9 CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG ỨNG DỤNG.............................14 2.1. Chụp ảnh bằng camera.............................................................................14 2.1.1. Độ phân giải ( resolution)...................................................................14 2.1.2. Số điểm ảnh ( CCD Total Pixels ).......................................................14 2.1.3. Điều kiện hoạt động của thiết bị:.......................................................14 2.1.3.1 Cường độ ánh sáng nhỏ nhất (Minimum Illumination):.....................14 2.1.3.2. Nguồn cung cấp (Power Supply):......................................................14 2.2. Xác định vùng chứa biển số xe và tách biển số.......................................15 2.2.1. Tổng quan về tách biển số:.................................................................15 2.2.2. Tìm vùng màu trắng:..........................................................................18 2.2.3. Xác định vùng chứa biển số:..............................................................21 2.2.4. Cắt vùng chứa biển số:........................................................................22 2.2.5. Tìm vùng chứa ký tự:..........................................................................23 1 2.2.6. Cắt biển số chính xác:.........................................................................25 2.3. Phân đoạn ký tự.........................................................................................27 2.3.1. Tổng quan về phân đoạn ký tự:.........................................................27 2.3.2. Nhị phân biển số xe:............................................................................27 2.3.3. Phân đoạn ký tự:.................................................................................29 2.3.3.1. Tách riêng từng ký tự.........................................................................29 2.3.3.2. Các giai đoạn cắt ký tự.......................................................................30 2.4. Nhận dạng ký tự.........................................................................................31 2.4.1. Tổng quát nhận dạng ký tự:...............................................................31 2.4.2. Lựa chọn phương pháp:.....................................................................32 2.4.2.1. Phương pháp nhận dạng sử dụng độ tương quan chéo (cross correlation):.....................................................................................................32 2.4.2.2. Phương pháp ứng dụng SVM (Surport Vector Machine):..................32 2.4.3. Mô hình SVM (Surport Vector Machine):........................................33 2.4.3.1. Thuật toán chặt khúc..........................................................................33 2.4.3.2. Thuật toán phân rã..............................................................................33 2.4.3.3. Thuật toán SMO.................................................................................34 2.4.4. Cách thức hoạt động của SVM(Surport Vector Machine)..............34 2.4.4.1. Khái niệm về phương pháp SVM.......................................................34 2.4.4.2. Cách thức hoạt động của mô hình SVM............................................35 2.4.4.3. Tính toán đặc trưng trong ảnh............................................................35 2.4.4.4. Huấn luyện mô hình SVM..................................................................36 CHƯƠNG 3: PHÁT TRIỂN ỨNG DỤNG..................................................42 3.3. DEMO chương trình............................................................................45 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN...................................................46 KẾT QUẢ THỬ DEMO CỦA HỆ THỐNG...............................................47 TÀI LIỆU THAM KHẢO............................................................................49 2 3 DANH MỤC HÌNH ẢNH 4 Số hình Tên hình Trang Hình 1.2.1.2 Tổ chức thư viện OpenCV 8 Hình 1.2.2.1 Giao diện thiết lập liên kết 1 10 Hình 1.2.2.2 Giao diện thiết lập liên kết 2 10 Hình 1.2.2.3 Giao diện thiết lập liên kết 3 11 Hình 1.2.2.4 Giao diện thiết lập liên kết 4 11 Hình 1.2.2.5 Giao diện thiết lập liên kết 5 12 Hình 1.2.2.6 12 Hình 1.2.2.7 Giao diện thiết lập liên kết 6 Giao diện test thử sau khi cài đặt Opencv3.1 trên Visual Studio C++ 2015 Hình 2.2.1.1 Sơ đồ tổng quát của khối tách biển số 15 13 Hình 2.2.1.2 Sơ đồ chi tiết của khối tách biển số 17 Hình 2.2.2.1 Ảnh tối và ảnh sáng 18 Hình 2.2.2.2 Ảnh sau khi nhị phân 18 Hình 2.2.2.3 Ảnh sau khi lọc Hình 2.2.2.4 Ảnh sau khi lọc Hình 2.2.2.5 Sơ đồ giải thuật tìm và tách vùng màu trắng Hình 2.2.2.6 Ảnh chứa cùng trắng Hình 2.2.2.7 Ảnh chứa vùng Contourns Hình 2.2.4.1 Ảnh xác định các hình chữ nhật về quanh vùng trắng Hình 2.2.5.1 Ảnh hệ thống xác định nhầm vùng chứa biển số xe Hình 2.2.5.2 Nhận dạng ký tự để lọc ra vùng ảnh 5 chứa ký tự Hình 2.2.5.3 Xác định được vùng chứa biển số xe Hình 2.2.6.1 Biển số sau khi được cắt hoàn chỉnh Giải thuật cắt biển số chính xác, sau khi cắt Hình 2.2.6.2 Hình 2.3.1.1 được biển số Sơ đồ khối phân đoạn ký tự Hình 2.3.2.1 Ảnh sau khi được nhị phân Hình 2.3.2.2 Giải thuật nhị phân biển số Hình 2.3.3.1.1 Các giai đoạn trong việc phân tách các ký tự Hình 2.3.3.1.2 Các ký tự được cắt sau khi tìm thấy vùng biển số Hình 2.3.3.2.1 Dùng các hình chữ nhật để khoanh từng ký tự Ảnh từng ký tự được nhị phân và lưu lại Hình 2.3.3.2.2 Hình 2.4.1.1 Giải thuật nhận dạng ký tự Hình 2.4.4.1.1 Minh họa cách hoạt động của SVM Hình 2.4.4.3.1 Chia vùng ký tự Hình 3.3.1 Giao diện hệ thống nhận dạng biển số xe Ôtô 6 MỞ ĐẦU 1. Lý do chọn đề tài: Ngày nay với sự ra đời của Cách mạng công nghiệp lần thứ 4 đánh dấu sự phát triển mạnh mẽ trên các lĩnh vực khoa học công nghệ. Trí tuệ nhân tạo được xem là lĩnh vực quan trọng đóng vai trò then chốt cho sự phát triển của nhân loại. Trên thế giới, các nước phát triển bắt đầu nghiên cứu thử nghiệm các hệ thống thông minh ứng dụng trí tuệ nhân tạo trên các lĩnh vực như Bệnh viện thông minh, Ô tô không người lái, Bãi giữ xe thông minh đã mang lại kết quả khá khả quan. Tại Việt Nam nhiều nhà khoa học cũng đang hoạt động nghiên cứu các hệ thống thông minh này để áp dụng cho tình hình thực tế tại nước ta. Qua quá trình tìm hiểu và nghiên cứu nhóm nhận thấy: nhu cầu đi lại của con người ngày càng tăng, lưu lượng giao thông ngày càng lớn. Với số lượng phương tiện giao thông không ngừng gia tăng qua các năm, việc quản lý các phương tiện giao thông gặp rất nhiều khó khăn đòi hỏi phải có hệ thống thông minh giúp cho việc quản lý các phương tiện giao thông một cách dễ dàng hiệu quả. Một trong những hệ thống đó là hệ thống tự động nhận dạng biển số xe Ôtô. Trên thực tế hệ thống này đã được xây dựng từ những năm trước nhưng còn mắc phải nhiều lỗi. Một số hệ thống trước đây thường xảy ra lỗi cắt sai vùng chứa biển số dẫn đến quá trình nhận dạng và cho kết quả không chính xác. Chính vì thế chúng tôi đã lựa chọn đề tài “ Nhận dạng biển số xe Ôtô dựa trên 7 công cụ Opencv ” nhằm giải quyết bài toán nhận dạng biển số xe ôtô và khắc phục các lỗi cắt sai vùng chứa biển số của một số hệ thống trước đây. Giải quyết bài toán về hình ảnh rất phức tạp và đa dạng. 2. Giới hạn đề tài: Việc có nhiều biển số xe với định dạng và độ sáng khác nhau gây khó khăn cho việc nhận dạng. Do quá trình nhận dạng dựa vào phương pháp xử lý ảnh và trích xuất biển số từ ảnh chụp nên độ sáng khác nhau làm tăng độ phức tạp trong quá trình nhận dạng. Do thời gian thực hiện đề tài không cho phép nên chúng tôi chỉ giới hạn các biển số và điều kiện như sau: ➢Biển số có chữ đen, nền trắng, là biển số 1 hàng của ôtô và không quá 8 ký tự ➢Biển số phải còn nguyên vẹn, không bị tróc sơn hay rỉ sét, không bị che khuất. ➢Góc nghiêng của biển số không quá 50 so với phương ngang. ➢Hình chụp biển số không bị mờ ➢Không bị nhiễu bởi ánh sáng làm ảnh chụp bị chói. 3. Mục tiêu: Trong đề tài này, chúng tôi đã đặt những mục tiêu sau: ➢Hạn chế những vấn đề bất cập của việc nhận dạng không chính xác hiện nay. ➢Xây dựng một mô hình hệ thống nhận dạng biển số xe tự động. Để đạt được những mục tiêu trên, chúng tôi đã tiến hành các công việc như sau: 8 ➢Tìm hiểu về quá trình xử lý và nhận dạng ảnh ➢ Tìm hiểu các hệ thống nhân dạng biển số xe đã được áp dụng ở Việt Nam 4. Phương pháp nghiên cứu: Phương pháp lý thuyết: - Tìm hiểu thư viện OpenCV - Tìm hiểu cách tích hợp OpenCV vào Visual C++ - Tìm hiểu các quá trình nhận dạng và xử lý ảnh dựa trên công cụ Opencv - Nghiên cứu phương pháp SVM trong huấn luyện nhận dạng ký tự chữ số. - Nghiên cứu các giải thuật, kỹ thuật xử lý nhận dạng ký tự chữ số. Phương pháp thực nghiệm: - Tiến hành phân tích và xây dựng hệ thống Nhận dạng biển số xe Ôtô dựa trên công cụ Opencv - So sánh và đánh giá kết quả đạt được. 5. Ý nghĩa khoa học và thực tiễn của đề tài Về khoa học: Kết quả nghiên cứu của đề tài góp phần mở rộng cho các kỹ thuật xử lý nhận dạng các biển số xe, các phương pháp nhận dạng sử dụng độ tương quan chéo, các thuật toán chặt khúc và phân rã. Về thực tiễn: Hệ thống nhận dạng biển số xe được ứng dụng trong các mô hình bãi quản lý xe thông minh để cấp phát vé tự động hay sử dụng trong nhận dạng điều tra các xe ô tô vi phạm lẩn trốn, ứng dụng rộng rãi trong các trạm thu phí. Hệ thống có thể được bố trí tại các trạm bến thu phí đường bộ hay các camera giao thông nhằm nhận dạng hay phát hiện các xe tình nghi hay vi phạm luật an toàn giao thông. 6. Bố cục đề tài: Đề tài nghiên cứu gồm 3 chương chính: - Chương 1: Nghiên cứu tổng quan Trong chương này chúng tôi trình bày tổng quan về bài toán nhận dạng biển số xe ôtô và công cụ hỗ trợ Opencv - Chương 2: Phân tích hệ thống ứng dụng 9 Chương 2 chúng tôi phân tích và làm rõ các tiến trình nhận dạng biển số từ quá trình xác định vùng chứa biển sô, tách biển số, phân đoạn ký tự và cuối cùng so sánh tập dữ liệu huấn luyện để đưa ra kết quả nhận dạng biển số - Chương 3: Phát triển ứng dụng Lựa chọn công cụ hỗ trợ, vai trò chức năng của các file dữ liệu huấn luyện, các button sử dụng trong giao diện ứng dụng. 10 CHƯƠNG 1: NGHIÊN CỨU TỔNG QUAN 1.1. Bài toán Nhận dạng biển số xe Ôtô - Nhận dạng biển số xe là lĩnh vực được áp dụng cho các hệ thống bãi giữ xe thông minh trong tương lai. Giải quyết bài toán nhận dạng biển số xe Ôtô là tiền đề cho quá trình tự động nhận dạng biển số xe, thay thế cho các hệ thống quản lý bãi giữ xe bán tự động hiện nay. - Để giải quyết được bài toán Nhận dạng biển số xe, yêu cầu đặt ra là phải giải quyết được 3 bài toán con. Bài toán con thứ nhất là xác định vùng chứa biển số xe và tách biển số. Bài toán con thứ hai là phân đoạn từng ký tự. Bài toán con thứ 3 là nhận dạng ký tự. Hướng giải quyết cho ba bài toán con được chúng tôi phân tích rõ trong chương tiếp theo. 1.2. Thư viện hỗ trợ OpenCV:- OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay 1.2.1. Giới thiệu về OpenCV: phát triển về thị giác máy tính. Tối ưu 1.2.1.1. Khái niệm: hóa và xử lí các ứng dụng trong thời gian thực. Giúp cho việc xây dựng các ứng dụng xử lí ảnh, thị giác máy tính, ... một cách nhanh hơn. OpenCV có hơn 500 hàm khác nhau, được chia làm nhiều phần phục vụ các công việc như: xử lí hình ảnh y tế, an ninh, camera quan sát, nhận diện, robots, .. 1.2.1.2. Tổ chức thư viện OpenCV: Hình 1.2.1.2. Tổ chức thư viện OpenCV 11 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 đạ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. - ML: Chứa các thuật toán Machine Learning (học máy) 1.2.2. Cài đặt OpenCV 3.1 trên Visual C++ 2015: Bước 1: Download, cài đặt openCV 3.1 và Visual C++ 2015 Bước 2: Mở giao diện Visual C++ 2015 , tiến hành tạo 1 Newproject và chuẩn bị 1 file test.cpp mới. Bước 3: Cài đặt thiết lập các đường dẫn để lấy các hàm và thư viện trong OpenCV, thứ tự các bước trong các hình sau: Hình 1.2.2.1. Giao diện thiết lập liên kết 1 12 Hộp thoại properties xuất hiện, tiến hành thêm 1 số đường dẫn tới các file bin, lib, include Hình 1.2.2.2. Giao diện thiết lập liên kết 2 13 Hình 1.2.2.3. Giao diện thiết lập liên kết 3 Hình 1.2.2.4. Giao diện thiết lập liên kết 4 14 Hình 1.2.2.5. Giao diện thiết lập liên kết 5 Tiếp theo, chọn ok để hoàn tất quá trình thiết lập đường dẫn tới thư viện OpenCV. Hình 1.2.2.6. Giao diện thiết lập liên kết 6 15 Sau khi hoàn tất quá trình thiết lập, tiến hành chạy thử test1.cpp ta được giao diện như sau: Hình 1.2.2.7. Giao diện test thử sau khi cài đặt Opencv3.1 trên Visual Studio C++ 2015 16 CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG ỨNG DỤNG 2.1. Chụp ảnh bằng camera 2.1.1. Độ phân giải ( resolution) Độ phân giải càng lớn thì chất lượng hình ảnh càng nét. Thường thì trong các ứng dụng không cần thiết phải quan sát thật rõ nét thì độ phân giải 420 TV Lines là hoàn toàn có thể chấp nhận được. 2.1.2. Số điểm ảnh ( CCD Total Pixels ) Thông số này nói lên chất lượng hình ảnh, số điểm ảnh càng lớn thì chất lưọng hình ảnh càng tốt, tuy nhiên, chất lượng hình ảnh càng tốt thì cũng đồng nghĩa với dung lưọng ảnh càng lớn, và sẽ tốn bộ nhớ lưu trữ cũng như ảnh hưỏng đến tốc độ đường truyền. 2.1.3. Điều kiện hoạt động của thiết bị: 2.1.3.1 Cường độ ánh sáng nhỏ nhất (Minimum Illumination): Thường được tính bằng Lux. Thông số này nói lên rằng, Camera chỉ có thể hoạt động ở cường độ ánh sáng lớn hơn cường độ ánh sáng nhỏ nhất. Trong điều kiện quá tối, nếu không phải là Camera có chức năng hồng ngoại thì sẽ không hoạt động được. o Ánh nắng mặt trời: 4000 lux, có mây: 1000lux o Ánh sáng đèn tuýp: 500 lux, có mây: 300lux o Ánh sáng đèn tuýp đỏ 500 lux, trắng (300 lux) trắng sáng 1lux o Đêm không trăng: 0.0001 Lux Xin chú ý đến loại Camera quan sát có chức năng Auto Iris (Tự động hiệu chỉnh ánh sáng). Đặc điểm của Camera loại này là chỉ với 1 nguồn sáng nhỏ, nó có thể tự động khuyếch đại nguồn sáng đó lên để có thể quan sát được. 2.1.3.2. Nguồn cung cấp (Power Supply): Hiện nay đa số các Camera quan sát đều dùng loại nguồn 12VDC, chỉ một số ít các Camera dùng nguồn khác. Tuy nhiên, bạn không phải lo lắng đến vấn đề 17 nguồn 12VDC, vì phần lớn các công ty bán camera quan sát đều bán bộ chuyển đổi nguồn, do đó bạn có thể sử dụng trực tiếp nguồn 220VAC. o Operatinon Temperature: Dải nhiệt độ hoạt động. o Phần lớn các Camera quan sát đều cho phép hoạt động trong dải nhiệt độ -100C ~ 500C, nếu Camera của bạn được sử dụng trong những điều kiện khắc nghiệt như trong công nghiệp, khu vực có nhiệt độ cao thì bạn nên sử dụng các loại Camera quan sát chuyên dụng trong công nghiệp. o Operational Humidity: Độ ẩm cho phép. o Thông thường, độ ẩm cho phép là 90% RH (độ ảm tương đối) 2.2. Xác định vùng chứa biển số xe và tách biển số 2.2.1. Tổng quan về tách biển số: Tách biển số là một bước rất quan trọng trong quá trình nhận dạng biển số xe. Khối tách biển số xe được chia làm 2 giai đoạn chính: ➢ Giai đoạn 1: định vị trí của biển số trong ảnh chụp từ Camera. ➢ Giai đoạn 2: dùng các giải thuật để cắt biển số xe ra khỏi ảnh chụp và xoay biển số xe về phương ngang. Ảnh RBG được chụp từ Camera Định vị trí của biển số Cắt biển số Ảnh RBG chỉ chứa biển số Hình 2.2.1.1. Sơ đồ tổng quát của khối tách biển số Việc định vị biển số xe dựa vào các tính chất của biển số như: hình dạng, màu sắc của biển số so với nền. Biển số xe có hình chữ nhật với kích thước chiều dài và rộng không thay đổi. Từ đó chúng ta có thể tìm các vùng có hình tứ giác trong hình, tính tỉ lệ giữa hai chiều của hình so với khoảng giá trị cho trước để xem thử vùng đó có chứa biển số hay không. Vì biển số xe có những đặc trưng cơ bản được quy định bởi các cơ quan chức năng nên ta có thể dựa vào đặc 18 trưng này để phân biệt với các đối tượng khác. Theo quy định của bộ công an, biển số xe đằng trước của các loại xe dân dụng là một hình chữ nhật, có kích thước 470x110 (mm), phông nền màu trắng và các kí tự chữ cái in hoa màu đen. Các kí tự chữ số bao gồm từ 0 tới 9 và các kí tự chữ số bao gồm A, B, C, D, E, F, G, H, K, L ,M , N, P, S, T, U, V, X, Y, Z (20 kí tự). Kết hợp hai tính chất trên, chúng ta xác định được vùng chứa biển số. Sau khi định vị biển số xe, chúng ta tiến hành cắt biển số xe. Biển số xe được cắt theo 2 bước. Bước đầu tiên là xác định vùng chứa ký tự. Sau đó loại bỏ các vùng k có ký tự vì đó không phải là vùng chứa biển số. Bước hai là cắt biển số ra khỏi vùng trên. Thực hiện việc cắt biển số qua hai bước như trên làm tăng độ chính xác, biển số được cắt nguyên vẹn, không cắt phạm chữ, trừ trường hợp ảnh bị chói, độ tương phản không đều hoặc bị che khuất thì kết quả của việc tách biển số mới không chính xác. Phần tách biển số sử dụng rất nhiều giải thuật và phương pháp xử lý đối với ảnh số như sơ đồ sau đây: 19 Ảnh RGB Tìm vùng màu trăng Biến đổi ảnh RGB ảnh xám Nhị phân ảnh xám để tìm vùng trắng Tìm các vùng có diện tích phù hợp Xác định các vùng có chữa biển số Cắt vùng có nghi vấn chứa biển số Tìm đường biên của các vùng trắng ảnh Dò là loại bỏ các khung ảnh có mật độ pixel không phù hợp Chọn vùng có tỉ lệ phù hợp Cắt các vùng có tỉ lệ phú hợp với biển số Biến đổi sang ảnh xám (Gray) Nhị phân ảnh xám và tìm vùng bao Tìm vùng chứa ký tự Phân tích ảnh bao quanh bằng các hình chữ nhật Xác định các hình chữ nhật đủ với số lượng Cắt chính xác biển số Cắt vùng ảnh khi mà xác định đi số hình chữ nhật đủ Cắt biển số chính xác Ảnh RGB chỉ chứa biển số Hình 2.2.1.2. Sơ đồ chi tiết của khối tách biển số 20
- Xem thêm -

Tài liệu liên quan