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 -