Professional Documents
Culture Documents
1
4.3.2. Nhược điểm ...............................................................................................................................................40
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
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
• 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);
5
CHƯƠNG 2: TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE
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:
• Đầ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 có thể dùng
ứng dụng tại nhiều nơi như tại những nơi điều tiết giao thông, tại các vị trí
nhạy cảm của giao thông như ngã ba, ngã tư đường giao nhau, kiểm soát,
phát hiện những hành vi vi phạm an toàn giao thông.
• Yêu cầu về thiết bị: Máy quét, đèn chiếu, bộ phận thu – tách hình ảnh, máy
tính và các thiết bị khác.
Ứng dụng mà nghiên cứu hướng tới trong quá trình xây dựng là ứng dụng loại 2. Vì
vậy, trong toàn bộ báo cáo này, chỉ nêu cách thức giải quyết là làm sao phát hiện được
biển số xe từ ảnh chụp.
7
b) Ứng dụng của hệ thống nhận dạng biển số xe
Hệ thống nhận dạng biển số xe được xây dựng nhằm mục đích giám sát, kiểm
soát các phương tiện. Dưới đây chúng ta đề cập đến một số ứng dụng phổ biến đối với
hệ thống nhận dạng biển số xe:
- Thu phí giao thông: Lắp đặt hệ thống “Nhận dạng biển số xe” tại các trạm thu phí
nhằm hỗ trợ hoặc tự động hóa công tác thu phí.
- Kiểm soát xe tại các đường biên giới: Mỗi quốc gia đều có những quy định riêng
về biển số xe, để phục vụ cho công tác quản lý và phát hiện những phương tiện
giao thông (xe) vượt biên giới bất hợp pháp. Việc lắp hệ thống “Nhận dạng biển
số xe” tại các trạm kiểm soát sẽ góp phần hỗ trợ công tác kiểm tra và an ninh
quốc gia.
- Các trạm gác cổng: Việc lắp đặt hệ thống “Nhận dạng biển số xe” sẽ hỗ trợ
hoặc tự động hóa công tác mở cổng cho xe vào.
- Ngoài ra, hệ thống còn được ứng dụng vào công tác chống trộm xe, các bãi
giữ xe tự động, điều tiết giao thông.
Bảng 2.1: Biển số xe các tỉnh thành trên cả nước (theo Wikipedia)
8
18-Nam Định 60-Đồng Nai không)
19-Phú Thọ 61-Bình Dương 81-Gia Lai
20-Thái Nguyên 62-Long An 82-Kon Tum
21-Yên Bái 63-Tiền Giang 83-Sóc Trăng
23-Hà Giang 64-Vĩnh Long 84-Trà Vinh
24-Lào Cai 65-Cần Thơ 85-Ninh Thuận
25-Lai Châu 66-Đồng Tháp 86-Bình Thuận
26-Sơn La 67-An Giang 88-Vĩnh Phúc
27-Điện Biên 68-Kiên Giang 89-Hưng Yên
28-Hòa Bình 69-Cà Mau 90-Hà Nam
29 đến 33-Hà Nội 70-Tây Ninh 92-Quảng Nam
34-Hải Dương 71-Bến Tre 93-Bình Phước
35-Ninh Bình 72-Bà Rịa – Vũng 94-Bạc Liêu
36-Thanh Hóa Tàu 95-Hậu Giang
37-Nghệ An 73-Quảng Bình 97-Bắc Cạn
38-Hà Tĩnh 74-Quảng Trị 98-Bắc Giang
43-Đà Nẵng 75-Huế 99-Bắc Ninh
76-Quảng Ngãi
- Màu xanh chữ trắng là biển xe của cơ quan hành chính sự nghiệp:
• Trực thuộc chính phủ là biển xanh 80.
• Các tỉnh thành thì theo số tương ứng
- Màu đỏ chữ trắng là biển xe trong quân đội:
Bảng 2.2: Biển số xe trong quân đội (theo Wikipedia)
AT: Binh đoàn 12 KA: Quân khu 1 QH: Quân chủng Hải
quân
9
AD: Quân đoàn 4, KB: Quân khu 2 QK, QP: Quân chủng PK
Binh đoàn Cửu Long - KQ
BB: Bộ binh KC: Quân khu 3 TC: Tổng cục Chính trị
BC: Binh chủng KD: Quân khu 4 TH: Tổng cục Hậu cần
Công binh
BH: Binh chủng Hóa KV: Quân khu 5 TK: Tổng cục Công
học nghiệp
Quốc phòng
BP: Bộ Tư lệnh biên KP: Quân khu 7 TT: Tổng cục Kỹ thuật
phòng
HB: Học viện Lục KK: Quân khu 9 TM: Bộ tổng Tham mưu
quân
HH: Học viện Quân y PP : Các quân y viện VT : Tập đoàn Viễn thông
quân dội Viettel
Các Ban của Trung Văn phòng Chính Bộ ngoại giao. Đài truyền hình Việt
ương Đảng. phủ Nam.
Văn phòng Chủ tịch Bộ Công an. Viện kiểm soát Đài tiếng nói Việt
nước. nhân dân tối cao. Nam.
Văn phòng Quốc Xe phục vụ các Toà án nhân dân Thông tấn xã Việt
10
hội. đồng chí uỷ viên tối cao. Nam.
Trung ương Đảng
công tác tại Hà
Nội và các thành
viên Chính phủ.
Báo nhân dân. Thanh tra Nhà Học viện Chính Ban quản lý Lăng,
nước. trị quốc gia Bảo tàng, khu Di
tích lịch sử Hồ Chí
Minh.
Trung tâm lưu trữ Uỷ ban Dân số kế Tổng công ty Dầu Các đại sứ quán, tổ
quốc gia. hoạch hoá gia khí Việt Nam. chức quốc tế và
đình. nhân viên người
nước ngoài
Uỷ ban Chứng Cục Hàng không Kiểm toán nhà
khoán Nhà nước. dân dụng Việt nước.
Nam.
- Các biển A :
Xe của Công An - Cảnh Sát tương ứng với các tỉnh
➢ Do điều kiện hạn chế nên trong đề tài này, chúng em chỉ sử dụng ảnh đầu vào là
loại biển nền trắng chữ đen thông thường.
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
triển vùng, hoặc sử dụng khung chữ nhật di chuyển trong để tìm ra vùng có tính chất thỏa
mãn biển số xe và tiến hành nhận dạng.
• Ưu điểm: rất đơn giản, và xử lý rất nhanh đối với những ảnh chỉ chứa vùng
biển số.
• Nhược điểm: khi ảnh có thêm nhiều đối tượng không phải là vùng biển số xe,
chẳng hạn là ảnh chụp tổng quát gồm cả cảnh vật bên ngoài thì cách tiếp cận
này trở nên không hiệu quả. Vì vậy phương pháp này rất hiệu quả đối với hệ
thống trạm thu phí, trạm gác cổng, gửi xe tự động.
• Ưu điểm: độ chính xác cao. Và các hệ thống nhận dạng đa phần đều phát triển
theo hướng tiếp cận này.
• Nhược điểm: Độ phức tạp tính toán khá cao. Khi ảnh có thêm nhiêu đối
tượng khác thì khối lượng tính toán tăng lên rất nhiều. Do mục đích là phải xác
định được vùng con nào chứa biển số xe.
• Ưu điểm: Không lệ thuộc nhiều vào ảnh đầu vào. Rất thích hợp cho hệ
“Nhận dạng biển số xe” loại 2.
12
• Nhược điểm: Chi phí tính toán cao nếu không giải quyết tốt giai đoạn tìm
cạnh, và đòi hỏi những heuristic đưa vào phải qua thưc nghiệm kiểm chứng hoặc do các
chuyên gia cung cấp.
Ngoài ba cách tiếp cận trên, còn có nhiều cách tiếp cận khác để xác định chính
xác vùng nào chứa biển số xe và bước cuối cùng là tiến hành nhận dạng kí tự. Mỗi
cách tiếp cận có một ưu và nhược điểm. Nghiên cứu này sẽ đi theo hướng tiếp cận phát
triển vùng kết hợp với biến đổi Hough để tìm ra biển số xe ô tô có 2 hàng kí tự.
• Số lượng kí tự trong biển số xe: Mỗi kí tự thường có tỉ lệ kích thước về chiều rộng,
chiều cao tương ứng với chiều dài và chiều rộng của biển số xe. Chiều cao của 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
13
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.
b) Các bước thực hiện
Để giải quyết bài toán phát hiện biển số xe, trong báo cáo trình bày 4 bước như
sau:
• Bước 1: Ảnh được truyền vào máy tính, gọi ảnh đầu vào là F(x,y).
• Bước 2: Từ ảnh đầu vào F(x,y) thực hiện phương pháp dò biên và phát triển vùng
để tìm ra vùng con có khả năng chứa biển số xe. Ta gọi tập các vùng con này là Sc
= {Pbi(x,y)}.
• Bước 3: Xác định chính xác vùng con nào chứa biển số xe bằng 2 thao tác được
miêu tả ở trên đó là tiêu chí tỉ lệ chiều dài với chiều rộng và số kí tự trong biển số
xe. Kết quả của bài toán này là một hay một tập các ảnh con chứa biển số xe. Gọi
tắt là ảnh biển số xe và kí hiệu là Sbs = {Fbj(x,y)} - tập kết quả.
Để thực hiện được các bước này, nghiên cứu sử dụng thư viện EmguCV, một thư viện
mã nguồn mở được xây dựng phục vụ cho việc xử lý ảnh.
c) Giới thiệu sơ lược về thư viện xử lý ảnh EmguCV
EmguCV là một thư viện mã nguồn mở được Intel đưa ra phiên bản đầu tiên vào năm
1993 phục vụ cho việc nghiên cứu và phát triển thị giác máy tính, 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 đơn giản, thuận tiện hơn.
EmguCV 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 an ninh, y tế, camera quan sát, nhận diện, lập trình cho robot. Thông
tin chi tiết về OpenCV có thể tham khảo tại trang chủ: http://www.emgu.com/
• EmguCV được viết hoàn toàn bằng C#. Có thể chạy trên bất kỳ nền tảng hỗ trợ
bao gồm iOS, Android, Windows Phone, Hệ điều hành Mac OS X và Linux.
• EmguCV có thể được sử dụng từ nhiều ngôn ngữ khác nhau, bao gồm C#,
VB.NET, C ++ và Iron Python.
• Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể …
• Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng …
• Nhận dạng cử chỉ.
• Hỗ trợ tài liệu XML và intellisense.
• Sự lựa chọn để sử dụng hình ảnh lớp hoặc trực tiếp gọi chức năng từ OpenCV.
14
Các bước tích hợp EmguCV vào .NET như sau:
Bước 1: Download một trong các version của EmguCV http://www.emgu.com/ sau đó
cài đặt.
15
Bước 4: Chọn tới thư mục chứa EmguCV\emgucv-windows-
universal_version\bin\Emgu.CV
Bước 5: Trong Filter: gõ emgucv > Chọn tất cả các control hiện ra > OK.
16
Bước 6: Kết quả là trong Toolbox sẽ có các control.
17
Bước 8: Right mouse click > Solution Explorer > Add Reference Manager.
Bước 9: Trong hộp thoại Reference Manger > Framework > Browse
Bước 10: Tìm đến thư mục chứa EmguCV > emgucv-windows-
universal_version\bin > Chọn các file .dll
18
Bước 11: Tìm tới thư mực chứa EmguCV\emgucv-windows-
universal_version\bin\x64 > Copy file .dll.
19
CHƯƠNG 3: QUY TRÌNH NHẬN DẠNG BIỂN SỐ XE
b) Mức xám
Mức xám là cường độ sáng của mỗi điểm ảnh ứng với một giá trị số. Các thang
mức xám thường dung 16, 32, 64. Mã hóa 256 mức là phổ dụng nhất do lí do kĩ thuật. Vì
28 = 256, nên với 256, mỗi pixel được mã hóa bơi 8 bit.
𝑔
[∑𝑖=0 𝑖ℎ(𝑖)]
Gọi m(g) = ⁄ 𝑔 là giá trị trung bình cấp xám g
𝑡(𝑔) = ∑𝑖=0 𝑖𝑃(𝑖)
𝑡(𝑔)
f(g) = * [m(g) – m(G-1)]2 – 1
𝑃−𝑡(𝑔)
𝜃 = argmaxf(g) với 0< g < G-1. Vậy suy ra 𝜃 là ngưỡng của ảnh.
20
3.2. Biên và các phương pháp phát hiện biên
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:
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,…..
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 0
𝐻1 = [ ] 𝐻2 = [ ]
1 0 0 −1
• Bước 1: Tính 𝐼𝑥 = 𝐼 ⨂ 𝐻𝑥 và 𝐼𝑦 = 𝐼 ⨂ 𝐻𝑦
Từ ma trận √𝐼𝑥2 + 𝐼𝑦2 chọn ra các cao thứ 2, hoặc thứ 3,..chiếm đa số
−1 0 1 −1 − 2 − 1
𝐻1 = [−2 0 2] 𝐻2 = [ 0 0 0]
−1 0 1 1 2 1
• Bước 1: Tính 𝐼𝑥 = 𝐼 ⨂ 𝐻𝑥 và 𝐼𝑦 = 𝐼 ⨂ 𝐻𝑦
• Bước 2: Tính |𝐼 ⨂ 𝐻𝑥 | + |𝐼 ⨂ 𝐻𝑦 |
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 0 1 −1 − 1 − 1
𝐻1 = [−1 0 1] 𝐻2 = [ 0 0 0]
−1 0 1 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
= 𝑓 (𝑥 + 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 1 1 − 2 1
𝐻1 = [−1 4 − 1] 𝐻1 = [ −1 8 1] 𝐻1 = [ −2 5 − 2]
0 −1 0 −1 − 1 − 1 1 −2 1
• 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 𝐼
𝜕𝑥 𝜕𝑦
➢ 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.
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.
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.
Với:
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
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.
28
3.4. 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ự.
29
Hình 3. 7: ảnh sau khi được nhị phân.
Để 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ố
31
Digit_width là độ rộng tối đa cho phép của 1 phân vùng kí tự.
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ố.
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ự ).
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.
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ỏ.
Đâ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.
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
• 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:
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.6: Hình ảnh sau khi nhị phân hóa sang ảnh đen trắng
Sau khi nhị phân hóa sang ảnh đen trắng ta tiến hành tách các kí tự có trong biển số
ra để tiến hành nhận dạng.
Hình 4.7: Hình ảnh tách các kí tự có trong biển số
39
Ta dùng thư viện nhận dạng kí tự quang học OCR để nhận dạng từng kí tự số và
chữ và cho ra hình ảnh kết quả sau:
Hình 4.8: Hình ảnh kết quả của quá trình nhận dạng
4.3.1. Ưu điểm
• Chương trình chạy cho ra kết quả khá chính xác
• Nhờ quá trình kiểm thử tỉ mỉ trên nhiều máy tính, nhiều người sử dụng thử
mà chương trình bắt lỗi khá tốt.
• Chạy đúng với yêu cầu để bài đặt ra
• Có tính ứng dụng vào thực tiễn rất cao
40
• Do xử lý ảnh thời gian thực nên đòi hỏi cấu hình máy trung bình khá
• Có tỉ lệ nhận diện sai nhất định
Theo kết quả nghiên cứu thì không thể có trường hợp nhận diện đúng
100% các loại biển số. Nguyên nhân có cả khách quan lẫn chủ quan.
Khách quan là do biển số xe bị nhoè, chủ xe dán decal mất số, bụi bám
lên biển số... Chủ quan là mô hình học không thể có độ chính xác 100%
41
KẾT LUẬN
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 này đều lấy biển số xe là mục tiêu giám
sát.
Báo cáo này đã trình bày một cách hệ thống về bài toán nhận dạng biển số xe và
các hướng giải quyết trên cơ sở các bài toán cơ bản: Phát hiện vùng chứa biển số xe và
bài toán nhận dạng chữ và số trong vùng được phát hiện.
42
TÀI LIỆU THAM KHẢO
[1]. Giáo trình “Ngôn ngữ Lập tr.nh C#” được biên dịch và tổng hợp từ:
- Programming C#, Jesse Liberty, O’Reilly.
- C# in 21 Days, Bradley L.Jones, SAMS.
- Windows Forms Programming with C#, Erik Brown, Manning.
[2]. http://www.emgu.com/
[3]. Abbas M. Al-Ghaili, Syamsiah Mashohor, Alyani Ismail, and Abdul Rahman
Ramli, 2008. “A New Vertical Edge Detection Algorithm and its Application”,
International Conference on Computer Engineering & Systems, ICCES 2008, pp.204-
209.
[4] Tác giả mesa177, “License Plate Extraction, Processing, and Character
Segmentation”: http://www.lebgeeks.com/forums/viewtopic.php?id=7786
43