1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn môn học máy Đề tài xây dựng hệ thống nhận dạng biển số xe

29 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 5,81 MB

Nội dung

Giới thiệu chung - Phân tích bài toán nhận diện biển số xe bao gồm định vị biển số, phân đoạn kí tự và nhận diện kí tự bằng các phương pháp học máy - Áp dụng các kĩ thuật xử lí ảnh chuyể

Trang 1

ĐẠI HỌC HỒNG ĐỨC

KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

BÀI TẬP LỚN MÔN HỌC MÁY

Đề tài:

XÂY DỰNG HỆ THỐNG NHẬN DẠNG BIỂN SỐ XE

SINH VIÊN THỰC HIỆN:

MSV:2261030058 MSV:2164010238

1

Trang 2

MỤC LỤC

MỤC LỤC 2

PHẦN 1: MỞ ĐẦU 4

1.1 Giới thiệu nhóm: 4

1.2 Giới thiệu bài toán 4

1.2.1 Lý do chọn đề tài 4

1.2.2 Mục tiêu nghiên cứu 4

PHẦN 2: CÁC KỸ THUẬT(THUẬT TOÁN) SỬ DỤNG 5

2.1 Giới thiệu chung 5

2.2 Giới thiệu về SVM 5

2.3 Các kỹ thuật xử lý ảnh: 8

PHẦN 3: GIẢI QUYẾT BÀI TOÁN 10

1 TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIỂN SỐ XE 10

1.1.Trạng thái bài toán: 10

1.2 Tổng quan các bước thực hiện: 10

2 QUY TRÌNH NHẬN DẠNG BIỂN SỐ XE 11

2.1 Tách biển số xe: 11

2.1.1 Tổng quan về tách biển số: 11

2.1.2 Tìm vùng màu trắng: 13

2.1.3 Xác định vùng chứa biển số: 14

2.1.4 Khử nhiễu: 15

2.1.5 Chỉnh mức xám: 15

2.1.6 Cắt vùng chứa biển số: 15

2.1.7 Cắt biển số chính xác: 16

2.2 Định vị ký tự: 17

Trang 3

2.2.1 Tổng quan về định vị kí tự: 17

2.2.2 Nhị phân biển số xe: 17

2.2.3 Chuẩn hóa biển số xe: 18

2.2.4 Phân đoạn ký tự 19

3.3.Nhận dạng ký tự(SVM) 22

PHẦN 4: KẾT QUẢ 23

1.Dữ liệu 23

2 Thang đo: 23

3 Kết quả: 24

PHẦN 5 : KẾT LUẬN 27

5.1 Đánh giá về cơ sở lý thuyết trong nghiên cứu 27

5.2 Đánh giá về phần mô hình sau khi train 27

5.3 Điểm hạn chế 28

5.3 Hướng phát triển phần mềm 28

TÀI LIỆU THAM KHẢO 29

3

Trang 4

1.2 Giới thiệu bài toán

1.2.1 Lý do chọn đề tài

Phương diện lý thuyết: Với sự phát triển của công nghệ học máy đã giúp giải quyết

hiệu quả các bài toán nhận dạng hình ảnh và kí tự, điển hình như nhận dạng biển số xe Đây là một phần trong lĩnh vực OCR (Optical character recognition), giúp chuyển đổi hìnhảnh thành dữ liệu kí tự có cấu trúc

Phương diện thực tiễn: 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ảnxuấ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ámsát sẽ khó khăn hơn

1.2.2 Mục tiêu nghiên cứu

Mục tiêu tổng quát: Xây dựng được một ứng dụng nhận dạng biển số xe sau đó áp

dụng các kĩ thuật học máy nhằm tăng độ chính xác của việc nhận diện

Mục tiêu cụ thể: Có thể tách và xác định biển số, phân đoạn và nhận dạng kí tự.

Trang 5

PHẦN 2: CÁC KỸ THUẬT(THUẬT TOÁN) SỬ DỤNG

2.1 Giới thiệu chung

- Phân tích bài toán nhận diện biển số xe bao gồm định vị biển số, phân đoạn kí tự và nhận diện kí tự bằng các phương pháp học máy

- Áp dụng các kĩ thuật xử lí ảnh chuyển ảnh thành mức xám, nhị phân hóa ảnh, tìm viền và xác định vùng chứa biển số xe, xử lí nhiễu điều chỉnh mức xám và cắt ảnh biển số

- Sử dụng thuật toán SVM cho nhận dạng kí tự

2.2 Giới thiệu về SVM

- Ý tưởng của SVM là tìm một siêu phẳng (hyper lane) để phân tách các điểm dữ liệu Siêu phẳng này sẽ chia không gian thành các miền khác nhau và mỗi miền sẽ chứa một loại dữ liệu

• Quy tắc 1: để chọn 1 hyper-lane, chọn một hyper-plane để phân chia hai lớp tốtnhất Trong ví dụ này chính là đường B

5

Trang 6

• Quy tắc 2: là xác định khoảng cách lớn nhất từ điểm gần nhất của một lớp nào đóđến đường hyper-plane Trong hình dưới đây là đường C.

• SVM có khả năng mạnh trong việc chấp nhận ngoại lệ

Trang 7

Margin trong SVM

Margin là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần nhất tương ứng với các phân lớp Trong ví dụ quả táo quả lê đặt trên mặt bàn, margin chính là khoảng cách giữa cây que và hai quả táo và lê gần nó nhất Điều quan trọng ở đây đó là phương pháp SVM luôn cố gắng cực đại hóa margin này,

từ đó thu được một siêu phẳng tạo khoảng cách xa nhất so với 2 quả táo và lê Nhờ vậy, SVM có thể giảm thiểu việc phân lớp sai (misclassification) đối với điểm dữ liệu mới đưa vào

2.3 Các kỹ thuật xử lý ảnh:

Để có thể nhận dạng biển số xe ta sẽ kết hợp các kỹ thuật trong xử lý ảnh sau:

Chuyển ảnh màu sang mức xám Chuyển ảnh thành mức xám giúp đơn giản hóa bài toán

xử lý ảnh bằng cách chỉ giữ lại thông tin về độ sáng (cường độ sáng) của từng điểm ảnh,

từ đó giảm thiểu dữ liệu cần xử lý

Công thức đơn giản để chuyển đổi:

Gray=0.299 R+0.587 G+0.114 B⋅ ⋅ ⋅

Đây là công thức chuẩn được sử dụng trong nhiều thư viện xử lý ảnh

Nhị phân hóa ảnh là quá trình chuyển đổi ảnh thành hai giá trị duy nhất tương ứng với

màu đen và trắng Kỹ thuật phổ biến là Thresholding, nơi mỗi pixel được so sánh với một ngưỡng cố định:

 Nếu giá trị pixel lớn hơn ngưỡng: gán giá trị trắng

 Nếu nhỏ hơn ngưỡng: gán giá trị đen

7

Trang 8

Có thể sử dụng thuật toán Otsu để tự động xác định ngưỡng tối ưu để phân đoạn ảnh nhị phân dựa trên histogram của ảnh.

Phát hiện biên của đối tượng trong ảnh là một bước quan trọng để xác định các hình

dạng trong ảnh, ví dụ như biên của biển số xe Ở đây chúng ta sẽ sử dụng thuật toán Canny là một thuật toán bao gồm nhiều giai đoạn để phát hiện một loạt các cạnh trong hình ảnh Nó được phát triển bởi John F Canny vào năm 1986 Canny cũng đưa ra một lýthuyết tính toán về phát hiện cạnh giải thích tại sao kỹ thuật này hoạt động

Thuật toán phát hiện cạnh Canny bao gồm 5 bước:

-Giảm nhiễu;

-Tính toán Gradient độ xám của ảnh;

-Áp dụng Non-maximum suppression;

-Ngưỡng kép (Double threshold);

-Theo dõi cạnh bằng độ trễ (Edge Tracking by Hysteresis)

Xác định vùng chứa biển số xe là một bước rất quan trọng trong các hệ thống nhận dạng

biển số tự động Sau khi thực hiện các bước tìm viền, các thuật toán sẽ phải tìm ra chính xác vùng chứa biển số

Xử lý nhiễu và điều chỉnh mức xám trong quá trình chụp ảnh ặc biệt là khi chụp trong

điều kiện ánh sáng yếu hoặc môi trường phức tạp sẽ dẫn đến việc ảnh bị nhiễu Gaussian Blur là một kỹ thuật làm mờ (blur) phổ biến trong xử lý ảnh và thị giác máy tính Nó được

sử dụng để giảm nhiễu, làm mềm các cạnh của đối tượng và chuẩn bị dữ liệu hình ảnh chocác bước xử lý tiếp theo như tìm biên hoặc phát hiện đối tượng

- x và y là tọa độ không gian của pixel so với pixel trung tâm

- σ là độ lệch chuẩn của phân phối Gaussian, kiểm soát độ mờ

Trang 9

- Giá trị σ càng lớn, ảnh sẽ càng bị làm mờ nhiều hơn.

9

Trang 10

PHẦN 3: GIẢI QUYẾT BÀI TOÁN

1 TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIỂN SỐ XE

1.1.Trạng thái bài toán:

Hình 1: Sơ đồ tổng quát

1.2 Tổng quan các bước thực hiện:

- Bao gồm 4 bước như trên để phát hiện biển số:

Định vị biển số

Bước 1: hay còn gọi là phát hiện biển số: tìm khung chữ nhật gồm (x, y, width, height) bao lấy biển số trong ảnh Nếu tìm thấy thì cắt biển số ra để xử lý bước tiếp theo, kết quả của bước này là ảnh biển số đã cắt

Trang 11

Hình 2: Mẫu tách biển số

Bước 2: Định vị ký tự hay còn gọi là tìm vị trí của ký tự trên biển số đã cắt Kết quả của bước này là các ký tự màu đen, sau đó resize tất cả về cùng 1 kích thước Bước này dùng thuật toán

11

Trang 12

Bước 2: Load ảnh và thực hiện resize(thay đổi) về kích thước mong muốn.Bước 3: Chuyển về đen trắng và thực hiện thuật toán tìm cạnh.

Bước 4 Tìm các viền có trong hình.:

Bước 5: Với các viền tìm được ở bước 4, lặp qua 1 lượt và chọn viền lớn nhất hội đủ các điều kiện:

• Có 4 cạnh (sau khi đã approx): vì biển số là đối tượng có 4 cạnh

• Có kích thước nằm trong vùng kích thước đã định nghĩa ở bước 1

Trang 13

Hình 6: Sơ đồ chi tiết của khối tách biển số

- Ví dụ cho 2 ảnh gốc có biển số như nhau:

Hình 7: Ảnh sáng tối

Ảnh sau khi nhị phân hóa sẽ như sau:

Hình 8: Ảnh sau khi nhị phân

13

Trang 14

2.1.3 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

• 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 9: Hình dạng biển số khi bị nghiêng

- 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àybằ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

- Đối với điều kiện thứ ba, nếu biển số nằm ngay ngắn thì tỉ số là 0.7 còn nếu biển số

bị nghiêng, sẽ xuất hiện pixel đen nên tỉ số này giảm còn 0.38

Trang 15

Hình 10: Biển số sau khi nhị phân

2.1.4 Khử nhiễu:

Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh:

• Nhiễu hệ thống: là nhiễu có quy luật có thể thử bằng các phép biến đổi

• Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân -> khắc phục bằng các phép lọc

• Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹthuật nội suy Kỹ thuật này nhằm tăng cường độ mịn cho ảnh

2.1.6 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àuRBG Do sự tương đồng của ảnh nhị phân và ảnh màu RBG nên toạ độ một pixel trên ảnhnhị phân tương ứng tọa độ trên ảnh màu RBG Do đó khi xác định được tọa độ trên ảnhnhị phân, ta dùng tọa độ này để cắt trên ảnh màu RBG

- Khi ta cắt biển số ra khỏi ảnh mà biển số bị nghiêng thì ta tiến hành cắt theo hìnhchữ nhật lớn hơn hình chữ nhật lớn thực sự một lượng biên an toàn để tránh việc mấtthông tin biển số

15

Trang 16

Hình 11: Hình thể hiện vùng ảnh cần tách ra với biên an toàn

- Trong chương trình, người thực hiện chọn vùng biên an toàn là 30 pixel Trongbước này, ta không cắt biển số ra khỏi ảnh ngay mà chỉ cắt vùng chứa biển số Việc cắtnày có thể xem như là cắt thô

Trang 17

Hình 12: Ảnh chụp ban đầu Hình 13: Ảnh sau khi cắt thô

2.1.7 Cắt biển số chính xác:

- Sau khi xoay biển số về phương thẳng đứng ta thực hiện việc cắt biển số Đâ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ạngbiển số

- Ta thực hiện lại việc chọn vùng biển số nhưng với biên là 0 pixel và 3 điều kiệnchính xác hơn:

• 1600 < diện tích vùng trắng < 6100

• 0.73 < width/height < 0.77

• 0.6 < số pixel trắng / số pixel đen < 0.7

Hình 14: Biển số sau khi cắt hoàn chỉnh

- Sau khi cắt được biển số ta tiến hành phân đoạn ký tự

2.2 Định vị ký tự:

2.2.1 Tổng quan về định vị kí tự:

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 là một ma trận chứa các ảnh đen trắng của ký tự

17

Trang 18

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

2.2.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ố)

- Vì đôi khi biển số xe được chụp có độ sáng không đồng nhất mà có thể chuyểndầntừ sáng sang tối hoặc ngược lại Đây là lý do chính mà tách ngưỡng toàn phần (globalthresholding) bị lỗi Chính vì lý do này mà em đã chọn tách ngưỡng thích ứng (adaptivethresholding) để nhị phân hóa ảnh đầu vào Tách ngưỡng thích ứng tốt hơn tách ngưỡngtoàn phần trong đa số trường hợp nhưng lại làm cho chương trình chậm hơn do có tínhngưỡng cục bộ cho từng pixel

- Nếu ảnh lớn, độ phân giải cao thì đây là một vấn đề Tuy nhiên biển số xe cókíchthước khá nhỏ nên tốc độ chương trình sẽ không bị ảnh hưởng mấy

Hình 16: Ảnh qua quá trình nhị phân hóa

2.2.3 Chuẩn hóa biển số xe:

Biển số xe được chuẩn hóa sau đó được lấy bù

Trang 19

Hình 17: Hình sau khi chuẩn hóa

Hình 18: Thuật toán giải chuẩn hóa biển số

2.2.4 Phân đoạn ký tự

Ma trận nhị phân của biến số chính là ngõ vào 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, ta chỉ tiến hành nhận dạng ký

tự của hàng 2 nên ta chỉ ngõ 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 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

19

Trang 20

hợp lý tưởng, thì sẽ là mức 0) Như vậy khi cộng giá trị các pixel theo từng cột, như hình

ta thấy giá trị tại các vùng giữa 2 ký 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 vào giá trị của nó nhỏ hơn những vùng lân cận

và sẽ phân chia theo từng vùng Ở đây, ta sẽ tìm 4 phân vùng với 4 ký tự

Hình 19: Tổng số các bit 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ớnnhất với độ rộng của phân vùng đó

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

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

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

Trang 21

• 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 22: Các ký tự được cắt khỏi biển số

Dưới đây là sơ đồ giải thuật phân vùng 9 ký tự trên biển số xe:

21

Trang 22

Hình 23: Giải thuật phân vùng ký tự

2.2.4.1 Chương trình chia đôi biển số

Đây là chương trình đơn giản, biến số sau khi được chuẩn hóa về kích thước [50 150] thì kích thước từng hàng sau khi chia đôi là [25 150]

2.2.4.2 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ữa 2 ký tự, tương ứng giữa2 vùngranh 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ự Tuynhiên, chương trình cũng có thể trả về vùng ký tự lớn hơn 9 do ảnh hưởng của môitrườ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 9, ta sẽ xóa pixel tại các vùng ranh giới (gần các giá trị bằng0) Đ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 9 (nghĩa là có 1 hay nhiều vùng không chứa ký tự), ta sẽ lấy

9 vùng có diện tích lớn nhất (thông thường vùng không có ký tự nhỏ hơn các vùng có kýtự)

3.3.Nhận dạng ký tự(SVM)

- Thuật toán: với mỗi ảnh 2D chuyển thành ảnh 1D Sau đó ghép các ảnh 1D thành ảnh 2D dùng để huấn luyện

- Ảnh ký tự 2D và chuyển sang 1D

Hình 24: Kí tự sau khi được chuyển đổi từ 2D sang 1D

Hình 25: Minh họa duỗi thẳng ảnh, các dòng được nối với nhau thành 1 dòng duy

nhất.

Trang 23

Hình 26 Kí tự 0 sau khi được xử lí

2 Thang đo:

23

Trang 24

3 K t qu : ế ả

Để xem kết quả sau khi chạy mô hình ta sẽ thực hiện các bước

1-Đọc ảnh và mức xám

2- Lọc và tìm cạnh của ảnh

Trang 25

3-Tìm các đường viền

25

Trang 26

4 Đọc chữ số trên biển báo

5 Kết quả

Trang 27

- Khi chạy chương trình sẽ nhị phân hóa ảnh, dò biên ảnh và tìm vùng chứa biển số.

- Hệ thống nhận diện được vùng chứa biển số

- Vùng màu xanh dương là vùng hiển thị kết quả text của biển số sau khi đã phân tích

PHẦN 5 : KẾT LUẬN

5.1 Đánh giá về cơ sở lý thuyết trong nghiên cứu

Qua nghiên cứu này, có thể hiểu được cách hoạt động của SVM, phân vùng được mục tiêu cần tìm và các kỹ thuật về xử lý ảnh

Tuy nhiên, chúng tôi vẫn chưa thể sử dụng được SVM vào trong mô hình để thực hiện việc nhận dạng ký tự

5.2 Đánh giá về phần mô hình sau khi train

Nhìn chung mô hình có thể nhận diện được vùng chứa biển số xe và đưa ra được đoạn text trong vùng biển số đó

5.3 Điểm hạn chế

Tuy có thể nhận diện được biển số xe nhưng khi có nhiều hơn 1 biển số trong ảnh thì mô hình không thể đưa hết ra được mà chỉ trong 1 trong số đó và 1 vài góc nghiêng thì

mô hình không thể đưa ra được đúng kí tự trong đó

Hình 27: Nhận dạng kí tự còn chưa đúng với 1 vài trường hợp

27

Ngày đăng: 03/12/2024, 16:27

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w