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

NHẬN DẠNG BIỂN số XE (có code)

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

Trang 1/33

NHẬN DẠNG BIỂN SỐ XE

Nhận dạng biển số xe


Trang 2/33

MỤC LỤC
DANH MỤC CÁC HÌNH VẼ...............................................................................vii
DANH MỤC CÁC TỪ VIẾT TẮT......................................................................viii
CHƯỚNG 1 TỔNG QUAN VỀ ĐỀ TÀI................................................................1
1.1 GIỚI THIỆU ĐỀ TÀI .........................................................................................1
1.1.1 Đặt vấn đề.........................................................................................................1
1.1.2 Khái quát về xử lý ảnh và nhận dạng biển số...................................................1
1.1.3 Phân loại ứng dụng nhận dạng biển số xe........................................................2
1.2. PHẦM MỀM VISUAL STUDIO VÀ THƯ VIỆN EMGUCV...........................4
1.2.1 Phần mềm Visual Studio 2015..........................................................................4
1.2.2 Thư viện xử lý ảnh EmguCV.............................................................................4
CHƯƠNG 2. PHƯƠNG PHÁP NHẬN DẠNG BIỂN SỐ XE..............................6
2.1 MỘT SỐ KHÁI NIỆM CƠ BẢN........................................................................6
2.1.1 Ảnh và điểm ảnh...............................................................................................6
2.1.2 Các cách phân loại ảnh....................................................................................6
2.1.3 Các giai đoạn xử lý ảnh....................................................................................7
2.2 XÁC ĐỊNH VÙNG CHỨA BIỂN SỐ XE...........................................................8
2.2.1 Phân ngưỡng và tìm vùng đối tượng.................................................................8
2.2.2 Một số đặc điểm về biển số xe ở Việt Nam........................................................8
2.2.3 Phát hiện vùng chứa biển số.............................................................................9
2.2.4 Nhận dạng các kí tự........................................................................................11
CHƯƠNG 3. KẾT QUẢ MÔ PHỎNG.................................................................13


3.1 THIẾT KẾ WINDOW FORMS.........................................................................12
3.2 KẾT QUẢ NHẬN DẠNG.................................................................................13
CHƯƠNG 4. KẾT LUẬN.....................................................................................13
4.1 NHẬN XÉT.......................................................................................................14
4.2 HƯỚNG PHÁT TRIỂN.....................................................................................14
Nhận dạng biển số xe


Trang 3/33

TÀI LIỆU THAM KHẢO.....................................................................................15
PHỤ LỤC...............................................................................................................16

Nhận dạng biển số xe


Trang 4/33

DANH MỤC CÁC HÌNH VẼ
HÌNH 1-1 QUẢN LÝ BÃI GIỮ XE BẰNG NHẬN DẠNG BIỂN SỐ..................2
HÌNH 1-2 GIAO DIỆN CỦA VISUAL STUDIO 2015..........................................4
HÌNH 2-1 ẢNH MÀU, ẢNH MỨC XÁM VÀ ẢNH NHỊ PHÂN..........................7
HÌNH 2-2 CÁC BƯỚC XỬ LÝ ẢNH CƠ BẢN......................................................7
HÌNH 2-3 MỘT SỐ LOẠI BIỂN SỐ XE THÔNG DỤNG....................................9
HÌNH 2-4 CÁC BƯỚC PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE ..................10
HÌNH 3-1 GIAO DIỆN CHƯƠNG TRÌNH CHÍNH............................................12
HÌNH 3-2 CÔNG CỤ DEBUG.................................................................................12
HÌNH 3-3 KẾT QUẢ NHẬN DẠNG BIỂN SỐ.....................................................13
HÌNH 3-4 CÁC LOẠI BIỂN KHÔNG NHẬN DẠNG ĐỦ KÍ TỰ.....................13


Nhận dạng biển số xe


Trang 5/33

DANH MỤC CÁC TỪ VIẾT TẮT
ANPR

Automatic number Plate Recognition

OCR

Optical Character Recognition

RGB

Red Green Blue

CHƯƠNG 1:TỔNG QUAN VỀ ĐỀ TÀI
1.1.GIỚI THIỆU ĐỀ TÀI
1.1.1 Đặt vấn đề

Nhận dạng biển số xe


Trang 6/33

Ngày nay trên thế giới bên cạnh việc tăng trưởng kinh tế là sự phát triển của các
ngành khoa học kỹ thuật nói chung, mà trong đó ngành công nghiệp sản xuất các
phương tiện giao thông lại là một trong những ngành có tốc độ phát triển cực nhanh.

Sự phát triển ấy, được thể hiện rõ ràng nhất thông qua hình ảnh các phương tiện
giao thông trên thế giới ngày một tăng cao và đa dạng. Tuy nhiên,điều đó lại gây ra
một áp lực đối với những người và cơ quan các cấp quản lý,làm cho công tác quản
lý và giám sát sẽ khó khăn hơn.
Và đây cũng là một trong những vấn nạn ở Việt Nam. Công tác quản lý phương tiện
giao thông nói chung và quản lý ôtô, xe máy là vô cùng phức tạp…cũng như công
tác phát hiện, xử phạt các hành vi vi phạm giao thông, chống trộm,…sẽ tốn nhiều
thời gian và công sức hơn.
Để làm giảm áp lực trong công tác quản lý, kiểm soát phương tiện giao thông, trên
thế giới đã nhanh chóng xây dựng hệ thống giám sát tự động đối với các phương
tiện giao thông. Và các hệ thống giám sát đều lấy biển số xe là mục tiêu giám sát.
Để xây dựng hệ thống quản lý giao thông tự động thì “ Bài toán nhận dạng biển số
xe” là tiền đề để xây dựng những mô hình quản lý đó. Hệ thống này đã được sử
dụng rộng rãi tuy nhiên ở Việt Nam đây vẫn là một lĩnh vực mới mẻ.

Nhận dạng biển số xe


Trang 7/33

Hình 1-1 Quản lý bãi giữ xe bằng nhận dang biển số

1.1.2 Khát quát về xử lý ảnh và nhận dạng biển số:
Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máy
tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này. Hai nhiệm vụ cơ bản của
quá trình xử lý ảnh là nâng cao chất lượng thông tin hình ảnh và xử lý số liệu cung
cấp cho các quá trình khác trong đó có việc ứng dụng thị giác vào điều khiển.
Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhận ảnh dạng số
hoặc tương tự) gửi đến máy tính. Dữ liệu ảnh được lưu trữ ở định dạng phù hợp với
quá trình xử lý. Người lập trình sẽ tác động các thuật toán tương ứng lên dữ liệu ảnh

nhằm thay đổi cấu trúc ảnh phù hợp với các ứng dụng khác nhau.
Hệ thống nhận dạng biển số xe là hệ thống có khả năng phân tích hình ảnh và xác
định biển số trên xe, thông qua video, thiết bị ghi hình và hình ảnh. Sau cùng là xác
định các thông tin như: chủ sở hữu xe, theo dõi xe với tốc độ chậm, ....

Nhận dạng biển số xe


Trang 8/33

1.1.3 Phân loại ứng dụng nhận dạng biển số xe:
Ứng dụng nhận dạng biển số xe là ứng dụng có khả năng phân tích hình ảnh và xác
định biển số xe từ các hình ảnh chụp được từ các thiết bị thu hình. Nguồn hình ảnh
cho ứng dụng có rất nhiều. Và phát triển, hình ảnh được trực tiếp thu nhận từ
camera. Trong đề tài chỉ dừng lại ở mức xác định được biển số xe (xác định các
chữ) từ các bức ảnh.
Có nhiều cách thức khác nhau để phân loại các ứng dụng nhận dạng biển số
xe. Một trong những cách đơn giản là phân loại ứng dụng nhận dạng biển số xe
thông qua mục đích sử dụng. Có thể chia ứng dụng nhận dạng biển số xe thành hai
loại sau:
*Loai 1: Giơi han vung nhin:
-Đầu vào: Ảnh thu trực tiếp từ các thiết bị ghi nhận ảnh kỹ thuật số. Ảnh được ghi
nhận thường chỉ giới hạn trong vùng có biển số xe.
-Nguyên lý hoạt động: Các phương tiện giao thông phải chạy với một tốc độ đủ
chậm để máy ghi nhận hình ảnh co thể thu được ảnh vùng biển số xe.
*Loại 2: Không giới hạn vùng nhìn:
-Đầu vào: Ảnh đầu vào thu được từ các thiết bị ghi hình tự động, không phụ thuộc
vào góc độ, các đối tượng xung quanh, ảnh không cần bắt buộc chỉ chụp vùng chứa
biển số xe, mà có thể ảnh tổng hợp như chứa them các đối tượng như người, cây,
đường phố.., miễn là vùng biển số xe phải đủ rõ để có thể thực hiện nhận dạng được

các ký tự trong vùng đó.
-Nguyên lý hoạt động: Do đặc tính không giới hạn vùng nhìn mà ảnh đầu vào có thể
thu được từ một thiết bị ghi hình (camara, máy ảnh…). Và do đó, công việc đầu tiên
là dò tìm trong ảnh, để xác định đúng vùng nào là biển số xe. Sau đó, thực hiện tách
vùng và nhận dạng. Vì không phụ thuộc vào hình ảnh thu được nên có thể dùng ứng
dụng tại nhiều nơi.

Nhận dạng biển số xe


Trang 9/33

1.2 PHẦN MỀM VISUAL STUDIO 2015 VÀ THƯ VIỆN EMGUCV
1.2.1 Phần mềm Visual studio 2015
Visual Studio là một môi trường tích hợp từ Microsoft. Nó được sử dụng để
phát triển chương trinh máy tính cho Microsoft Windows, cũng như các trang
web, các ứng dụng web và các dịch vụ web.
Visual Studio hỗ trợ nhiều ngôn ngữ lập trinh khác nhau và cho phép các lập
trinh viên biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) v ơi hầu h ết các
ngôn ngữ lập trinh, cung cấp một dịch vụ ngôn ngữ cụ thể tồn tai. . Ứng dụng
này được xây dựng trong ngôn ngữ bao gồm C, C ++,VB,C#...
Tính năng chính của chương trình Visual Studio là biên tập code, sửa lỗi và thiết kế
Window Forms…

Hình 1-2 Giao diện của Visual Studio 2015

1.2.2 Thư viện xử lý ảnh EmguCV
OpenCV (Open Computer Vision) là một thư viện mã nguồn mở chuyên dung
để xử lý các vấn đề liên quan đến thị giác máy tính. Nhờ một hệ th ống các gi ải
thuật chuyên biệt, tối ưu cho việc xử lý thị giác máy tính, vi v ậy tính ứng d ụng

của OpenCV là rất lơn. EmguCV là một cross flatform.NET, một thư viện xử lý
Nhận dạng biển số xe


Trang 10/33

hinh ảnh manh dành riêng cho ngôn ngữ C#, cho phép g ọi được chức năng
của OpenCV từ .NET.
Lợi thế cua EmguCV là được viết hoàn toàn bằng C# ,có thể chay trên bất kỳ
nền tảng hỗ trợ nào.
Tính ứng dụng của EmguCV là rất lơn, có th ể kể đến như nhận dang ảnh
( nhận dang khuôn mặt, các vật thể …),xử lý ảnh (khử nhiễu, đi ều chỉnh độ
sáng … ),nhận dang cử chỉ và còn rất nhiều ứng dụng khác nữa.

Nhận dạng biển số xe


Trang 11/33

CHƯƠNG 2:PHƯƠNG PHÁP NHẬN DẠNG BIỂN SỐ XE
2.1 MỘT SỐ KHÁI NIỆM CƠ BẢN:
2.1.1 Ảnh và điểm ảnh:
Ảnh số là tập hợp hữu han các điểm ảnh vơi mức xám phu h ợp dung đ ể mô t ả
ảnh gần vơi ảnh thật. Số điểm ảnh xác định độ phân giải của ảnh. Ảnh có đ ộ
phân giải càng cao thi càng thể hiện rõ nét các đặt đi ểm của t ấm hinh càng
làm cho tấm ảnh trở nên thực và sắc nét hơn.

(I )
m,n


Ảnh là mảng số thực hai chiều

, có kích thước (MxN), trong đó mỗi giá trị

(I )
m,n

(tại một điểm ảnh), biểu thị mức xám của ảnh tại vị trí

( m, n )

tương ứng.Một

(I )
m,n

ảnh là ảnh nhị phân nếu giá trị

bằng 0 hoặc 1.

Điểm ảnh (Pixel) là một phần tử của ảnh số tai toa độ (x, y) vơi độ xám hoặc
màu nhất định. Kích thươc và khoảng cách giữa các đi ểm ảnh đó được ch ọn
thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám
(hoặc màu) của ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được
gọi là một phần tử ảnh.
Mức xám: Là kết quả của sự biến đổi tương ứng 1 giá trị độ sáng của 1 đi ểm
ảnh vơi 1 giá trị nguyên dương. Thông thường nó xác định trong [0, 255] tuỳ
thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn. Các thang giá tr ị m ức xám
thông thường: 16, 32, 64, 128, 256 (Mức 256 là mức phổ dụng. Lý do: từ kỹ


Nhận dạng biển số xe


Trang 12/33

thuật máy tính dung 1 byte (8 bit) để biểu diễn mức xám. Mức xám dung 1
byte biểu diễn: 28 =256 mức, tức là từ 0 đến 255).
2.1.2 Các cách phân loại ảnh
Ảnh nhị phân: Giá trị xám của tất cả các điểm ảnh chỉ nhận giá trị 1 hoặc 0 như
vậy mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi 1 bit. Ảnh xám: Giá
trị xám nằm trong [0, 255] như vậy mỗi điểm ảnh trong ảnh nhị phân được
biểu

diễn

bởi

1

byte.

Ảnh màu:
-Hệ màu RGB:
Một pixel được biểu diễn bằng 3 giá trị (R, G, B) trong đó R, G, B là m ột giá tr ị
xám và được biểu biểu diễn bằng 1 byte. Khi đó ta có một ảnh 24 bits.
P(x, y) = (R, G, B)
-Hệ màu CMY: là phần bu của hệ màu RGB, thường được dung trong máy in.

(C, M, Y) = (1, 1, 1) – (R, G, B)
Hay C+R=M+G=Y+B=1

-Hệ màu CMYK: trong đó K là độ đậm nhat của màu
K= min(C, M, Y)
P(x, y) = (C-K, M-K, V-K, K).

Hình 2-1 Ảnh màu, ảnh mức xám và ảnh nhị phân

2.1.3 Các giai đoạn xử lý ảnh
Gồm các bước:
Nhận dạng biển số xe


Trang 13/33

-Thu nhận ảnh: ảnh được thu từ nhiều nguồn khác nhau:máy ảnh, máy quay phim,
máy quét, ảnh vệ tinh biến đổi thông tin hình ảnh về các cấu trúc được lưu trữ trong
máy tính, có thể hiển thị ra các thiết bị ngoại vi.
-Tiền xử lý (Image Processing): quá trình sử dụng các kỹ thuật xử lý ảnh để làm ảnh
tốt lên theo mục đích sử dụng.
-Phân đoạn và biểu diễn ảnh.
-Nhận dạng và nội suy ảnh.

Hình 2-2 Các bước xử lý ảnh cơ bản

2.2 XÁC ĐỊNH VÙNG CHỨA BIỂN SỐ XE
2.2.1 Phân ngưỡng và tìm vùng đối tượng
Ý tưởng: nhận thấy các vung biển số là các vung đặc trưng có hinh chữ nhật,
có tỉ lệ kích thươc theo tiêu chuẩn. Vi vậy sau khi tách ngường và tim vung
(EmguCV hỗ trợ findContours) ta tim những vung có tỷ lệ theo kích thươc
giống vơi tỉ lệ của biển số xe. Để có thế lọc các vung biển số một lần nữa thi
ta tiếp tục tim số vung con trên vung biển số và so sánh vơi số lượng ký tự của

biển số.
Gồm 2 bươc:
-Bươc 1: Tim vung biển số Vơi ảnh xám đầu vào thực hiện phân ngưỡng
( hoặc dò biên canny) và tim đối tượng. Tách các đối tượng có tỉ lệ rộng/dài
trong pham vi biển số để làm nguồn cho bươc 2.
-Bươc 2: Tách riêng từng ký tự trên biển số: Tiến hành tim đối tượng trên
nguồn do bươc 1 cung cấp sau đó so sánh số đối tượng nhận được có trung
vơi số ký tự tên các biển số xe không. Nếu khơp vơi tiêu chuẩn thi đó là những
vung biển số có khả năng là biển số xe cao nhất. Tách riêng từng ký tự đ ể
nhận dang.
2.2.2 Một số đặc diểm biển số xe ở Việt Nam

Nhận dạng biển số xe


Trang 14/33

Ở mỗi nươc thường có tiêu chuẩn về kích thươc nhất định. Đối vơi nươc ta,
biển số xe qui định khá đồng đều cho mỗi loai xe, tỷ lệ chi ều dài, rộng cho
mỗi loai xe là như nhau:
-Đối vơi loai xe có một hàng ký tự thi tỉ lệ dài/rộng là: 3.5 ≤W / H ≤ 4.5.
-Đối vơi loai xe có hai hàng ký tự thi tỉ lệ dài/rộng là: 0.8 ≤W / H ≤1.4.
Từ những đặc điểm này, ta có có thể xác định được các vung con th ỏa mãn thi
khả năng chứa biển số là rất cao.
Mỗi ký tự thường có tỷ lệ kích thước chiều rộng, chiều cao tương ứng với chiều dài
và rộng của biển số xe. Ví dụ, chiều cao của mỗi ký tự luôn nhỏ hơn 85% chiều cao
của biển số xe và luôn lớn hơn 33% chiều cao của biển xe. Còn chiều rộng của ký
tự không lớn hơn 20% chiều dài của biển số xe. Mỗi ký tự của biển số xe được xem
như là một vùng liên thông con. Do đó, chúng ta có thể đếm vùng liên thông con
thỏa mãn tích chất đó là ký tự. Chú ý số ký tự trên biển số xe là từ 6 đến 10 ký tự. ở

nước ta chỉ có số ký tự trên mỗi biền số xe nằm trong khoảng 6 đến 9 ký tự.

Hình 2-3 Một số loại biển số xe thông dụng

2.2.3 Phát hiện vùng chứa biển số
Nhận dạng biển số xe


Trang 15/33

Sơ đồ các bước phát hiện vùng chứa biển số xe.

Hình 2-4 Các bước phát hiện vùng chứa biển số xe

Bước 1: Biến đối ảnh xám và lọc ảnh
-Ảnh đầu vào là một ảnh bất kỳ, được chuyển về ảnh có 256 mức xám và tiến hành
lọc ảnh giảm nhiễu.
Bước 2: Nhị phân hóa ảnh
- Việc sử dụng ảnh mức xám không làm giảm đi tính đa năng của ứng dụng. Trên
thực tế, ảnh mức xám vẫn được sử dụng nhiều, và nhiều thiết bị ghi hình cũng có
khả năng tự chuyển ảnh màu thành ảnh mức xám. Tuy nhiên, nếu để ảnh mức xám
thì việc phát hiện biên không hiệu quả, vì sự thay đổi liên tục của các mức xám làm
cho việc xác định biên không phải dễ dàng, và việc tìm ra các vùng liên tục của biên
khá hạn chế. Vì vậy, chúng ta thực hiện chuyển ảnh về dạng nhị phân để thực hiện
việc lấy biên nhanh hơn.
Nhận dạng biển số xe


Trang 16/33


Bước 3: Tiến hành phân ngưỡng hoặc phát hiện biên
-Có hai quá trình phân ngưỡng đó là phân ngưỡng tự động và phân ngưỡng
không tự động.
-Khi ta tiến hành phân ngưỡng sẽ làm hiện rõ vùng biển số, trong giai đoạn này
ta có thể sử dụng các phương pháp phát hiện biên.
Bước 4: Tìm đường bao đối đượng
-Khi có ảnh thu được ở bước 3 chúng ta tiến hành tìm các vùng biên là đối tượng
riêng để trích các vùng và lấy thông số của các vùng như là tọa độ điểm của các
cạnh, diện tích của vùng.
Bước 5: Tách vùng biển số
-Tìm đường bao đối tượng với tiêu chí tỉ lệ 3.5 ≤ W H ≤ 4.5 hoặc 0.8 ≤ W H ≤1.4
để tim ra những vung có thể là biển số nhất.
-Tiến hành cắt các vung có thể là biển số nhất trên ảnh để làm nguồn cho giai
đoan cắt ký tự để làm mẫu cho các quá trinh nhận dang ký tự.
2.2.4 Nhận dạng các kí tự
Nhận dang ký tự quang học (OCR) là loai phần mềm máy tính được tao ra để
chuyển các hinh ảnh của chữ viết tay hoặc chữ đánh máy (thường được quét
bằng máy scanner) thành các văn bản tài liệu.
Trong đề tài này chúng ta sử dụng Tesseract OCR để nhận dang cáckí tự chữ
và số trong biển số xe.

Nhận dạng biển số xe


Trang 17/33

CHƯƠNG 3:KẾT QUẢ MÔ PHỎNG
3.1 THIẾT KẾ WINDOW FORMS
Giao diện chương trình nhận dạng biển số:


Hình 3-1 Giao diện chương trình chính

Nhận dạng biển số xe


Trang 18/33

Hình 3-2 Công cụ Debug

3.2 KẾT QUẢ NHẬN DẠNG
Ví dụ với biển số xe 62A 00222

Hình 3-3 Kết quả nhận dạng biển số xe

Kết quả nhận dạng chúng ta có thể thấy được là khá chính xác. Tuy nhiên vẫn có
một số biển số không nhận dạng được hoặc bị mất kí tự do các nguyên nhân sau:
-Ký tự không rõ và ký tự bị mờ từng phần cũng làm cho quá trình tìm đối tượng sẽ
phát hiện ra nhiều đối tượng mà không phát hiện ra vùng các chữ số.
-Chữ bị bóng sáng do kính lắp hoặc bị đèn chiếu làm nhòe.
Nhận dạng biển số xe


Trang 19/33

-Ảnh bị che mất một phần nhỏ làm mất đi một phần ký tự hoặc ký tự dính liền với
đường viền của biển làm quá trình tìm đối tượng nhầm chữ số và viền của biển là
một đối tượng.
-Ảnh có nhiều nhiễu không rõ, nhiều nhiễu sẽ làm các ký tự gần nhau sẽ được tính
gần như là một đối tượng.


Hình 3-4 Các loại biển không nhận dạng đủ kí tự

Ngoài ra, chương trình cũng không nhận dạng dược các loại biển nền đỏ (xanh) chữ
trắng.

CHƯƠNG 4:KẾT LUẬN
4.1. NHẬN XÉT
Sự phát triển của công nghệ thông tin đã có tác động đến nhiều mặt của đời sống xã
hội trong đó phải kể đến lĩnh vực giám sát tự động. Trong giám sát tự động, việc
giám sát đối với các phương tiện giao thông là một vấn đề nổi trội. Nhiều chính
phủ, thành phố trên thế giới đã xây dựng hệ thống giám sát tự động đối với các
phương tiện giao thông của mình. Và các hệ thống giám sát đều lấy biển số xe là
mục tiêu giám sát.
Ở nước ta, các hệ thống giám sát tự động nói chung và các hệ thống nhận dạng biển
số xe nói riêng chưa được chú ý tới và nó cũng là một lĩnh vực tương đối mới mẻ.
Đa phần các công tác quản lý, xử lý đối với các phương tiện giao thông đều cần
nhân lực là con người. Đề tài này nhằm mục đích tìm hiểu bài toán giám sát, quản
lý các phương tiện giao thông một cách tự động thông qua việc “Nhận dạng biển số
Nhận dạng biển số xe


Trang 20/33

xe”. Tôi hy vọng rằng trong thời gian không xa các hệ thống này được sử dụng
nhiều nhằm hỗ trợ một phần công tác giám sát, quản lý các phương tiện giao thông
một cách hiệu quả hơn.
4.2 HƯỚNG PHÁT TRIỂN
Nâng cao hiệu quả chương trình, tách ly các kí tự trong biển số trong các trường
hợp biển số bị nhiều nhiễu, mất mát thông tin do nhiễu từ điều kiện môi trường, tìm
vùng biển số trong ảnh có độ tương phản giữa biển số và nền thấp. Đặc biệt là biển

xe có nền màu đỏ (xanh) chữ trắng.
Phát triển chương trình thành module phần cứng. Có khả năng tương thích với các
thiết bị quan sát như camera.
Kết hợp chương trình với những chương trình nhận dạng khác để hỗ trợ tốt hơn cho
việc quản lý phương tiện giao thông. Nghiên cứu theo hướng một ứng dụng cụ thể
như : giám sát phương tiện giao thông, xử lý vi phạm giao thông, quản lý xe tại các
bãi giữ xe, các kho vật tư….

TÀI LIỆU THAM KHẢO
[1] tailieu.vn
[2] />[3] />
Nhận dạng biển số xe


Trang 21/33

PHỤ LỤC
*Code FindContours:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Emgu.CV;
using Emgu.CV.Structure;
namespace Auto_parking
{
Nhận dạng biển số xe



Trang 22/33

class FindContours
{
public int count = 0;
/// <summary>
/// Method used to process the image and set the output result images.
/// </summary>
/// Source color image.</param>
/// Value used for thresholding.</param>
/// Resulting gray image.</param>
/// Resulting color image.</param>
public int IdentifyContours(Bitmap colorImage, int thresholdValue, bool
invert, out Bitmap processedGray, out Bitmap processedColor, out List<Rectangle>
list)
{
List<Rectangle> listR = new List<Rectangle>();
#region Conversion To grayscale
Image<Gray, byte> grayImage = new Image<Gray, byte>(colorImage);
//grayImage = grayImage.Resize(400, 400,
Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR);
Image<Gray, byte> bi = new Image<Gray, byte>(grayImage.Width,
grayImage.Height);
Image<Bgr, byte> color = new Image<Bgr, byte>(colorImage);
#endregion

#region Image normalization and inversion (if required)

Nhận dạng biển số xe



Trang 23/33

////CvInvoke.cvAdaptiveThreshold(grayImage, grayImage, 255,
////
Emgu.CV.CvEnum.ADAPTIVE_THRESHOLD_TYPE.CV_ADAPTIVE_THRES
H_MEAN_C, Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY, 21, 2);
////string ff = grayImage.GetAverage().Intensity;
////grayImage = grayImage.ThresholdBinary(new
Gray(grayImage.GetAverage().Intensity / 2.5), new Gray(255));
////double thr = cout_avg(grayImage) / 1.5;
//double thr = cout_avg_new(grayImage)/1.5;
//grayImage = grayImage.ThresholdBinary(new Gray(thr), new Gray(255));
////grayImage = grayImage.Dilate(3);
//if (invert)
//{
// grayImage._Not();
//}
//#endregion
//#region Extracting the Contours
//using (MemStorage storage = new MemStorage())
//{
// Contour<Point> contours =
grayImage.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_C
HAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST,
storage);
// while (contours != null)
Nhận dạng biển số xe



Trang 24/33

// {
//

Rectangle rect = contours.BoundingRectangle;

//

//Contour<Point> currentContour =

contours.ApproxPoly(contours.Perimeter * 0.015, storage);
//

//color.Draw(currentContour.BoundingRectangle, new Bgr(0, 255, 0),

//

CvInvoke.cvDrawContours(color, contours, new MCvScalar(255,

1);
255, 0), new MCvScalar(0), -1, 1,
Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0));
//

if (rect.Width > 20 && rect.Width < 150

//
//


&& rect.Height > 80 && rect.Height < 150)
{

//

count++;

//

Contour<Point> currentContour =

contours.ApproxPoly(contours.Perimeter * 0.015, storage);
//

CvInvoke.cvDrawContours(color, contours, new

MCvScalar(0,255,255), new MCvScalar(255), -1, 3,
Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0));
//

color.Draw(contours.BoundingRectangle, new Bgr(0, 255, 0), 2);

//

bi.Draw(contours, new Gray(255), -1);

//

listR.Add(contours.BoundingRectangle);


//

}

//

contours = contours.HNext;

Nhận dạng biển số xe


Trang 25/33

// }
// for (int i = 0; i < count; i++)
// {
//

for (int j = i + 1; j < count; j++)

//

{

//

if( (listR[j].X < (listR[i].X + listR[i].Width) && listR[j].X >

listR[i].X)
//


&& (listR[j].Y < (listR[i].Y + listR[i].Width) && listR[j].Y >

listR[i].Y) )
//

{

//

listR.RemoveAt(j);

//

count--;

//

j --;

//

}

//

else if( (listR[i].X < (listR[j].X + listR[j].Width) && listR[i].X >

listR[j].X)
//


&& (listR[i].Y < (listR[j].Y + listR[j].Width) && listR[i].Y >

listR[j].Y))
//

{

//

listR.RemoveAt(i);

//

count--;

//

i--;

//

break;

//
//

}
}


// }
Nhận dạng biển số xe


×