You are on page 1of 44

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 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.

Hình 2.1: Sơ lược về hệ thống nhận dạng biển số xe

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.

2.1.2. Phân loại biển số xe


Trước tiên là quy định biển số của 63 tỉnh thành (biển trắng chữ đen):

Bảng 2.1: Biển số xe các tỉnh thành trên cả nước (theo Wikipedia)

11-Cao Bằng 47-Đắk Lắk 77-Bình Định


12-Lạng Sơn 48-Đắk Nông 78-Phú Yên
14-Quảng Ninh 49-Lâm Đồng 79-Khánh Hòa
15,16-Hải Phòng 50 đến 59- Thành phố 80-Các đơn vị kinh tế
17-Thái Bình Hồ Chí Minh thuộc TW (hàng

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

Những quy định về màu sắc và chữ số đặc biệt:

- 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

- Màu trắng 2 chữ, 5 số là biển dành cho người nước ngoài:


• NG là xe ngoại giao.
• NN là xe của các tổ chức, cá nhân nước ngoài: Trong đó 3 số ở giữa là mã
quốc gia, 2 số tiếp theo là số thứ tự.
• Xe số 80 NG xxx-yy là biển cấp cho các đại sứ quán, thêm gạch đỏ ở
giữa và 2 số cuối là 01 là biển xe của tổng lãnh sự.
- Những xe mang biển 80 gồm có:
Bảng 2.3 : Biển số xe 80

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

Ví dụ: 30A là xe của Công An - Cảnh Sát thành phố Hà Nội

➢ 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

2.2.1. Hướng tiếp cận phát triển vùng


Ý tưởng của phương pháp này: đó là biển số xe thường chứa một màu đồng nhất, chẳng
hạn màu trắng, và có diện tích tương đối nhất định. Vì vậy có thể dùng phương pháp phát

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.

2.2.2. Hướng tiếp cận dò biên và biến đổi Hough


Ý tưởng của cách tiếp cận này là: Biển số xe được bao bọc bởi đường viền. Do đó, có
thể dùng phương pháp phát hiện biên, sau đó dùng phép biến đổi Hough để trích những
đoạn thẳng dọc, ngang tồn tại trong ảnh. Giao điểm của những đoạn thẳng này chính là
vùng bao chứa biển số xe. Và cuối cùng là tiến hành nhận dạng các kí tự ở trên mỗi
vùng con.

• Ư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.

2.2.3. Hướng tiếp cận phát hiện biên và Heuristic


Ý tưởng chính: Áp dụng mặt nạ Sobel để dò tìm cạnh trong ảnh, kết quả là ảnh chứa tập
các cạnh , gọi là G(x, y). Sau đó, áp dụng một số heuristic về biển số xe như kích thước,
tỉ lệ chiều cao/chiều rộng, hoặc sử dụng một cửa sổ di chuyển trên toàn bộ G(x, y) để tìm
ra các vùng có số cạnh thoã điều kiện

• Ư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ự.

2.3. Hướng giải quyết của đề tài


a) Một số đặc điểm về biển số xe ở Việt Nam
• Tiêu chuẩn về kích thước: Đối với nước ta, biển số xe qui định khá đồng đều cho
mỗi loại, tỷ lệ chiều dài, rộng cho mỗi loại xe là như nhau. Đối với loại biển có một
hàng kí tự thì tỉ lệ dài/ rộng là: 2.6 ≤ W/H ≤ 7 Từ các đặc tính này, ta có thể xác
định được các vùng con thỏa mãn tiêu chí về ngưỡng tỉ lệ dài/ rộng. Và chỉ những
vùng con thỏa mãn thì khả năng chứa biển số xe là cao.

Hình 2.2: Biển số xe ô tô 2 hàng kí tự tại Việt Nam

• 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/

Lợi thế của EmguCV là:

• 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.

Bước 2 :Thiết lập trong Project

Thêm control của EmguCV vào Toolbox

Bước 3: Hộp thoại .NET Framwork Components > Browese...

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.

Bước 7: Khởi tạo project

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

3.1. Một số khái niệm cơ bản

3.1.1. Tổng quan về ảnh


a) Ảnh và điểm ảnh
Ảnh là mảng số thực 2 chiều (Im,n) có kích thước (M x N), trong đó mỗi giá trị
(Im,n) (tại một điểm ảnh), biểu thj mức xám của ảnh tại vị trí (m,n) tương ứng. Một ảnh là
ảnh nhị phân nếu giá trị (Im,n) bằng 0 hoặc 1.

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.

c) 4-láng giềng và 8-láng giềng


Nếu (m,n) là một điểm ảnh, thì 4 láng giềng của nó là các điểm ở ngay bên trên,
dưới, trái, phải. Ta kí hiệu N4 là tập 4 láng giềng của điểm (m,n).

2.1.2. Phương pháp tách dò ngưỡng tự động


Gọi h(g) là tổng số mức xám g

t(g) = ∑𝑖≤𝑔 ℎ(𝑖)

Trong đó: P- Số điểm ảnh được xét bằng m*n

S- Số mức xám được xét

𝑔
[∑𝑖=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

3.2.1. Khái niệm về biên


Biên là một vấn đề chủ yếu trong phân tích ảnh vì các kỹ thuật phân đoạn ảnh
chủ yếu dựa vào biên. Một điểm ảnh có thể coi là điểm biên nếu có sự thay đổi đột ngột
và mức xám hay biên là điểm có cấp xám có giá trị khác hẳn các điểm xung quanh. Tập
hợp các điểm biên tạo thành biên hay đường bao của ảnh

3.2.2. Các phương pháp phát hiện biên


Dựa vào sự biến thiên về giá trị độ sáng của điểm ảnh. Kỹ thuật chủ yếu dùng
phát hiện biên ở đây là kỹ thuật đạo hàm. Nếu lấy đạo hàm bậc nhất của ảnh ta có
phương pháp Gradient, nếu lấy đạo hàm bậc hai ta có kỹ thuật Laplace. Hai phương
pháp trên được gọi là phương pháp dò biên cục bộ.

a) Phương pháp 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 0
𝐻1 = [ ] 𝐻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 0 1 −1 − 2 − 1
𝐻1 = [−2 0 2] 𝐻2 = [ 0 0 0]
−1 0 1 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 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

Vậy suy ra ta có:

∇2 𝑓 ∇ ∇𝑓 ∇(𝑓(𝑥 + 1, 𝑦) − 𝑓 (𝑥, 𝑦))


2
= ( ) ≈ ≈ [𝑓(𝑥 + 1, 𝑦) − 𝑓 (𝑥, 𝑦) − 𝑓(𝑥 − 1, 𝑦)]
∇𝑥 ∇𝑥 ∇𝑥 ∇𝑥

= 𝑓 (𝑥 + 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

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
Ta tiến hành đem nhị phân hóa ảnh biển số vừa cắt được thành ảnh đen trắng để tiến
hành nhận dạng kí tự.

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. Ưu nhược điểm của hệ thố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

4.3.2. Nhược điểm


• Dung lượng khá nặng

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

[5] Bài viết của tác giả Damiles: http://blog.damiles.com/2010/12/segmentation-and-


feature-extraction-contours-and-blob-detection/

43

You might also like