Bài tập lớn môn Xử lý ảnh đề tài "Nhận diện biển số xe từ video" | Học viện Công nghệ Bưu chính Viễn thông
Bài tập lớn môn Xử lý ảnh đề tài "Nhận diện biển số xe từ video" của Học viện Công nghệ Bưu chính Viễn thông với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!
Môn: Xử lý ảnh (TEL1589)
Trường: Học viện Công Nghệ Bưu Chính Viễn Thông
Thông tin:
Tác giả:
Preview text:
lOMoARcPSD| 36086670
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TP.HỒ CHÍ MINH ---------- ---------- XỬ LÝ ẢNH
Đề tài: NHẬN DIỆN BIỂN SỐ XE TỪ VIDEO Giảng viên hướng dẫn:
Sinh viên thực hiện: Phan Văn Hiểu Đặng Hoàng Hà
Phan Công Tuấn Kiệt – N19DCCN082 lOMoARcPSD| 36086670 MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1 Lí do chọn đề tài: .......................................................................................................................................... 1
1.2 Nội dung đề tài: ............................................................................................................................................ 1
1.3 Nội dung đề tài: ............................................................................................................................................ 1
1.4 Giới hạn đề tài: ............................................................................................................................................. 1
CHƯƠNG 2: CHỤP BIỂN SỐ XE ....................................................................................................................... 2
2.1 Lấy hình ảnh từ camera ............................................................................................................................... 2
2.2 Lấy hình ảnh từ video: ................................................................................................................................. 3
Chương 3: TÁCH BIỂN SỐ .................................................................................................................................. 5
3.1 Tổng quan về tách biển số: .......................................................................................................................... 5
3.2 Tìm vùng màu trắng: ................................................................................................................................... 5
3.3 Xác định vùng chứa biển số: ....................................................................................................................... 6
3.4 Cắt biển số chính xác: .................................................................................................................................. 6
Chương 4. PHÂN ĐOẠN KÝ TỰ ......................................................................................................................... 7
4.1 Tổng quan về phân đoạn kí tự .................................................................................................................... 7
4.2 Nhị phân biển số xe ...................................................................................................................................... 8
4.3 Chuẩn hóa biển số xe ................................................................................................................................... 9
4.4 Phân đoạn kí tự ..........................................................................................................................................10
4.5 Chương trình chia đôi biển số ...................................................................................................................11
4.6 Chương trình phân vùng từng kí tự .........................................................................................................12
4.7 Chương trình chọn 4 phân vùng có diện tích lớn nhất ...........................................................................13
Chương 5: NHẬN DẠNG KÝ TỰ ......................................................................................................................14
5.1 Tổng quát nhận dạng ký tự: ......................................................................................................................14
5.2 Lựa chọn phương pháp: ............................................................................................................................15
5.2.1 Phương pháp nhận dạng cổ điển: ......................................................................................................15
5.2.2 Phương pháp ứng dụng mạng neural: ...............................................................................................15
KẾ HOẠCH THỰC HIỆN ..................................................................................................................................15
KẾT LUẬN ...........................................................................................................................................................16
TÀI LIỆU THAM KHẢO..................................................................................................................................19
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI lOMoARcPSD| 36086670
1.1 Lí do chọn đề tài:
- Hiện nay, số lượng xe cộ tham gia giao thông trên đường là rất lớn dẫn đến tiêu tốn rất
nhiều nhân lực và vật lực cho việc quản lý phương tiện cá nhân trong bãi gửi xe. Nếu
không có một công cụ thuận tiện thì việc quản lý phương tiện cá nhân rất mất thời gian,
dễ gây nhầm lẫn, thiệt hay cho người sử dụng dịch vụ tại các bãi đỗ xe.
- Để giảm tải cho các công việc như thu tiền, bảo hiểm xe, tìm xe cộ trong bãi đỗ xe, trên
thế giới đã phát triển công nghệ giám sát tự động đối với các phương tiện giao thông,
chính nhờ tính cá nhân của biển số xe mà nó đã trở thành đối tượng chính được sử dụng
để nghiên cứu, phát triển trong công nghệ này.
1.2 Nội dung đề tài:
- Tìm hiểu về biển số xe và hệ thống nhận dạng biển số xe
- Phát biểu bài toán và hướng giải quyết
- Nghiên cứu một số thuật toán xử lý ảnh và nhận dạng kí tự ứng dụng trong việc nhận dạng biển số xe
- Quá trình nhận biết được thực hiện như sau: Chp n h t Chuyn ể đ i Cắắt n h Đo mà u Cắắt đôi Phân ch Nhn dng kí video/camera n Nh phân nh h xám t
1.3 Nội dung đề tài:
Từ nội dung nêu trên, đề tài sẽ bao gồm các nhiệm vụ sau:
- Tìm hiểu khái quát về xử lý ảnh và bài toán nhận dạng biển số xe.
- Tìm hiểu thông tin về biển số xe và phân loại biển số xe của Việt Nam.
- Tìm hiểu các công đoạn chính của bài toán nhận dạng biển số xe gồm 3 khâu chính:
• Phát hiện vị trí và tách biển số xe
• Phân đoạn kí tự trong biển số xe
• Nhận dạng kí tự Cài đặt thử nghiệm.
1.4 Giới hạn đề tài: -
Lấy hình ảnh được truy xuất từ camera, video và hình ảnh có sẵn. -
Xử lí trực tiếp trên phần mềm matlab. -
Biển số xe có 2 hàng, số lượng ký tự từ đúng chuẩn Việt Nam. -
Biển số phải còn nguyên vẹn, không bị che khuất, không bị chói bởi ánh sáng. -
Góc nghiêng của biển số không quá 45 độ so với phương ngang. lOMoARcPSD| 36086670
CHƯƠNG 2: CHỤP BIỂN SỐ XE
2.1 Lấy hình ảnh từ camera
- Yêu cầu: phải cài đặt trình hỗ trợ webcam của matlab
- Phần kết nối camera o B1: Lấy thông tin camera:
Vào console nhập webcamlist để lấy danh sách camera
Nhập webcam(‘’) để lấy thông số - B2: Thiết lập webcam: o Gọi camera: webcam();
o Thiết lập width,height theo thông số đã xem ở bước 1 cho màn hình hiển thị o
Xuất giá trị ra màn hình
- Phần chụp hình ảnh từ camera: sử dụng hàm snapshot(webcam())
để chụp hình ảnh từ camera và xuất ra file hình ảnh với hàm imwrite lOMoARcPSD| 36086670
2.2 Lấy hình ảnh từ video: - Phần chạy video
+ B1: Tải và đọc file video: VideoReader(‘’)
+ B2: Tiến hành đọc frame của vide: readFrame(VideoReader(‘’))
- B3: Chạy vòng lặp đọc các frame và hiển thị các frame
- Phần xử lí tạm dừng video: sử dụng hàm uiwait và uiremuse để tạm dừng và chạy tiếp tục video
- Phần chụp hình ảnh từ video: vì video là một loạt các hình ảnh được chuyển đổi liên tục
để tạo ra sự chuyển động. Do đó các frame trong các video chính là các hình ảnh. Để lấy
1 frame bất kì lưu tiến trình đọc frame ra một biến khi nào cần lấy hình ảnh thì gọi lại
biến đó để xuất ra hình ảnh mong muốn. lOMoARcPSD| 36086670 lOMoARcPSD| 36086670
Chương 3: TÁCH BIỂN SỐ
3.1 Tổng quan về tách biển số:
Tách biển số là một bước rất quan trọng trong quá trình nhận dạng biển số xe. Khối tách
biển số xe được chia làm 2 giai đoạn chính:
- Giai đoạn 1: định vị trí của biển số trong ảnh chụp từ webcam.
- Giai đoạn 2: dùng các giải thuật để cắt biển số xe ra khỏi ảnh chụp và xoay biển số xe về phương ngang.
Sơ đồ tổng quát của khối tách biển số: Ảnh RGB Định vị trí Cắt biển số Ảnh RGB chỉ được chụp của biển số xe chứa biển số từ Webcam
Việc định vị biển số xe dựa vào các tính chất của biển số: hình dạng, màu sắc của biển số
so với nền. Biển số xe 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 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ố. Bước hai là cắt biển số ra khỏi
vùng trên. Thực hiện việc cắt biển số 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.2 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 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.
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 lại là ảnh sáng.
Đây là sơ đồ thuật giải của bước tìm và tách vùng màu trắng: lOMoARcPSD| 36086670 BEGIN ẢNH BIỂN SỐ ĐẦU VÀO nameFile CHUYỂN ĐỔI THÀNH ẢNH ĐA MỨC XÁM imgray = rgb2gray(nameFile) CHUYỂN ĐỔI THÀNH ẢNH BINARY imbin = imbinarize(imgray)
XÁC ĐỊNH HƯỚNG VÀ ĐỘ LỚN CỦA ẢNH
im = edge(imgray, ‘prewitt’) END
3.3 Xác định vùng chứa biển số:
3.4 Cắt biển số chính xác:
Đây là một việc quan trọng, kết quả quyết định tới kết quả của hệ thống nhận dạng biển số. lOMoARcPSD| 36086670 Ảnh chụp ban đầu
Ảnh sau khi cắt hoàn chỉnh
Chương 4. PHÂN ĐOẠN KÝ TỰ
4.1 Tổng quan về phân đoạn kí tự
Đầu ra của qua trình tách biển số là một ảnh màu RGB có chứa biển số. Để nhận dạng các
kí tự có trong biển số, ta tiên hành phân đoạn các ký tự có trong biển số. Phân đoạn ký tự là việc
cắt ký tự biển số xe.
Sau khi tách biển số, ta tiến hành phân đoạn tách riêng biệt các ký tự có trong biển số xe.
Đầu tiên, ta chuyển ảnh màu RGB thành ảnh xám sau đó chuyển thành ảnh nhị phân. Tiếp theo,
ta chuẩn hóa ảnh về kích thước chuẩn. Kết quả của quá trình phân đoạn là ma trận chứa ảnh đen trắng của các kí tự. lOMoARcPSD| 36086670
Sơ đồ khối phân đoạn kí tự
4.2 Nhị phân biển số xe
Ở bước này, ta sẽ tiến hành tìm ngưỡng tối ưu, sau đó nhị phân với ngưỡng vừa tìm được, để làm
tăng động tương phản của kí tự và nền của biển số. Ảnh nhị phân lOMoARcPSD| 36086670
Giải thuật nhị phân biển số
4.3 Chuẩn hóa biển số xe
Biển số được đưa về kích thước chuẩn sau đó lấy bù ảnh. lOMoARcPSD| 36086670 Ảnh sau khi chuẩn hóa
Giải thuật chuẩn hóa ảnh
4.4 Phân đoạn kí tự
Ma trận binary của biển số là đầu vào của vùng ký tự. Trước khi phân vùng từng ký tự có trong
biển số, ta phân ảnh biển số thành hai phần bao gồm nửa trên và nửa dưới của ảnh, tương ứng
với mỗi ảnh sẽ chứa một hàng kí tự. Sau đó, ta đưa lần lượt từng hàng vào chương trình để phân vùng từng kí tự.
Để phân chia 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 - cũng là màu của kí tự, mức 0 là màu đen- màu của nền biển số). Với ma trận của
hàng 2 sau khi đã chia đôi, giữa ký tự có rất ít pixel có mức là 1 ( trong điều kiện lý tưởng, tất cả
là 0). Do đó khi cộng giá trị các pixel theo từng cột, ta thấy giá trị tại các vùng giữ này sẽ rất thấp lOMoARcPSD| 36086670
(đây là tổng pixel mức 1). Từ đó, giải thuật giải thuật phân vùng sẽ phân vùng dựa vào giá trị
của nó nhỏ hơn các vùng xung quanh nó và sẽ được phân chia thành từng vùng. Ta sẽ tìm 4 phân
vùng ứng với 4 ký tự của hàng thứ hai của biển số.
Giải thuật phân đoạn kí tự
4.5 Chương trình chia đôi biển số
Từ ảnh có kích thước chuẩn sau khi chuẩn hóa, ta chia đôi biển số thành
hang1 = im(1:h/2,:); hang2 = im(h/2:h,1:w);
Trong đó, h: là chiều cao của ảnh W: là
chiều rộng của ảnh hang1:
là nửa ảnh phía trên Hang2: là nửa ảnh phía dưới lOMoARcPSD| 36086670 Ảnh chia đôi biển số
4.6 Chương trình phân vùng từng kí tự
Chương trình tìm vùng ranh giới giữ 2 kí tự bất kì, giữa 2 vùng ranh giới liên tiếp sẽ là vùng ký
tự, chương trình sẽ tìm và trả về vị trí của vùng kí tự. Chương trình có thể trả về vùng kí tự lớn
hơn 4 do ảnh hưởng của môi trường đầu vào.
Với kết quả nhỏ hơn 4, ta sẽ xóa các pixel tại vùng ranh giới ( gán cho các vị trí này bằng 0) Với
kết quả trả về lớn hơn 4, ta sẽ lấy 4 vùng có diện tích lớn nhất.
Ảnh các kí tự được cắt khỏi biển số lOMoARcPSD| 36086670
Giải thuật phân vùng từng kí tự
4.7 Chương trình chọn 4 phân vùng có diện tích lớn nhất
Chương trình sẽ sắp xếp lại các phân vùng theo thứ tự diện tích từ nhỏ đến lớn, sau đó nó sẽ giữ
lại 4 phân vùng có diện tích lớn nhất và giữ nguyên thứ tự các phân vùng. lOMoARcPSD| 36086670
Giải thuật chọn 4 phân vùng có diện tích lớn nhất
Chương 5: NHẬN DẠNG KÝ TỰ
5.1 Tổng quát nhận dạng ký tự:
Sau khi thực hiện phân vùng ta sẽ được 9 ma trận tương ứng với 9 ký tự trên 2 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à 9 ký tự số và chữ, 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ả 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.
Trong lĩnh vực nhận dạng, có 2 phương pháp để nhận dạng là phương pháp cổ điển và
phương pháp sử dụng mạng neural. lOMoARcPSD| 36086670
5.2 Lựa chọn phương pháp: 5.2.1
Phương pháp nhận dạng cổ điển:
Giới thiệu phương pháp:
Phương pháp này sẽ có 1 tập ma trận ký tự mẫu. Phương pháp này khá đơn giản: ma trận
ký tự cần nhận dạng khá giống với ma trận ký tự đó trong tập mẫu. Ví dụ, ta nhận dạng các số từ
0 đến 9 thì trong tập mẫu, ta sẽ tạo ra các ma trận ký tự từ 0 đến 9. Giả sử ma trận cần nhận dạng
là số 1 thì ma trận này nhìn bằng mắt thấy cũng khá giống sao với ma trận số 1 trong tập mẫu.
Ưu, nhược điểm của phương pháp:
Phương pháp này tuy đơn giản nhưng hiệu quả trong trường hợp tập ảnh nhận dạng rõ nét,
ít bị nhiễu. Nếu ảnh bị nhiễu thì ma trận đầu vào thay đổi, lúc này tập mẫu sẽ không còn chính
xác. Trong 1 vài trường hợp, biển số ban đầu bị nghiêng hoặc lệch, khi ta xoay và chuẩn hóa kích
thước thì các ký tự bị nhiễu và khi so sánh với tập mẫu cũng không còn chính xác. 5.2.2
Phương pháp ứng dụng mạng neural:
Cũng như phương pháp cổ điển, ta nhận dạng các ký tự nhờ vào vị trí hàng của ký tự đó
trên biển số, nhưng ở đây ta sử dụng nhiều tập mẫu để so sánh qua đó làm tăng độ chính xác khi
nhận dạng. Hơn nữa trong Matlab có toolbox hỗ trợ về phần neural làm cho việc nhận dạng trở nên dễ dàng hơn.
⇨ Ở bài này nhóm em sử dụng phương pháp nhận dạng cổ điển.
KẾ HOẠCH THỰC HIỆN lOMoARcPSD| 36086670 KẾT LUẬN
Độ chính xác của chương trình nhận dạng biển số xe phụ thuộc vào ánh sáng môi trường.
Tuy nhiên yếu tố này có thể điều chỉnh được. Việc nhận dạng ký tự còn nhiều sai sót do không
có được một tập mẫu hoàn chỉnh.
Chương trình được viết bằng Matlab đã giải quyết được bài toán nhận dạng ký tự thông
qua lý thuyết về xử lý ảnh, qua đó cũng giải quyết được yêu cầu của đề tài đồ án đề ra.
Để giải quyết được khó khăn của đề tài, nhóm chúng em xin đề xuất 1 số ý kiến sau đây: -
Sử dụng camera chuyên dụng.
- Thiết lập môi trường ổn định xung quanh để làm tăng độ chính xác của ảnh chụp (xác
định 1 vị trí cố định để chụp ảnh).
- Thu thập nhiều mẫu ký tự để tăng tập mẫu qua đó tăng độ chính xác của chương trình.
Việc nghiên cứu đề tài này phức tạp và do thời gian có hạn nên việc nghiên cứu cặn kẽ tất
cả các khía cạnh của đề tài là rất khó khăn. Do vậy chắc chắn đồ án này sẽ không tránh khỏi
những thiếu sót. Rất mong sự đóng góp ý kiến của thầy để đồ án của nhóm em được hoàn thiện hơn.
Nhóm em xin chân thành cảm ơn! lOMoARcPSD| 36086670
TÀI LIỆU THAM KHẢO [1]
Bùi Minh Quang, 2020. Nhận diện biển số xe Việt Nam. https://viblo.asia/p/nhan-
dienbien-so-xe-viet-nam-Do754P9L5M6 , truy cập ngày 12/9/2022. [2] Aminollah
Mahabad, 2010. Reliable License Plate Recognition.
https://www.researchgate.net/publication/324694026_License_Plate_Recognition , truy cập ngày 15/09/2022. [3]
Xiaofeng Zhang, Fengchang Xu, YanSu, 2011. Research on the License Plate Recognition based on MATLAB.
https://www.sciencedirect.com/science/article/pii/S1877705811017474 , truy cập 25/09/2022.
[4] Wang Weihong;,Tu Jiaoyang, 2020. Research on License Plate Recognition Algorithms
Based on Deep Learning in Complex Environment.
https://ieeexplore.ieee.org/document/9092977 , truy cập ngày 10/10/2022. [5]
Nguyễn Phạm Anh Tuấn, 2010. Báo cáo nghiên cứu khoa học nhận dạng biển số xe.
Sinh viên. Trường đại học Lạc Hồng, Đồng Nai.