Tải bản đầy đủ (.pdf) (44 trang)

Báo cáo nhận dạng biển số xe OpenCV

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 (1.47 MB, 44 trang )

Nhóm 03

Trí Tuệ Nhân Tạo

GVHD: Nguyễn Đình Hiển
SVTH:
- Tạ Thị Thu Thánh_43.01.103.041
- Siu Thu Ngân_43.01.103.026
- Trần Thịnh_43.01.103.043
- Huỳnh Thiện Toàn_42.01.103.073


Mục Lục
CHƯƠNG 1: GIỚI THIỆU OPENCV .......................................................................................................................4
1.1 OPENCV LÀ GÌ?....................................................................................................................................................4
1.2 ỨNG DỤNG CỦA OPENCV: ...................................................................................................................................5
1.3 CHỨC NĂNG CỦA OPENCV:..................................................................................................................................5
1.4 MỘT SỐ HÀM THÔNG DỤNG: .................................................................................................................................5
CHƯƠNG 2: TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE ............................................................6
2.1. KHÁI NIỆM VỀ NHẬN DẠNG BIỂN SỐ XE................................................................................................................6
2.1.1. Khái niệm & ứng dụng ................................................................................................................................6
2.1.2. Phân loại biển số xe ....................................................................................................................................8
2.2. MỘT SỐ HƯỚNG TIẾP CẬN GIẢI QUYẾT BÀI TOÁN PHÁT HIỆN BIỂN SỐ XE ............................................................ 11
2.2.1. Hướng tiếp cận phát triển vùng ................................................................................................................11
2.2.2. Hướng tiếp cận dò biên và biến đổi Hough ..............................................................................................12
2.2.3. Hướng tiếp cận phát hiện biên và Heuristic .............................................................................................12
2.3. HƯỚNG GIẢI QUYẾT CỦA ĐỀ TÀI......................................................................................................................... 13
CHƯƠNG 3: QUY TRÌNH NHẬN DẠNG BIỂN SỐ XE ...................................................................................... 20
3.1. MỘT SỐ KHAI NIỆM CƠ BẢN ............................................................................................................................... 20
3.1.1. Tổng quan về ảnh ......................................................................................................................................20
2.1.2. Phương pháp tách dò ngưỡng tự động......................................................................................................20


3.2. BIÊN VÀ CÁC PHƯƠNG PHÁP PHÁT HIỆN BIÊN ..................................................................................................... 21
3.2.1. Khái niệm về biên ......................................................................................................................................21
3.2.2. Các phương pháp phát hiện biên ..............................................................................................................21
3.3. TỔNG QUAN VỀ TACH BIỂN SỐ ........................................................................................................................... 25
3.3.1. Tìm vùng màu trắng ..................................................................................................................................26
2.3.2. Xác định vùng chứa biển số ......................................................................................................................26
3.3.3. Cắt vùng chứa biển số ...............................................................................................................................28
3.4. PHÂN ĐOẠN KÍ TỰ ............................................................................................................................................. 29
3.4.1. Tổng quan về phân đoạn kí tự ...................................................................................................................29
3.4.2. Nhị phân biển số xe ...................................................................................................................................29
3.4.3. Phân đoạn kí tự .........................................................................................................................................30
3.4.4. Chương trình phân vùng từng kí tự ...........................................................................................................33
3.5. NHẬN DẠNG KÍ TỰ ............................................................................................................................................. 34
2.5.1. Tổng quan về nhận dạng kí tự ...................................................................................................................34
3.5.2. Công nghệ nhận dạng OCR ......................................................................................................................34
CHƯƠNG 4. XÂY DỰNG DEMO CHƯƠNG TRÌNH .......................................................................................... 36
4.1. CẤU HÌNH HỆ THỐNG ......................................................................................................................................... 36
4.1.1. Yêu cầu hệ thống .......................................................................................................................................36
4.1.2. Chương trình cần thiết cho thiết kế ...........................................................................................................36
4.2. GIAO DIỆN CHƯƠNG TRÌNH ................................................................................................................................ 36
4.3. ƯU NHƯỢC ĐIỂM CỦA HỆ THỐNG ....................................................................................................................... 40
4.3.1. Ưu điểm .....................................................................................................................................................40

1


4.3.2. Nhược điểm ...............................................................................................................................................40
KẾT LUẬN ................................................................................................................................................................ 42
TÀI LIỆU THAM KHẢO ......................................................................................................................................... 43


2


LỜI NÓI ĐẦU
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 lượng nhân lực trong việc 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. 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ẻ.
Do đó em chọn làm đề tài “Tìm hiểu hệ thống nhận dạng biển số xe” với mục
đích để tìm hiểu nhằm trợ giúp cho 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ả, dễ dàng và nhanh chóng hơn.

3


CHƯƠNG 1: GIỚI THIỆU OPENCV
1.1 OpenCV là gì?
OpenCV viết tắt của Open Source Computer Vision được xem là một trong những

thư viện mã nguồn mở hàng đầu cho việc xử lý ảnh theo thời gian thực.
OpenCV (Thư viện hình ảnh máy tính nguồn mở) là thư viện phần mềm máy tính
học tập và máy tính nguồn mở. OpenCV được xây dựng để cung cấp một cơ sở hạ tầng
chung cho các ứng dụng thị giác máy tính và để đẩy nhanh việc sử dụng nhận thức máy
trong các sản phẩm thương mại. Là một sản phẩm được cấp phép BSD, OpenCV giúp các
doanh nghiệp dễ dàng sử dụng và sửa đổi.
Thư viện có hơn 2500 thuật toán được tối ưu hóa, bao gồm một tập hợp toàn diện
các thuật toán máy học và tầm nhìn máy tính tiên tiến và hiện đại. Các thuật toán này có
thể được sử dụng để phát hiện và nhận diện khuôn mặt, xác định đối tượng, phân loại
hành động của con người trong video, theo dõi chuyển động của camera, theo dõi đối
tượng chuyển động, trích xuất mô hình 3D của đối tượng, tạo ra các đám mây điểm 3D từ
camera stereo, ghép ảnh lại với nhau để tạo ra độ phân giải cao hình ảnh của toàn cảnh,
tìm hình ảnh tương tự từ cơ sở dữ liệu hình ảnh, xóa mắt đỏ khỏi hình ảnh được chụp
bằng flash, theo dõi chuyển động của mắt, nhận diện phong cảnh và thiết lập điểm đánh
dấu để che phủ nó bằng thực tế mở rộng, v.v. Thư viện được sử dụng rộng rãi trong các
công ty, các nhóm nghiên cứu và các cơ quan chính phủ.
Cùng với các công ty có uy tín như Google, Yahoo, Microsoft, Intel, IBM, Sony,
Honda, Toyota sử dụng thư viện, có nhiều công ty khởi nghiệp như Applied Minds,
VideoSurf và Zeitera, sử dụng rộng rãi OpenCV. Các ứng dụng được triển khai của
OpenCV mở rộng phạm vi từ khâu hình ảnh đường phố, phát hiện xâm nhập trong video
giám sát ở Israel, giám sát thiết bị mỏ ở Trung Quốc, giúp robot điều hướng và nhận đồ
vật tại Willow Garage, phát hiện tai nạn chết đuối ở châu Âu. Tây Ban Nha và New
York, kiểm tra đường băng cho các mảnh vỡ ở Thổ Nhĩ Kỳ, kiểm tra nhãn trên các sản
phẩm tại các nhà máy trên khắp thế giới để phát hiện khuôn mặt nhanh chóng ở Nhật
Bản.
Nó có giao diện C ++, Python, Java và MATLAB và hỗ trợ Windows, Linux,
Android và Mac OS. OpenCV dựa chủ yếu vào các ứng dụng thị giác thời gian thực và
tận dụng các hướng dẫn MMX và SSE khi có sẵn. Một giao diện CUDA và OpenCL đầy
đủ tính năng đang được tích cực phát triển ngay bây giờ. Có hơn 500 thuật toán và
khoảng 10 lần so với nhiều chức năng soạn hoặc hỗ trợ các thuật toán đó. OpenCV được

viết tự nhiên trong C ++ và có một giao diện templated hoạt động liền mạch với các
container STL.

4


1.2 Ứng dụng của OpenCV:
- Giám sát tự động
- Tìm kiểm, phục hồi, xử lý ảnh
- Nhận dạng khuôn mặt, cử chỉ.
- Nhận dạng chữ viết, con số, ký tự.
- Kiểm soát dân số trung quốc bằng cách nhận diện khuôn mặt qua opencv
- Kiểm soát bãi giữ xe.
- Nhận dạng ảnh
- Xử lý hình ảnh
- Phục hồi hình ảnh/video
- Thực tế ảo
- Các ứng dụng khác
1.3 Chức năng của OpenCV:
- Bộ công cụ hỗ trợ 2D và 3D
- Nhận diện khuôn mặt
- Nhận diện cử chỉ
- Nhận dạng chuyển động, đối tượng, hành vi
- Tương tác giữa con người và máy tính
- Điều khiển robot
- Hỗ trợ thực tế tăng cường
1.4 Một số hàm thông dụng:
• Hàm cvLoadImage() thực hiện tải hình ảnh dựa vào tên file được truyền vào.
IplImage * imp = cvLoadImage(“C:\\hinh.jpg”);
• Hàm cvNameWindow() tạo một cửa sổ trên màn hình để chứa và hiển thị ảnh.

cvNameWindow(“My Window”);
• Hàm cvShowImage() hiển thị hình ảnh lên cửa sổ vừa tạo thông qua hàm này.
cvShowImage(“My Window”, img);
• Hàm chuyển đổi hệ màu:
cvCvtColor(IplImage* src, IplImage* dst, int code);
• Hàm sao chép ảnh:
cvCopyImage(IplImage* scr, IplImage* dst);
• Hàm hủy đối tượng:
cvReleaseImage(IplImage** image);
5


CHƯƠNG 2: TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE
2.1. Khái niệm về nhận dạng biển số xe
2.1.1. Khái niệm & ứng dụng
a) Khái niệm
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, tốc độ xe … v…v.
Phân loại ứng dụng nhận dạng biển số xe: 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:
Loại 1: Giới hạn vùng nhìn:


Đầ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 có thể thu được ảnh vùng biển số xe.



Ứng dụng: Những ứng dụng nhận dạng biển số xe loại này thường được
ứng dung tại cac trạm kiểm soát, các trạm thu phí, các bãi gửi xe tự động,
các trạm gác cổng.

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 thêm
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 đó.
6


• 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 (camera, 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. Cuối cùng tùy thuộc vào mục
đích sử dụng mà kết quả nhận dạng được truyền đi hay lưu trữ để phục vụ
nhu cầu khác.
• Ứng dụng: Vì không phụ thuộc vào hình ảnh thu được nên cp Gradient
Dựa vào cực đại hóa của đạo hàm. Theo định nghĩa, gradient là một vecto có các
thành phần biểu thị tốc độ thay đổi giá trị của điểm ảnh theo 2 hướng x và y. Các thành
phần của Gradient được tính bởi:
𝜕𝑓(𝑥, 𝑦)

𝑓 (𝑥 + 𝑑𝑥, 𝑦) − 𝑓(𝑥, 𝑦)
= 𝑓𝑥 ≈
𝜕𝑥
𝑑𝑥
𝜕𝑓(𝑥, 𝑦)
𝑓 (𝑥, 𝑦 + 𝑑𝑦) − 𝑓 (𝑥, 𝑦)
= 𝑓𝑥 ≈
𝜕𝑦
𝑑𝑦
Đổi sang tọa độ cực
x = rcos𝜃 ; y=rsin𝜃
Suy ra:
𝜕𝑓
𝜕𝑓
𝜕𝑓
=
𝑐𝑜𝑠𝜃 +
𝑠𝑖𝑛𝜃
𝜕𝑟
𝜕𝑥
𝜕𝑦
𝜕𝑓
𝜕𝑓
𝜕𝑓
(−𝑟𝑠𝑖𝑛𝜃) +
=
𝑐𝑜𝑠𝜃
𝜕𝑟
𝜕𝑥
𝜕𝑦

21


Với dx là khoảng cách giữa các điểm theo hướng x (khoảng cách tính bằng
số điểm) và tương tự với dy. Trên thực tế người ta hay dùng với dx= dy= 1
Với một ảnh liên tục f(x, y), các đạo hàm riêng của nó cho phép xác định vị trí
cục bộ theo hướng của biên. Thực vậy, gradient của một ảnh liên tục, được biểu diễn
bởi một hàm f(x,y), dọc theo r với góc

, được định nghĩa bởi:

𝑑𝑓
𝜕𝑓 𝑑𝑥 𝜕𝑓 𝑑𝑦
=
+
= 𝑓 (𝑥)𝑐𝑜𝑠𝜃 + 𝑓 (𝑦)𝑠𝑖𝑛𝜃
𝑑𝑟
𝜕𝑥 𝑑𝑟 𝜕𝑦 𝑑𝑟
Chú ý: Khi ta nói lấy đạo hàm của ảnh nhưng thực ra chỉ là mô phỏng và xấp xỉ
đạo hàm bằng các kỹ thuật nhân chập (phép cuộn). Do ảnh số là tín hiệu rời rạc nên đạo
hàm không tồn tại
Kỹ thuật Gradient sử dụng một cặp mặt nạ H1 và H2 trực giao (theo 2 hướng
vuông góc). Nếu định nghĩa g1, g2 là gradient tương ứng theo 2 hướng x và y, thì
biên độ của gradient, ký hiệu là g tại điểm (m,n) được tính theo công thức:
A0 = g(m,n) = √𝑔12 (𝑚, 𝑛) + 𝑔22 (𝑚, 𝑛)

(1)

𝜃(𝑚, 𝑛) = 𝑡𝑎𝑛−1 (𝑔2 (𝑚, 𝑛)/𝑔1 (𝑚, 𝑛))


(2)

Chú ý: để giảm tính toán công thức (1) được tính gần đúng bởi:
A0 = |g1(m,n)| + |g2(m,n)|
Các toán tử đạo hàm được áp dụng là khá nhiều, ở đây ta chỉ xét một số toán tử
tiêu biểu: toán tử Robert, toán tử Sobel,…..
*)Kỹ thuật Robert:
Với mỗi điểm ảnh I(x,y) của I, đạo hàm theo x, theo y được ký hiệu tương
ứng bởi gx, gy được tính:

22


{

𝑔𝑥 = 𝐼(𝑥 + 1, 𝑦) − 𝐼(𝑥, 𝑦)
𝑔𝑦 = 𝐼 (𝑥, 𝑦 + 1) − 𝐼(𝑥, 𝑦)

Điều này tương đương với việc chập ảnh với 2 mặt nạ H1 và H2:
0
𝐻1 = [
1

1
]
0

𝐻2 = [

−1

0

0
]
−1

Quá trình tính toán được thực hiện qua 2 bước:


Bước 1: Tính 𝐼𝑥 = 𝐼 ⨂ 𝐻𝑥 và 𝐼𝑦 = 𝐼 ⨂ 𝐻𝑦



Bước 2: Tính √𝐼𝑥2 + 𝐼𝑦2

Từ ma trận √𝐼𝑥2 + 𝐼𝑦2 chọn ra các cao thứ 2, hoặc thứ 3,..chiếm đa số

*)Kĩ thuật Sobel:
Kĩ thuật này sử dụng 2 mặt nạ H1 và H2:
−1
𝐻1 = [−2
−1

0
0
0

1
2]
1


−1 − 2 − 1
𝐻2 = [ 0
0
0]
1
2
1

Quá trình tính toán thực hiện qua 2 bước:


Bước 1: Tính 𝐼𝑥 = 𝐼 ⨂ 𝐻𝑥 và 𝐼𝑦 = 𝐼 ⨂ 𝐻𝑦



Bước 2: Tính |𝐼 ⨂ 𝐻𝑥 | + |𝐼 ⨂ 𝐻𝑦 |

*)Kĩ thuật PreWitt:
Tương tự kĩ thuật Sobel, kĩ thuật PreWitt sử dụng 2 ma trận mặt nạ nhân chập là:
−1
𝐻1 = [−1
−1

0
0
0

1
1]

1

−1 − 1 − 1
𝐻2 = [ 0
0
0]
1
1
1

b) Kĩ thuật Laplace
23


Các phương pháp đánh giá Gradient ở trên làm việc khá tốt khi mà độ sang
thay đổi rõ nét. Khi mức xám (giá trị tại một điểm của ảnh ) thay đổi chậm, miền chuyển
tiếp trải rộng, thì ta có phương pháp Laplace (đạo hàm bậc hai) có hiệu quả hơn. Toán tử
Laplace được định nghĩa như sau:
𝜕2𝑓 𝜕2𝑓
∇ 𝑓 = 2+
𝑑𝑥
𝑑𝑦 2
2

Vậy suy ra ta có:
∇(𝑓(𝑥 + 1, 𝑦) − 𝑓 (𝑥, 𝑦))
∇2 𝑓
∇ ∇𝑓
=
( ) ≈

≈ [𝑓(𝑥 + 1, 𝑦) − 𝑓 (𝑥, 𝑦) − 𝑓(𝑥 − 1, 𝑦)]
2
∇𝑥
∇𝑥 ∇𝑥
∇𝑥
= 𝑓 (𝑥 + 1, 𝑦) − 2𝑓(𝑥, 𝑦)
+ 𝑓 (𝑥, 𝑦 − 1)
Tương tự ta có:
∇2 𝑓
= 𝑓 (𝑥, 𝑦 + 1) − 2𝑓(𝑥, 𝑦) + 𝑓(𝑥, 𝑦 − 1)
∇𝑦 2
Toán tử Laplace dùng nhiều kiếu mặt nạ khác nhau để tính xấp xỉ đạo hàm rời rạc
bậc 2. Dưới đây là 3 kiểu mặt nạ hay dùng:
0 −1
1
𝐻1 = [−1
4 − 1]
0 −1
0

−1 − 1
1
𝐻1 = [ −1
8
1]
−1 − 1 − 1

1 − 2
1
𝐻1 = [ −2

5 − 2]
1 −2
1

Quá trình được thực hiện qua các bước sau:


Bước 1: 𝐻 ⨂ 𝐼



Bước 2: |𝐻 ⨂ 𝐼 (𝑥, 𝑦)|



Bước 3: Tách ngưỡng

Ý nghĩa hình học: 𝐻 ⨂𝐼(𝑥, 𝑦)
= 4𝐼 (𝑥 + 1, 𝑦 + 1) − 𝐼 (𝑥, 𝑦 + 1) − 𝐼(𝑥, 𝑦 + 1) − 𝐼(𝑥 + 2, 𝑦 + 1) − 𝐼(𝑥 +
24


1, 𝑦 + 2)
= 𝐼 (𝑥 + 1, 𝑦 + 1) − 𝐼 (𝑥 + 1, 𝑦) + 𝐼(𝑥 + 1, 𝑦 + 1) − 𝐼 (𝑥, 𝑦 + 1)
+𝐼(𝑥 + 1, 𝑦 + 1) − 𝐼(𝑥 + 2, 𝑦 + 2) + 𝐼 (𝑥 + 1, 𝑦 + 1) − 𝐼(𝑥 + 1, 𝑦 + 2)
=

𝜕𝐼(𝑥 + 1, 𝑦) 𝜕𝐼 (𝑥, 𝑦 + 1) 𝜕𝐼(𝑥 + 1, 𝑦 + 1) 𝜕𝐼 (𝑥 + 1, 𝑦 + 1)
+



𝜕𝑦
𝜕𝑥
𝜕𝑦
𝜕𝑥

=−

𝜕 2 𝐼(𝑥 + 1, 𝑦 + 1) 𝜕 2 𝐼(𝑥 + 1, 𝑦 + 1)

= −∇2 𝐼
2
2
𝜕𝑥
𝜕𝑦

3.3. 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 đoan chính:


Giai đoan 1: định vị vị trí của biển số trong ảnh chụp từ webcam.



Giai đoan 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.

Hình 3.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. Ngoài ra, định vị biển số còn dựa trên màu sắc của biển số. Hầu hết
các biển số xe Việt Nam đều nền trắng, chữ đen. 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à cắt vùng rộng hơn vùng chứa biển số. Sau đó tìm góc
nghiêng của biển số và thực hiện xoay biển số về phương thẳng đúng. Bước hai là cắt
25


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.
3.3.1. Tìm vùng màu trắng
Vì biển số màu trắng nên người thực hiện sẽ nhị phân hóa ảnh bằng cách gán giá
trị cho các pixel trắng là 1, còn ngược lại là 0. Đầu tiên, chúng ta sẽ biến đổi ảnh gốc
thành ảnh xám (có mức sáng từ 0 đến 255), sau đó nhị phân hóa với một ngưỡng thích
hợp. Nếu ảnh được chụp vào ban đêm hay ban ngày nhưng ít ánh sáng thì mức ngưỡng
sẽ là 120. Còn ban ngày, nhiều ánh sáng là 190.
Vấn đề ở đây là làm sao chúng ta nhận biết được đó là ảnh sáng hay ảnh tối?
Người thực hiện đã dựa vào lược đồ mức xám ( histogram – tần số xuất hiện của mức
xám ) của ảnh. Nếu tần số xuất hiện các pixel có giá trị <64 thì đó là ảnh tối, ngược lai
là ảnh sáng.

Hình 3.2: Tìm vùng màu trắng


2.3.2. Xác định vùng chứa biển số
Ảnh nhận được sau khi nhị phân hóa sẽ có nhiều vùng màu trắng, và biển số sẽ
nằm trong vùng màu trắng thỏa điều kiện:
➢ 0.75 < chiều cao / chiều ngang < 0.91
26


➢ 16000 ≤ S_pixel_trắng ≤ 61000
➢ ≤ S_pixel_trắng / S_biển số ≤ 0.7
Với:
Chiều cao là H {

H = start(i).Boundingbox(4)

}

Chiều ngang là W {W = start(i).Boundingbox(3)

}

Diện tích vùng trắng là S_pixel_trắng { S_pixel_trắng = start(i).Area }
Diện tích biển số là S_biển số { S_biển số = W × H }
Tỉ số 2 kích thước của biển số là 0.75 nhưng khi bị nghiêng thì là 0.91

Hình 3.3: Hình dạng biển số khi bị nghiêng

Hình 3.4: Hình xác định vùng chứa biển số

27



Sau điều kiện thứ nhất, sẽ có những vùng trắng không chứa biển số nhưng có tỉ
số giữa chiều cao và chiều ngang phù hợp thì vẫn được chọn. Ta sẽ loại bỏ những vùng
này bằng điều kiện thứ hai – diện tích vùng trắng. Vì khoảng cách từ webcam tới xe cố
định (ta lấy trước khoảng cách chụp ) nên số lượng pixel trắng chứa trong biển số cố
định.
3.3.3. Cắt vùng chứa biển số
Sau khi xác định được vùng nào chứa biển số, ta tiến hành cắt biển số trên ảnh
màu RBG. Do sự tương đồng của ảnh nhị phân và ảnh màu RBG nên tọa độ một pixel
trên ảnh nhị phân tương ứng tọa độ trên ảnh màu RBG. Do đó khi xác định được tọa độ
trên ảnh nhị phân, ta dùng tọa độ này để cắt trên ảnh màu RBG.
Đây là một việc rất quan trọng, kết quả của nó quyết định tới kết quả của hệ
thống nhận dạng biển số.

Hình 3.5: Hình Sau khi cắt biển số

28


3.4. Phân đoạn kí tự
3.4.1. Tổng quan về phân đoạn kí tự
Kết quả của khối tách biển số là một ảnh màu RBG có chứa biển số xe. Để nhận
dạng các kí tự trong biển số, ta tiến hành phân đoạn kí tự trong biển số. Phân đoạn kí tự
là việc cắt các kí tự trong biển số xe .
Sau khi nhận kết quả của khối tách biển số, khối phân đoạn kí tự bắt đầu tiến
hành tách từng kí tự trong biển số. Trước khi phân đoạn kí tự, ảnh của biển số được
chuyển thành ảnh nhị phân. Ảnh nhị phân được chuẩn hóa về kích thước chuẩn, sau đó
tiến hành cắt các kí tự. Kết quả của quá trình phân đoạn là một ma trận chứa các ảnh
đen trắng của kí tự.


Hình 3.6: Sơ đồ khối phân đoạn kí tự

3.4.2. Nhị phân biển số xe
Đây là bước quan trọng để nhận dạng biển số xe. Bước này sẽ tìm mức ngưỡng
tối ưu, sau đó tiến hành nhị phân hóa ảnh với ngưỡng vừa tìm được nhằm làm tăng độ
tương phản của kí tự với nền biển số.

29


Hình 3. 7: ảnh sau khi được nhị phân.

3.4.3. Phân đoạn kí tự
Ma trận binary của biển số chính là ngõ vào của chương trình phân vùng kí
tự. Trước khi phân vùng kí tự, ta chia ma trận ảnh biển số thành từng hàng và lần
lượt đưa từng hàng vào chương trình phân vùng. Tuy nhiên, ở đây, người thực hiện
chỉ tiến hành nhận dạng kí tự của hàng 2 nên ta chỉ ngỏ vào của chương trình phân
vùng kí tự là ma trận của hàng 2.
Để phân chia thành nhiều ma trận kí tự từ ma trận biển số, ta dựa vào tổng số
pixel mức 1 ( mức 1 là màu trắng - màu của kí tự, mức 0 là màu đen – màu của
nền). Với ma trận của hàng 2 sau khi đã chia đôi, giữa 2 kí tự có rất ít pixel có mức
1 (trong trường hợp lý tưởng, thì sẽ là 0 ). Như vậy khi cộng giá trị các pixel theo
từng cột, như hình sau, ta thấy giá trị tại các vùng giữa 2 kí tự rất thấp ( đây cũng là
tổng số pixel mức 1). Từ đó, giải thuật phân vùng sẽ những vùng này dựa vào giá
trị của nó nhỏ hơn những vùng lân cận và sẽ phân chia thành từng vùng. ở đây, ta
sẽ tìm 4 phân vùng tương ứng với 4 kí tự.

30



Hình 3. 8: Tổng số các bít theo 1 hàng của biển số

Chương trình có lựa chọn 2 thông số: Min_area và digit_width.
Min_area là diện tích cho phép nhỏ nhất của 1 kí tự, là tích của giá trị cột lớn
nhất với độ rộng của phân vùng đó.

Hình 3.9: Hình thể hiện thông số Min_area

31


Digit_width là độ rộng tối đa cho phép của 1 phân vùng kí tự.

Hình 3.10: Hình thể hiện thông số Digit_width

Sau khi phân vùng được các kí tự ta tiến hành cắt các kí tự ra khỏi biển số.

Hình 3.11: các kí tự được cắt khỏi biển số

32


3.4.4. Chương trình phân vùng từng kí tự
Chương trình con này thực hiện việc tìm vùng ranh giới giữa 2 kí tự, tương ứng
giữa 2 vùng ranh giới liên tiếp sẽ là vùng kí tự, chương trình sẽ trả về vị trí của vùng kí
tự. Tuy nhiên, chương trình cũng có thể trả về số vùng kí tự lớn hơn 4 do ảnh hưởng của
môi trường. Trường hợp này ta vẫn có thể tối ưu chương trình để tăng độ chính xác.
Với kết quả trả về nhỏ hơn 4, ta sẽ xóa các pixel tai các vùng ranh giới ( gần các giá
trị đó bằng 0 ). Điều này làm cho việc thực hiện chương trình chính xác hơn.
Với kết quả trả về lớn hơn 4 ( nghĩa là có 1 hay nhiều vùng không chứa kí tự ), ta sẽ

lấy 4 vùng có diện tích lớn nhất ( vì thông thường, các vùng không có kí tự nhỏ hơn các
vùng có kí tự ).
3.4.4.1. Chương trình chọn 4 phân vùng lớn nhất
Trước tiên chương trình sẽ sắp xếp các phân vùng theo thứ tự diện tích từ nhỏ
đến lớn, sau đó sẽ giữ lại 4 phân vùng có diện tích lớn nhất nhưng vẫn giữ nguyên vị trí
của chúng trước khi sắp xếp.
3.4.4.2. Chương trình phân vùng
Chương trình này sẽ tìm ra vị trí ranh giới giữa các kí tự và trả về số phân vùng
tương ứng với số kí tự.
➢ Chương trình con vitricuctieu: tìm vị trí các cột trong ma trận đầu vào mà
có giá trị ngưỡng nhỏ hơn giá trị ta đặt.
➢ Chương trình con clean: xóa những vị trí ( đã tìm được trong Chương
trình con vitricuctieu ) mà khoảng cách tới vị trí kế tiếp quá nhỏ.
3.4.3.3. Chương trình con vitricuctieu
Đây là chương trình con quan trọng nhất trong chương trình phân vùng. Chương
trình quét toàn bộ ma trận ảnh đầu vào, tìm vị trí “khá nghi”, xóa các vị trí mà khoảng
cách với vị trí kế tiếp khá lớn ( lớn hơn khoáng cách cho phép ) thì sẽ thực hiện lại
chương trình này trong khoảng 2 vị trí đó để tiếp tục phân thành nhiều vùng nhỏ hơn.

33


➢ Tìm vị trí nhỏ hơn ngưỡng: Tìm các vị trí trong ma trận đầu vào có giá trị
nhỏ hơn ngưỡng. Nếu không tìm được vị trí nào hoặc chỉ tìm được 1 vị trí thì ta sẽ tăng
giá trị ngưỡng lên 1.
➢ Đoạn chương trình thêm vào 2 vị trí đầu tiên và kết thúc nếu có giá trị
lớn hơn ngưỡng: Những vị trí tìm được có thể có vị trí hai biên của ma trận đầu vào
hoặc là không. Tuy nhiên, nếu biên vẫn có giá trị lớn hơn ngưỡng thì ta phải thêm vị trí
này.
3.5. Nhận dạng kí tự

2.5.1. Tổng quan về nhận dạng kí tự
Sau khi thực hiện phân vùng ta sẽ được 4 ma trận tương ứng với 4 kí tự trên 1
hàng biển số. Lần lượt từng ma trận kí tự sẽ được đưa vào chương trình nhận dạng. Kết
quá cuối cùng sẽ là 4 kí tự số và chương trình sẽ hiển thị kí tự này dưới dạng text.
Thực chất, quá trình nhận dạng là quá trình đổi ma trận điểm ảnh của các kí tự
thành mã ASCII tương ứng với kí tự đó. Để làm được điều này người ta đem so sánh
ma trận của kí tự với tất cả các ma trận trong tập mẫu, ma trận mẫu nào có khả năng
giống nhiều nhất thì đó chính là kí tự cần tìm.
3.5.2. Công nghệ nhận dạng OCR
Nhận dạng kí tự quang học (Optical Character Recognition, viết tắt là OCR), là
loại phần mềm máy tính được tạo ra để chuyển các hình ả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. OCR được
hình thành từ một lĩnh vực nghiên cứu về nhận dạng mẫu, trí tuệ nhân tạo và machine
vision. Mặc dù công việc nghiên cứu học thuật vẫn tiếp tục, một phần công việc của
OCR đã chuyển sang ứng dụng trong thực tế với các kỹ thuật đã được chứng minh.
Nhận dạng kí tự quang học (dùng các kỹ thuật quang học chẳng hạn như gương và
ống kính) và nhận dạng kí tự số (sử dụng máy quét và các thuật toán máy tính) lúc đầu
được xem xét như hai lĩnh vực khác nhau. Bởi vì chỉ có rất ít các ứng dụng tồn tại với
34


các kỹ thuật quang học thực sự, bởi vậy thuật ngữ Nhận dạng kí tự quang học được
mở rộng và bao gồm luôn ý nghĩa nhận dạng kí tự số.
Đầu tiên hệ thông nhận dạng yêu cầu phải được huấn luyện với các mẫu của các kí
tự cụ thể. Các hệ thống “thông minh” với độ chính xác nhận dạng cao đối với hầu hết
các phông chữ hiện nay đã trở lên phổ biến. Một số hệ thống còn có khả năng tái tạo lại
các định dạng của tài liệu gần giống với bản gốc bao gồm: hình ảnh, các cột, bảng biểu,
các thành phần không phải là văn bản.
Hiện nay, với chữ Việt, phân mềm nhận dạng chữ việt in VnDOCR 4.0 có khả
năng nhận dạng trực tiếp các loại tài liệu được quét qua máy quét, không cần lưu trữ

dưới dạng tệp ảnh trung gian. Các trang tài liệu có thể được quét và lưu trữ dưới dạng
tệp tin nhiều trang. Kết quả nhận dạng được lưu trữ sang định dạng của Microsoft
Word, Excel…. Phục vụ rất tốt nhu cầu số hóa dữ liệu.
Ngoài ra, còn có một dự án OCR Tiếng Việt có tên VietOCR, được phát triển dựa
trên nên tảng mã nguồn mở tesseract-orc do Google tài trợ. VietOCR có khả năng nhận
dạng chữ viết rất tốt. Đây là một chương trình nguồn mở Java/.NET, hỗ trợ nhận dạng
cho các dạng ảnh PDF, TIFF, JPEG, GIF, PNG, và BMP
ABBYY - một hãng công nghệ hàng đầu trên thế giới với lĩnh vực Nhận dạng kí
tự quang học đã tiến hành nghiên cứu và triển khai công nghệ nhận dạng Tiếng Việt
vào tháng 4 năm 2009, Với công nghệ này độ chính xác trong việc nhận dạng tài liệu
chữ in Tiếng Việt lên tới hơn 99% (cứ nhận dạng 100 kí tự thì có chưa đến 1 kí tự sai).
Công nghệ của ABBYY chấp nhận hầu hết các định dạng ảnh đầu vào như :PDF, TIFF,
JPEG, GIF, PNG, BMP, PCX, DCX, DjVu…. Kết quả nhận dạng được lưu trữ dưới các
định dạng MS Word, MS Excel, HTML, TXT, XML, PDF, PDF 2 lớp, trong đó định
dạng PDF 2 lớp là định dạng hoàn hảo cho việc lưu trữ và khai thác tài liệu.

35


CHƯƠNG 4. XÂY DỰNG DEMO CHƯƠNG TRÌNH
4.1. Cấu hình hệ thống
4.1.1. Yêu cầu hệ thống
Để cài đặt demo tiến hành thành công, máy tính cài đặt cần phải đáp ứng các yêu
cầu về phần cứng và yêu cầu về phần mềm sau:
Yêu cầu phần cứng:
• CPU bộ xử lý Pentium
• RAM tối thiểu 512M
• Đĩa cứng còn trống 10M
• Màn hình độ phân giải tối thiểu 800 x 600
Yêu cầu về phần mềm:

• Hệ điều hành Windows.
• .Net Framework 4.5 hoặc cao hơn.
4.1.2. Chương trình cần thiết cho thiết kế
- Microsoft Visual Studio 2019
- Entity Framework 4.5
4.2. Giao diện chương trình

Hình 4.1: Giao diện chính của chương trình

36


Hình 4.2: Giao diện chạy chương trình

Do hạn chế về điều kiện vật chất và kĩ thuật nên em đã demo chương trình bằng file
ảnh biển số sẵn có.
Đầu tiên chọn file ảnh đầu vào chứa biển số cần nhận dạng.

Hình 4.3: . Hình ảnh file ảnh gốc khi cho vào nhận dạng

37


Sau đó hệ thống sẽ sử dụng thư viện EmguCV để xác định chính xác vị trí của biển
số xe trong ảnh đầu vào.

Hình 4.4: Hình ảnh xác định vị trí biển số xe từ file ảnh gốc

Khi xác định được vị trí biển số xe ta tiến hành cắt lấy biển số xe.


Hình 4.5: Hình ảnh biển số xe được cắt ra từ ảnh gốc
38


×