91
Luận văn Đề tài: Bài toán nhn dng bin sxe

Tim Hieu Bai Toan NHan Dang

Embed Size (px)

DESCRIPTION

Tim Hieu Bai Toan NHan Dang

Citation preview

Page 1: Tim Hieu Bai Toan NHan Dang

Luận văn

Đề tài: Bài toán nhận dạng biển số xe

Page 2: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 1 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

MỤC LỤC

MỞ ĐẦU .................................................................................................................. 7

CHƯƠNG 1. Tổng quan về nhận dạng. ................................................................... 8

1.1 - Tính chất và sự cần thiết của bài toán nhận dang. ................................................ 8

1.1.1 Tính chất ...................................................................................................... 8

1.1.2 Sự cần thiết. ................................................................................................. 8

1.2 - Không gian biểu diễn đối tượng, không gian diễn dịch. .................................... 10

1.2.1 Không gian biểu diễn đối tượng ................................................................ 10

1.2.2 Không gian diễn dịch. ................................................................................ 10

1.3 - Mô hình và bản chất của quá trình nhận dạng. ................................................... 11

1.3.1 Mô hình. ..................................................................................................... 11

1.3.2 Bản chất của quá trình nhận dạng. ............................................................. 12

CHƯƠNG 2. Xử lý ảnh và openCV ...................................................................... 15

2.1 - Xử lý nhị phân .................................................................................................... 16

2.2 - Giảm nhiễu. ........................................................................................................ 18

2.2.1 Bộ lọc hộp thông thường (Normalized Box filter). ................................... 19

2.2.2 Bộ lọc gaussian (Gaussian Filter). ............................................................. 20

2.2.3 Bộ lọc Median (Median Filter): ................................................................. 21

2.2.4 Bộ lọc song phương (Bilateral filter). ........................................................ 22

2.2.5 Filter2D ...................................................................................................... 23

2.3 - Biên và các phương pháp tìm biên. .................................................................... 24

2.3.1 Khái niệm về biên: ..................................................................................... 24

2.3.2 Phương pháp Gradient. .............................................................................. 24

2.3.3 Toán tử la bàn. ........................................................................................... 29

2.3.4 Laplace. ...................................................................................................... 31

2.3.5 Tách sườn ảnh theo Canny. ....................................................................... 33

Page 3: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 2 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

2.4 - Biến đổi Hough .................................................................................................. 35

2.5 - Một số hàm cơ bản trong thư viện OpenCV ...................................................... 41

2.5.1 Tải một ảnh và hiển thị ảnh. ...................................................................... 41

2.5.2 Chuyển ảnh màu sang ảnh xám. ................................................................ 42

2.5.3 Tìm đối tượng bằng findContours ............................................................ 43

CHƯƠNG 3. Bài toán nhận dạng biển số xe. ....................................................... 45

3.1 - Khái niệm về nhận dạng biển số xe. ................................................................... 45

3.1.1 Khái niệm. .................................................................................................. 45

3.1.2 Ứng dụng. .................................................................................................. 47

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

3.2 - Một số hướng giải quyết bài toán nhận dạng biển số xe. ................................... 52

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

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

3.2.3 Phân ngưỡng và tím vùng đối tượng (hướng tiếp cận của đồ án). ............ 54

3.3 - Hướng giải quyết. ............................................................................................... 54

3.4 - Phát hiện vùng chứa biển số. .............................................................................. 56

3.4.1 Giai đoạn 1: Biến đối ảnh xám và lọc ảnh ................................................. 57

3.4.2 Giai đoạn 2: Tiến hành phân ngưỡng hoặc phát hiện biên. ....................... 57

3.4.3 Giai đoạn 3: Tìm đường bao đối đượng. ................................................... 58

3.4.4 Giai đoạn 4: Tách vùng biển số. ................................................................ 59

3.5 - Tách riêng từng ký tự ......................................................................................... 60

3.5.1 Giai đoạn 1: Tiến hành phân ngưỡng. ....................................................... 61

3.5.2 Giai đoạn 2: Tìm vùng đối tượng. ............................................................. 61

3.5.3 Giai đoạn 3: Tìm và tách vùng ký tự. ........................................................ 61

3.6 - Nhận dạng ký tự quang học ( mạng nơron) ........................................................ 61

3.6.1 Mô hình nơron nhân tạo ............................................................................. 62

3.6.2 Mạng nơron ................................................................................................ 63

Page 4: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 3 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

3.6.3 Mạng Kohonen ........................................................................................... 66

3.6.4 Mạng nơron nhiều lớp lân truyền ngược sai số ......................................... 71

CHƯƠNG 4. Kết quả và hướng phát triển của bài toán nhận dạng biển số xe. .... 74

4.1 - Kết quả hướng giải quyết “phân ngưỡng và tìm đối tượng”. ............................. 74

4.1.1 Kết quả dùng với phương pháp tìm biên Canny kết hợp với tìm vùng đối

tượng. 75

4.1.2 Kết quả dùng với phương pháp phân ngưỡng kết hợp tìm vùng đối tượng

75

4.1.3 Kêt luận. ..................................................................................................... 76

4.2 - Hướng phát triển của bài toán nhận dạng biền số xe. ........................................ 82

4.2.1 Nhận xét. .................................................................................................... 82

4.2.2 Hướng phát triển của bài toán. ................................................................... 82

KẾT LUẬN. ........................................................................................................... 84

TÀI LIỆU THAM KHẢO ...................................................................................... 85

Phụ lục. ................................................................................................................... 86

Page 5: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 4 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Danh mục các hình vẽ

Hình 1.1 Nhận dạng vân tay trên máy ATM. .......................................................... 9

Hình 1.2 Phiên dịch viên Jibbigo ............................................................................ 9

Hình 1.3 Sơ đồ tổng quan một hệ nhận dạng. ....................................................... 14

Hình 2.1 Quá trình xử lý ảnh. ................................................................................ 15

Hình 2.2 Các bước cơ bản trong hệ thống xử lý ảnh ............................................. 15

Hình 2.3 (a) ngưỡng 40,(b) ngưỡng 121 ............................................................... 16

Hình 2.4 Sử dụng bộ lọc hộp thông thường. ......................................................... 20

Hình 2.5 sử dụng bộ lọc Gaussian ......................................................................... 21

Hình 2.6 sử dụng bộ lọc Median ........................................................................... 22

Hình 2.7 sử dụng bộ lọc song phương ................................................................... 23

Hình 2.8 filter2D nhân thay đổi tăng dần từ trái qua phải. .................................... 24

Hình 2.9 Tìm biên bằng chức năng Sobel trong OpenCV .................................... 29

Hình 2.10 Mặt nạ 8 hướng theo Kirsh. .................................................................. 29

Hình 2.11 Tìm biên Laplace .................................................................................. 33

Hình 2.12 Tìm biên theo Canny ............................................................................ 35

Hình 2.13 Trục tọa độ đề các đi qua 2 điểm. ......................................................... 36

Hình 2.14 Trục tọa độ đề các................................................................................. 36

Hình 2.15 Hệ tọa độ cực. ....................................................................................... 37

Hình 2.16 Đường thẳngHough trong tọa độ cực. .................................................. 38

Hình 2.17 Kết hợp giữa HoughLines với HoughCircles ....................................... 40

Hình 2.18 Tìm thấy hình tròn trong mẫu có hình tròn. ......................................... 41

Hình 2.19 Tải một ảnh vào cửa sổ windows ......................................................... 42

Hình 2.20 Chuyển ảnh màu sang ảnh xám. ........................................................... 43

Hình 2.21 sử dụng findContours tìm đối tượng .................................................... 44

Hình 3.1 Hệ thống tự động nhận dạng biển số xe. ................................................ 46

Hình 3.2 Biển số mới. ............................................................................................ 52

Page 6: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 5 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.3 Một số loại biển số xe thông dụng ......................................................... 54

Hình 3.4 (a) ảnh đầu vào (b) ảnh xử lý xám và lọc song phương. ........................ 57

Hình 3.5 ảnh sau khi tiến hành phân ngượng ........................................................ 58

Hình 3.6 Tìm đường bao các đối tượng ................................................................ 59

Hình 3.7 Sau khi lọc bằng dặc điểm biển số và cắt riêng vùng biển số ................ 60

Hình 3.8 Các ký tự được cắt sau khi tìm thấy vùng biển số .................................. 61

Hình 3.9 Mô hình nơron nhân tạo. ........................................................................ 62

Hình 3.10 Mạng nơron truyền thẳng và nhiều lớp. ............................................... 64

Hình 3.11 Mạng nơron hồi quy. ............................................................................ 64

Hình 3.12 Học tham số có giám sát. ...................................................................... 66

Hình 3.13 Lưới các nơron ..................................................................................... 67

Hình 3.14 Ánh xạ mặt cầu vào lưới nơron 15x15 ................................................. 71

Hình 3.15 Mạng nơron 2 lớp. ................................................................................ 72

Hình 4.1 Biển không nhận dạng được ................................................................... 77

Hình 4.2 Vùng biển số trong quá trình phân ngưỡng. ........................................... 80

Hình 4.3 Mức xám thấp làm vùng biển số bị mất trong quá trình phân ngưỡng .. 80

Hình 4.4 Những biển số không nhận đủ ký tự ...................................................... 82

Page 7: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 6 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Danh mục các bảng

Bảng Tên bảng Trang

Bảng 1 Chi tiết tìm vùng biển số sử dụng dò biên Canny và tìm

vùng đối tượng. 77

Bảng 2 Chi tiết tìm vùng biển số sử dụng hướng phân ngưỡng và

tìm vùng đối tượng. 78

Bảng 3

Tìm vùng biển số trong các khoảng ngưỡng khác nhau

tăng dần.(biển được tìm thấy ở khoảng ngưỡng trước sẽ

không phải là đối tượng xét ở các khoảng ngưỡng sau).

79

Bảng 4

Tìm vùng biển số trong các ngưởng khác nhau giảm dần.

(biển được tìm thấy ở khoảng ngưỡng trước sẽ không phải

là đối tượng xét ở các khoảng ngưỡng sau).

80

Bảng 5

Chi tiết các khoảng ngưỡng phát hiện những biển số.( các

biển tách ly thành công ở khoảng ngưỡng trước không

được tính cho khoảng ngưỡng sau).

82

Page 8: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 7 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

MỞ ĐẦU

Hiện nay, với sự phát triển kinh tế xã hội đã bùng nổ số lượng phương tiện giao

thông. Gây ra những khó khăn trong công tác quản lý, xử lý vi phạm giao thông mà

nguồn nhân lực con người khó có thể đảm đương được. Vì vậy vần để cần thiết là có

một hệ thông quản lý, xử lý vi phạm giao thông tự động.

Để xây dựng hệ thống quản lý giao thông tự động thì “ Bài toán nhận dạng biển

số xe” là tiền đề để xây dựng những mô hình quản lý đó. Tuy nhiên, hiện nay ở Việt

Nam nhưng hệ thống quản lý đó chưa nhiều và lĩnh vực nhận dạng còn đang phát triển.

Từ những thực tế đó, trong thời gian làm đố án tốt nghiệp em đã quyết định lựa

chọn tìm hiểu về bài toán “ nhận dạng” trong đó chú trọng vào việc nhận dạng biển số

xe. Để phục vụ cho bước đầu trong hệ thống quản lý phương tiện giao thông tại Việt

Nam. Trong điều kiện năng lực và thời gian có hạn, nên báo cáo của em không tránh

khỏi những sai sót. Em kình mong thầy cô và các bạn đóng góp những ý kiến để em có

thể chỉnh sửa và bổ sung những phần thiếu sót để em hoàn thiện đề tài của mình.

Em xin chân thành cảm ơn Thầy Vũ Anh Dũng và các bạn đã hết lòng giúp đỡ,

chỉ bảo để em có thể hoàn thành tốt đồ án tốt nghiệp này.

Trong báo cáo đồ án lần này em trình bày thành 4 chương như sau.

Chương I: Tổng quan về nhận dạng.

Chương II. Xử lý ảnh và OpenCV.

Chương III. Bài toán nhận dạng biển số.

Chương IV. Kết quả và hướng phát triển của bài toán nhận dạng biển số xe.

Page 9: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 8 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

CHƯƠNG 1. Tổng quan về nhận dạng.

1.1 - Tính chất và sự cần thiết của bài toán nhận dang.

1.1.1 Tính chất

- Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô

hình nào đó và gán cho chúng vào một lớp (gán đối tượng một tên gọi) dựa theo những

quy luật và các mẫu chuẩn. Quá trình nhận dạng dựa vào những mẫu học biết trước gọi

là nhận dạng có thầy (supervised learning); trong trường hợp ngược lại gọi là học

không thầy (non supervised learning).

- Nhận dạng là một bài toán quan trọng trong ngành thị giác máy tính.

1.1.2 Sự cần thiết.

- Cùng với sự phát triển không ngừng của kinh tế xã hội và các ngành kỹ thuật

hiện nay. Đòi hỏi sự quản lý và xử lý thông tin chính xác mà nó vượt quá sức của con

người. Vì vậy chúng ta cần có máy móc hoặc động làm giảm tải hoặc thay thế công

việc nặng nhọc, đòi hỏi sự chính xác cao và nhàm chán cho con người. Việc giúp máy

móc nhận dang (thu thập , phân loại thông tin) như còn người sẽ giúp máy móc hoạt

động hiệu quả giống như con người với độ chính xác cao hơn rất nhiếu.

- Một số ứng dụng của bài toán nhận dạng.

Nhận dạng dấu vân tay: ở Việt Nam đã được sử dụng trong việc chấm công,

điểm danh và làm khóa an toàn cho các loại cửa sắt, máy tính xách tay…. Nó tạo sự

tiện dụng và rất an toàn.

Page 10: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 9 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 1.1 Nhận dạng vân tay trên máy ATM.

Thay vì phải nhập mã pin trên máy ATM thì bạn chỉ việc đặt ngón tay trỏ của mình

lên và giao dịch sẽ bắt đầu.

Nhận dạng giọng nói: ứng dụng này được tích hợp trên nhiều sản phẩm, bạn sẽ điều

khiển các thiết bị qua giọng nói của mình thay vì phải thao tác trực tiếp bằng tay, như

trong mô hình nhà thông minh, trên điện thoại…. Ví dụ : ứng dụng Jibbigo trên điện

thoại đi động , Ứng dụng này có thể dịch được tiếng nói của người sử dụng với 8 ngôn

ngữ khác nhau như tiếng Anh, Pháp, Đức, Nhật, Hàn Quốc, Philipin, Tây Ban Nha,

Trung Quốc.

Hình 1.2 Phiên dịch viên Jibbigo

Nhận dạng biển số xe: sẽ được giới thiệu tại Chương III

Page 11: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 10 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

1.2 - Không gian biểu diễn đối tượng, không gian diễn dịch.

1.2.1 Không gian biểu diễn đối tượng

Các đối tượng khi quan sát hay thu nhập được thường được biểu diễn bởi tập

các đặc trưng hay đặc tính. Như trong trường hợp xử lý ảnh, ảnh sau khi được tăng

cường để nâng cao chất lượng, phân vùng và trích chọn đặc tính, .được biểu diễn bởi

các đặc trưng như biên , miền đồng nhất…. Người ta thường phân các đặc trưng này

theo các loại như: đặc trưng tô pô (tập điểm), đặc trưng hình học và đặc trưng chức

năng. Việc biểu diễn ảnh theo đặc trưng nào còn phụ thuộc vào ứng dựng tiếp theo.

Ví dụ : giả sử đối tường X (ảnh, chữ viết, dấu vân tay,…) được biểu diễn bởi n

thành phần đặc trưng: X=x1,x2….,xn; mỗi xi biểu diễn một đặc tính. Không gian biểu

diễn đối tượng thường gọi tắt là không gian đối tượng A được định nghĩa:

A=X1,X2……,Xm

Trong đó mỗi Xi biểu diễn một đối tượng. Không gian này có thể là vô hạn.

nhưng để tiện xem xét thì ta chỉ xét tập hữu hạn.

1.2.2 Không gian diễn dịch.

Không gian diễn dịch là tập các tên gọi của đối tượng. Kết thúc quá trình nhận

dạng ta xác định được tên gọi cho các đối tượng trong tập không gian đối tượng hay

nói là đã nhận dạng được đối tượng.

Một hình thức gọi là Ω là tập tên đối tượng:

Ω = w1 ,w2,….wk với wi, i= 1,2,….k là tên các đối tượng

Quá trình nhận dạng đối tượng f là một ánh xa f: A Ω với f là tập các quy luật

để định một phần tử trong A ứng với một phần tử trong Ω. Nếu tập các quy luật và tập

tên các đối tượng là biết trước như trong nhận dạng chữ viết có ( có 26 lớp từ AZ),

Page 12: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 11 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

người ta gọi là nhận dạng có thầy. Trường hợp hai là nhận dạng không có thày ( trường

hợp này khó khăn hơn).

1.3 - Mô hình và bản chất của quá trình nhận dạng.

1.3.1 Mô hình.

Việc chọn lựa một quá trình nhận dạng có liên quan mật thiết đến kiểu mô tả mà

người ta sử dụng để đặc tả đối tượng. Trong nhận dạng, người ta phân chia theo hai họ

lớp:

- Họ mô tả theo tham số.

- Họ mô tả theo cấu trúc.

Cách mô tả được lựa chọn sẽ xác định mô hình của đối tượng. Như vậy, chúng

sẽ có 2 loại mô hình: mô hình theo tham số và mô hình cấu trúc.

a. Mô hình tham số.

Mô hình tham số sử dụng một vector để đặc đối tương. Mỗi phần tử củavector

mô tả một đặc tính của đối tượng. Vì dụ: như trong các đặc trưng chức năng, người ta

sử dụng các hàm cơ sở trực giao để biểu diện. Và như vậy ảnh sẽ được biểu diễn bởi

một chuổi các hàm trực giao. Giả sử C là đường bao của ảnh C(i,j) là điểm thứ i trên

đường bao, i= 1,2…,n ( đường bao gồm n điểm).

Giả sử

x0=

y0=

là tọa độ điểm. Như vậy, moment trung tâm bậc p,q của đường bao là :

Page 13: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 12 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

vector tham số trong trường hợp này chính là các moment µij với i=1,2,….,p và j =

1,2,…,q. Còn trong số các đặc trưng hình học, người ta hay sử dụng chu tuyến, đường

bao, diện tích và tỉ lệ T=4πS/p2

với S là diện tích, p là chu tuyến.

Việc chọn phương pháp biểu diễn sẽ làm đơn giản cách xây dựng. Tuy nhiên, việc

lựa chọn đặc trưng nào là hoàn toàn phụ thuộc vào ứng dụng.

b. Mô hình cấu trúc.

Cách tiếp cận của mô hình này dựa vào việc mô tả đối tượng nhờ một số khái niệm

biểu thị các đối tượng cơ sở trong ngôn ngữ tự nhiên. Để mô tả đối tượng, người ta

dùng một số dạng nguyên thủy như đoạn thẳng, cung …. Chẳng hạn một hình chữ nhật

được định nghĩa gồm 4 đoạng thẳng vuông góc với nhau từng đôi một. Trong mô hình

này người ta sử dụng một bộ kí hiệu kết thúc Vt, một bộ kí hiệu không kết thúc gọi là

Vn . Ngoài ra còn dùng một tập các luật sản xuất để mô tả cách xây dựng các đối tượng

phù hợp dựa trên các đối tượng đơn giản hơn hoặc đối tượng nguyên thủy. Trong cách

tiếp cận này, ta chấp nhận một khẳng định là: cấu trúc là kết quả của việc áp dụng luật

sản xuất theo những nguyên tắc xác định bắt đầu từ một dạng gốc bắt đầu. Một cách

hình thức, ta có thể coi mô hình này tương đương một văn phạm G=(Vt,Vn,P,S) với :

-Vt là bộ kí hiệu kết thúc,

-Vn là bộ ký hiệu không kết thúc,

-P là luật sản xuất,

-S là dạng ( ký hiệu bắt đầu).

1.3.2 Bản chất của quá trình nhận dạng.

Quá trình nhận dạng gồm 3 giai đoạn chính:

- Lựa chọn mô hình biểu diễn đối tượng.

Page 14: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 13 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

- Lựa chọn luật ra quyết định (phương pháp nhận dạng) và suy diễn quá trình học.

- Học nhận dạng.

Khi mô hình biểu diễn đối tượng đã được xác định, có thể là định lượng ( mô hình

tham số) hay định tính ( mô hình cấu trúc), quá trình nhận dạng chuyển sang giai đoạn

học. Học là giai đoạn quan trọng. Thao tác học nhằm cải thiện, điểu chỉnh việc phân

hoạch tập đối tượng thành lớp.

Việc nhận dạng chính là tìm ra quy luật và các thuật toán để có thể gán đối tượng

vào một lớp hay nói một cách khác gán cho đối tượng một tên.

a. Học có thầy ( supervised learning)

Kỹ thuật phân loại nhờ kiến thức biết trước gọi là học có thầy. Đặc điểm cơ bản của

kỹ thuật này là người ta có một thư viện các mẫu chuẩn. Mẫu cần nhận dạng sẽ được

đem so sánh với mẫu chuẩn để xem nó thuộc loại nào. Ví dụ như trong một ảnh viễn

thám, người ta muốn phân biệt một cách đồng lúa, một cánh rừng hay một vùng đất

hoang mà đã có miêu tả về đối tượng đó. Vấn đề chủ yếu là thiết kế một hệ thống để có

thể đối sánh đối tượng trong ảnh với mẫu chuẩn và quyết định gán cho chúng vào một

lớp. Việc đối sánh nhờ vào các thủ tục ra quyết định dựa trên một công cụ gọi là hàm

phân lớp hay hàm ra quyết định.

b. Học không có thầy( non supervised learning)

Kỹ thuật này phải tự định ra cách lớp khác nhau và xác định các tham số đặc

trưng cho từng lớp. Học không có thầy khó khăn hơn. Một mặt, do số lớp không được

biết trước, mặt khác những đặc trưng của lớp cũng không biết trước. Kỹ thuật này

nhằm tiến hành mọi cách gộp nhóm có thể và chọn lựa cách tốt nhất. Bắt đầu từ tập dữ

liệu, nhiều thủ tực xử lý khác nhau nhằm phân lớp và nâng cấp dần để đạt được một

phương án phân loại.

Page 15: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 14 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Nhin chung, một hệ thống nhận dạng có thể tóm tắt sơ đồ sau.

Hình 1.3 Sơ đồ tổng quan một hệ nhận dạng.

Page 16: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 15 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

CHƯƠNG 2. Xử lý ảnh và openCV

Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho

ra kết quả mong muốn. kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh

“tốt hơn” (theo ý muốn) hoặc một kết luận.

Hình 2.1 Quá trình xử lý ảnh.

Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem là đặc trưng

cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không

gian và có thể xem như hàm n biến . Do đó ảnh trong xử lý ảnh có thể xem như ảnh n

chiều.

Sơ đồ tổng quát của hệ thống xử lý ảnh:

Hình 2.2 Các bước cơ bản trong hệ thống xử lý ảnh

Và ở chương này chung ta sẽ được biết OpenCV hỗ trợ gì cho những bước xử lý

ảnh. Tiếp sau em sẽ giới thiệu các bước xử lý và OpenCV hỗ trợ xử lý ảnh như thế nào

(cung cấp thư viện gì).

Page 17: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 16 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Tiền xử lý

Các thao tác xử lý trên ảnh để chuẩn bị cho những bước phân tích tiếp theo.

Chẳng hạn như các thao tác: chọn ngưỡng để chuyển ảnh đa cấp xám, ảnh màu về dạng

nhị phân, giảm nhiễu để loại bỏ những dữ diệu không liên quan, phân đoạn để phân

tách cách thành phần trong ảnh và cuối cùng là làm mảnh hay dò biên để đễ dàng xác

định các vùng, các đặc trưng thích hợp và đối tượng cần quan tâm.

2.2 - Xử lý nhị phân

Mức xám là giá trị có thể có của điểm ảnh.

Với những ảnh đa cấp xám các thông tin đã sẵn ở dạng nhị phân chẳng hạn như các

chuỗi văn bản hay các đối tượng ảnh, thì phương pháp nhị phân thông thường sẽ được

thực hiện trước. Mục đích của phương pháp này sẽ tự động chọn một ngưỡng cần thiết

để tách ảnh ra làm hai phần: thông tin ảnh và thông tin nền. Việc chọn ngưỡng tốt

(ngưỡng mà có thể tách ảnh thành hai phần: phần ảnh, phần nền một cách chính xác)

luôn là một quá trình khó và dễ gây ra lỗi.

(a) (b)

Hình 2.3 (a) ngưỡng 40,(b) ngưỡng 121

Kết quả này sẽ gặp khó khăn khi độ tương phản giữa nền và các giá trị điểm ảnh là

thấp (chẳng hạn như xe màu xám nền mầu trắng), nét của văn bản mỏng hoặc dữ liệu

không được chiếu sáng tốt.

Page 18: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 17 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Để thực hiện việc tách ngưỡng này thì OpenCV cung cấp chức năng threshold.

threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );

src_gray: hình ảnh đầu vào.

dst: hình ảnh đầu ra.

threshold_value: giá trị thực hiện tách ngưỡng.

max_BINARY_value: giá trị thực hiện tách ngưỡng nhị phân.

threshold_type: một trong 5 ngưỡng hoạt động

5 ngưỡng hoạt động OpenCV cung cấp:

a. Threshold Binary: nếu giá trị các điểm ảnh cao hơn giá trị ngưỡng thì được thiết

lập giá trị mới là giá trị cao nhất (255), thấp hơn giá trị các điểm ảnh về mức 0;

b. Threshold binaru, inverted: ngược với Threshold Binary

c. Truncate: giá trị các điểm ảnh cao hơn giá trị ngượng sẽ bị thay đổi bằng giá trị

ngưỡng, thấp hơn giữ nguyên.

Page 19: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 18 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

d. Threshold to Zero: giá trị các điểm ảnh cao hơn giá trị ngưỡng sẽ được giữ lại

còn các điểm ảnh có giá trị thấp hơn giá trị ngưỡng sẽ đưa về giá trị 0.

e. Threshold to Zero, inverted : Ngược lại với Threshold to Zero.

2.3 - Giảm nhiễu.

Nhiễu trong ảnh là do nhiều nguyên nhân bao gồm: sự thoái hóa theo thời gian,

quá trình sao chép. Một số kỹ thuật xử lý ảnh sẽ được áp dụng để loại bỏ nhiễu. Sau

khi được nhị phân hóa, ảnh sẽ được lọc để giảm nhiễu. Trên thực thế tồn tại nhiều

loại nhiễu, tuy nhiên người ta thường xem xét 3 loại chính: nhiễu cộng, nhiễu nhân

và nhiễu xung. Chúng xuất hiện những điểm ảnh khác biệt so với vùng xung quanh.

Bản chất của nhiễu là thường tương ứng với tần số cao và cơ sở lý thuyết của các

bộ lọc là chỉ cho những tín hiệu có tần số nào đó thông qua, do đó để lọc nhiệu

người ta thường sử dụng bộ lọc thông thấp hay trung bình. Với nhiễu cộng và nhiễu

Page 20: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 19 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

nhân ta dùng các bộ lọc thông thấp, trung bình; với nhiễu xung ta dùng lọc trung vị

giả trung bị.

Trong lọc trung bình, người ta ưu tiên cho các hướng để bảo vệ biên của ảnh

khởi bị mờ khi làm trơn ảnh. Các kiệu mặt nà được sử dụng tùy theo các các trường

hợp khác nhau. Các bộ lọc trên là bộ lọc tuyến tính theo nghĩa là điểm ở tâm cửa sổ

sẽ được thay bởi tổ hợp các điểm lân cận chập với mặt nạ. Lọc thông thấp thường

dùng để làm trơn nhiễu.

Các bộ lọc phi tuyến cũng được dùng trong kỹ thuật tăng cường ảnh. Trong kỹ

thuật này người ta dùng bộ lọc trung vị, bộ lọc giả trung vị. Với bộ lọc trung vị các

điểm ảnh sẽ được thay thế bởi trung vị các điệm ảnh, bộ lọc giả trung vị thì các điểm

ảnh được thay thế bỏi trung bình cộng của giá trị “trung vi.”.

Sau đây là một số bộ lọc thường dùng.

2.3.1 Bộ lọc hộp thông thường (Normalized Box filter).

Đây là bộ lọc đơn giản nhất.

Mỗi điểm đầu ra là trung bình của các điểm láng giềng hạt nhân của mình (tất cả các

điểm xung quanh đóng góp với trọng lượng bằng nhau.

1...111

1......

1......

1...111

1...111

1

Heightwidth KKK

OpenCv cung cấp các chức năng blur để thực hiện giảm nhiễu với bộ lọc này.

Blur(src,dst,size(i,i),point(-1,-1))

src: ảnh nguồn

dst: ảnh ra

size(w,h) : xác định kích thước của hạt nhân sẽ được sử dụng ( chiều

Page 21: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 20 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

rộng w pixel và chiều cao h pixels.

Point(-1,-1) chỉ các điểm có vị trí hàng xóm.

Hình 2.4 Sử dụng bộ lọc hộp thông thường.

2.3.2 Bộ lọc gaussian (Gaussian Filter).

Đây là bộ lọc hữu ích nhất (mặc dù không phải là nhanh nhất).

Nó được thực hiện bởi chức năng GaussianBlur trong OpenCV.

gaussianBlur(src,dst,size(i,i),0,0)

src: hình ảnh nguồn

dst: hình ảnh đầu ra.

size(w,h). kích thước của hạt nhân sẽ được sử dụng. w và h phải là số

lẻ và tích cự nếu không kích thước sẽ được tính bằng cách sử dụng đối

số σx và σy.

σx độ lệch chuẩn trong x. Viết 0 ngụ ý rằng độ lệch được tính bằng các

sử dụng kích thước hạt nhân.

Page 22: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 21 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

σy độ lệch chuẩn y.

Hình 2.5 sử dụng bộ lọc Gaussian

2.3.3 Bộ lọc Median (Median Filter):

Các bộ lọc trung bình chạy qua từng phần tử của tín hiệu và thay thế mỗi điểm

ảnh với trung bình của các điểm anh lân cận nó.

Bộ lọc này được cung cấp bởi các chức năng medianBlur trong thư viện

OpenCV.

medianBlur (src,dst,i);

src: ảnh nguồn.

dst: ảnh đầu ra ( có kích thước giống như src)

i: kích thước của hạt nhân ( i phải lẻ).

Page 23: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 22 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.6 sử dụng bộ lọc Median

2.3.4 Bộ lọc song phương (Bilateral filter).

Hầu hết các bộ lọc có mục tiêu chính là làm mịn hình ảnh đầu vào. Tuy nhiên

các bộ lọc không chỉ giảm nhiễu mà còn làm mờ các cạnh. Để tránh điếu này chúng ta

xử dụng bộ lọc song phương. Và OpenCV cung cấp chức năng bilateralFilter.

bilateralFilter(src,dst,i,i*2,i/2);

src: ảnh nguồn

dst: ảnh đầu ra

d: đường kính của vùng lân cận điểm ảnh.

σcolor: độ lệch chuẩn trong không gian màu.

σSpace: độ lệch chuẩn trong khoảng tọa độ.

Page 24: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 23 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.7 sử dụng bộ lọc song phương

2.3.5 Filter2D

Ngoài những bộ lọc thông dụng như trên thì thư viện OpenCV còn cung cấp bộ lọc mà

chúng ta có thể thay đổi kích thước hạt nhân. Đó là filter2D.

Filter2D(src, dst, ddepth, kernel, anchor, delta, BORDER_DEFAULT)

Src: ảnh nguồn.

Dst: ảnh đầu ra.

Ddepth: độ sâu của dst. Giá trị -1 là chỉ ra độ sâu như nguồn,

Kernel: hạt nhân

Anchor: vị trí liên quan đến hạt nhân của nó.

Delta: giá trị được thêm vào mỗi điểm ảnh. Mặc định bằng 0

BORDER_DEFAULT: giá trị mặc định

Page 25: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 24 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.8 filter2D nhân thay đổi tăng dần từ trái qua phải.

2.4 - Biên và các phương pháp tìm biên.

2.4.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ì kỹ thuật phân đoạn 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ái 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.

Sau đây tôi sẽ giới thiệu một số phương pháp tìm biên mà thư viện OpenCV hỗ

trợ rất tốt.

2.4.2 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à viector có các

thành phần biểu thị tốc độ thay đổi giá trị của điểm ảnh theo hai hướng x và hướng

y. Các thành phần của Gradient được tính bởi:

dx

yxfydxxff

x

yxfx

),(),('

),(

dx

yxfdyyxff

y

yxfy

),(),('

),(

Trong đó dx, dy là khoảng cách giữa hai điểm kế cận theo hướng x,y tương ứng

(thực tế chọn dx=dy=1). Đây là phương pháp dựa trên đạo hàm riêng bậc nhất theo

hướng x,y.

Page 26: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 25 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Gradient trong gốc tọa độ (r,θ), với r là vector, θ là góc

sin'cos'),(

yx ffdr

dy

y

f

dr

dx

x

f

dr

rdf

f(.) đạt cực đại khi 0(.)

dr

df

tức: f’xcosθ + f’ysinθ = 0 hay:

22

max '''

'

'

'

cos

sin

yx fffvàyf

xfarctgr

yf

xftg

Theo định nghĩa về gradient, nếu áp dụng nó vào xử lý ảnh, việc tính toán sẽ

rất phức tạp. Để đơn giản mà không mất tính chất của phương pháp Gradient,

người ta sử dụng kỹ thuật Gradient dùng cặp mặt nạ H1, H2 trực giao. Nếu định

nghĩa g1, g2 là Gradient theo hai hướng x, y tương ứng thì biên độ g(m,n) tại

điểm (m,n) được tính:

),(),(),( 2

2

2

1 nmgnmgnmg

Đặt A0 = g(m,n);

θr(m,n)=artg(g2(m,n))

Để giảm độ phức tạp tính toán, A0 được tính gần đúng như sau:

A0=|g1(m,n)| + |g2(m,n)|

Page 27: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 26 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Các toán tử đạo hàm được áp dụng khá nhiều, ở đây, ta chỉ xét một số toàn tử

tiêu biểu: Robert, Sobel, prewitt, đẳng hướng(Isometric), 4- lân cận (thư viện

OpenCV hỗ trợ Sobel tìm biên khá tốt).

a. Toán tử Robert (1965).

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:

),()1,(

),(),1(

yxIyxIg

yxIyxIg

y

x

Điếu này tương đương với việc chập hai mặt nạ H1 và H2 theo hai hướng x và

y:

01

10xH

10

01yH

Hướng ngang (x) Hướng theo (y)

b. Toán tử mắt nạ Sobel.

Toán tử Sobel được Duda và Hart đặt ra vào năm 1973 với các mặt nạ tương

tự như của Robert nhưng cấu hình khác như sau:

101

101

101

xH

111

000

111

yH

Hướng ngang (x) Hướng dọc (y)

c. Mặt nạ Prewitt

Toán tử Prewitt dưa ra năm 1970 có dạng.

101

202

101

xH

121

000

121

yH

Hướng ngang (x) Hướng dọc (y).

Page 28: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 27 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

d. Mặt nạ đẳng hướng:

Một mặt nạ khác cũng được nêu như dưới đây gọi là mặt nạ đẳng hướng

(Isornetric).

101

202

101

xH

121

000

121

yH

Hướng ngang (x) Hướng dọc (y).

e. Toán tử 4-lân cận (4-Neighbour Operator).

Toán tử 4-lân cận được Chaudhuri và Chandor (1984) nêu ra trong đó mặt nạ

có kích thước 3x3 được thay thế cho mặt nạ 2x2 của toán tử Robert. Mặt nạ 4-

lân cận được cho như sau:

Theo hướng x Theo hướng y

Nhận xét:

Toán tử Prewitt có thể tách sườn tốt hơn toán tử Sobel, trong khi đó toán tử

Sobel tách các sườn chéo tốt hơn. Mặt khác, các toán tử Robert và các toán tử 4-lân cận

có nhược điểm là nhạy với nhiễu, Các toán tử Gradient và Sobel giảm nhiễu do tác

dụng của lọc trung bình các điểm lân cận. Như vậy, để đạt được kết quà mong muốn

các toán tử Gradient thường được dùng trước để làm sạch nhiễu.

Các mặt nạ của toán tử trên có kích thước 2x2 hoặc 3x3 chiều. Các mặt nạ có số

chiều lớn hơn cũng được sử dụng. Ví dụ trong kỹ thuật phát hiện biên người ta dùng

mặt nạ 5x5 cho toán tử Sobel.

Page 29: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 28 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Trong thư viện OpenCv có chức năng Sobel với mặt nạ:

303

10010

303

xG

3103

000

3103

yG

Cho kết quả tốt hơn so với Sobel theo chức năng tiêu chuẩn.

Mat grad_x, grad_y;

Mat abs_grad_x, abs_grad_y;

/// Gradient X

Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );

/// Gradient Y

Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );

Src_gray: hình ảnh đầu vào.

Grad_x/ grad_y, ảnh đầu ra.

Ddepth. Độ sâu của hình ảnh đầu ra.

X_order: thứ tự của các phát sinh theo hướng x,

Y_order: thứ tự của các phát sinh theo hướng y,

Page 30: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 29 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.9 Tìm biên bằng chức năng Sobel trong OpenCV

2.4.3 Toán tử la bàn.

Kirsh đã đề xuất mặt nạ 8 hướng như 8 hướng la bàn. Hình 2.10 là mô hình 8

hướng và được đặt tên theo hướng địa lý và theo chiều kim đồng hồ: Đông, Đông-

Nam, Nam, Tây-Nam, Tây, Tây-Bắc, Bắc, Đông-Bắc; mỗi hướng lệch nhau 45 độ.

Hình 2.10 Mặt nạ 8 hướng theo Kirsh.

b. Toán tử la bàn Krish:

Page 31: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 30 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Có nhiều toán tử la bán khác nhau. Ta xem xét toán tử la bàn Kirsh đặc trưng bởi

tám mặt nạ với kích thước 3x3 như sau:

333

303

555

BH

333

503

553

BĐH

533

503

533

ĐH

555

303

333

NH

553

503

333

NĐH

335

335

335

TH

333

303

355

BTH

355

305

333

NTH

Ký hiệu Ai ; i= 1,2,….,8 là Gradient theo 8 hướng như 8 mặt nạ kể trên, khi đó biên

độ Gradient tại điểm (x,y) được tính theo.

A(x,y) = Max(|gi(x,y)|) i= 1,2,….,8.

Nếu lấy đạo hàm bậc hai của ảnh: ta có phương pháp Laplace

Hai phương pháp này gọi chung là phương pháp dò biên cục bộ.

c. Toán tử la bàn khác:

Ngoài toàn tử la bàn Kirsh, một số toán tử la bàn khác sử dụng bộ mặt nạ tám

hướng khác như:

Page 32: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 31 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

111

121

111

BH

111

121

111

BĐH

111

121

111

ĐH

111

121

111

NH

111

121

111

NĐH

111

121

111

TH

111

121

111

BTH

111

121

111

NTH

Hoặc:

121

000

121

BH

012

101

210

BĐH

101

202

101

ĐH

121

000

121

NH

210

101

012

NĐH

101

202

101

TH

210

101

012

BTH

012

101

210

NTH

2.4.4 Laplace.

Để khắc phục hạn chế và nhược điểm của phương pháp Gradient, trong đó sử dụng

đạo hàm riêng bậc nhất người ta nghĩ đến việc sử dụng đạo hàm riêng bậc hai hay toán

tử Laplace. Phương pháp do biên theo toán tử Laplace hiệu quả hơn phương pháp toán

Page 33: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 32 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

tử Gradient trong trường hợp mức xám biến đổi chậm, miền chuyển đổi mức xám có

độ trải rộng.

Toán tử Laplace được định nghĩa như sau:

2

2

2

22

y

f

x

ff

Toán Laplace dùng một số mặt nạ khác nhau nhằm tính gần đúng đạo hàm riêng

bậc 2. Các dạng mặt nạ theo toán tử Laplace bậc 3x3 có thể:

010

141

010

1H

111

181

111

2H

121

152

121

3H

Ghi chú: mặt nạ H1 còn cải biên bằng việc lấy giá trị ở tâm bằng 8 thay vì giá trị 4.

Để thấy rõ việc xấp xỉ đạo hàm riêng bậc 2 trong không gian 2 chiều với mặt nạ H1 làm

ví dụ, ta có thể tính gần đúng như sau:

),1(),1(),(22

2

yxfyxfyxfx

f

)1,()1,(),(22

2

yxfyxfyxf

y

f

Do đó:

)1,()1,(),1(),1(),(42

2

2

22

yxfyxfyxfyxfyxf

y

f

x

ff

Tóm lại: Kỹ thuật Laplace tạo đường biên mảnh ( có độ rộng 1 pixel). Nhược điểm

của kỹ thuật này là rất nhạy với nhiễu, do đó đường biên thu được thường kém ổn định.

Phương pháp Laplace được hỗ trợ sẵn có trong thư viện OpenCV.

Page 34: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 33 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Laplacian( src_gray,dst,ddepth,kernel_size,scale,delta, BORDER_DEFAULT );

Src_gray: ảnh đầu vào.

Dst: ảnh đầu ra.

Ddepth: độ sâu của ảnh.

Kernel_size: kích thước hạt nhân

Scale, delta and BORDER_DEFAULT: những giá trị mặc định

Kết quả : hình 2.11

Hình 2.11 Tìm biên Laplace

2.4.5 Tách sườn ảnh theo Canny.

Bộ tách sường ảnh theo Canny (1986) dựa trên cặp đạo hàm riêng bậc nhất với việc

làm sạch nhiễu. Mục này được để riêng vì đây là phương pháp tách đường biên khá

phổ biến được biết đến như là phương pháp dò tối ưu, nó đáp ứng được ba tiêu chí sau:

Tỷ lệ lội thấp: phát hiện tốt các cạnh.

Phân vùng tốt: Khoảng cách giữa các điểm ảnh cạnh phát hiện và pixel thực

tế phải được giảm nhiễu.

Page 35: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 34 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Đáp ứng tối thiểu: có cách dò cho mỗi cạnh.

Các bước làm theo Canny:

a. Giảm nhiễu: Để thực hiện việc giảm nhiễu bộ lọc Gaussian được sử dụng. Một

hạt nhân Gaussian có cỡ bằng 5 có thể được sử dụng dưới đây:

24542

491294

51215125

491294

24542

159

1K

b. Tìm gradient cường độ của hình ảnh. Điều này được thực hiện tương tự như Sobel

Áp dụng một cặp mặt nạ theo hướng x và y:

121

000

121

101

202

101

xx GG

Tìm gradient và hướng được làm tròn

x

y

yxG

GGGG arctan22

Hướng được làm tròn đến một trong bốn góc có thể ( cụ thể là 0,45,90 hay 135).

c. Ức chế tối đa. Sử dụng để loại bỏ các điểm ảnh không được coi là một phần của

một cạnh.

d. Trễ. ở đây Canny sử dụng hai ngưỡng cao và thấp.

Nếu một pixel cao hơn ngưỡng trên (cao), điểm ảnh được chấp nhận là một

cạnh.

Nếu một pixel thấp hơn ngưỡng thấp. nó sẽ bị từ chối.

Nếu ở giữa hai ngưỡng. Nó sẽ được chấp nhận khi nó gần với một pixel ở

trên ngưỡng cao.

Page 36: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 35 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Tỉ lệ đề nghị cao/thấp giữa 2/1 và 3/1

Hình 2.12 Tìm biên theo Canny

2.5 - Biến đổi Hough

Biến đổi Hough là phương pháp dùng để xác định đường thẳng ( đường tròn elip)

gần đúng đi qua một tập hợp điểm.

Với (x, y) là một điểm y=mx+c c =-mx + y

Như vậy nếu có N điểm nằm trên một đường thẳng

Ni

mxyc

Ni

ycmx iiii

,1,

Thay vì tìm N điểm trên đường thẳng, người ta xét tất cả các điểm, xem điểm nào

có nhiều dường thẳng đi qua nhất.

Page 37: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 36 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.13 Trục tọa độ đề các đi qua 2 điểm.

Hình 2.14 Trục tọa độ đề các

Thực chất biến đổi Hought là biến điểm thành đường thẳng.

]][[

,,

,0]][[

cmathìmxyc

tmcmyx

cmcma

ii

ii

Sau đó đếm trên ma trận

Hạn chế: hệ số 0< m < ∞

Page 38: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 37 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

]][[1||][1

1|| cmaluuthìmcm

aluuthìm

Biến đổi Hough theo tọa độ cực.

Hình 2.15 Hệ tọa độ cực.

Các điểm trên đường thẳng có tọa độ cực t/m với

và 2

22 NMr

với M và N là chiều cao và chiều rộng của ảnh.

Lấy tại tâm ảnh

rathì

yxrnêuyx

r

rar

sincos,

,

0,

Page 39: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 38 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.16 Đường thẳngHough trong tọa độ cực.

Biến đổi Hough ánh xạ N điểm thành N đường sin trong tọa độ cức các đường này

đều đi qua điểm (ri, 𝛅i). Giao điểm (ri, 𝛅i) của N đường sin sẽ xác định một đường thẳng

trong hệ tọa độ đề các. Như vậy, những đường thằng đi qua điểm (ri, yi) sẽ có bấy

nhiêu cặp giá trị (ri, 𝛅i). Mục đích tìm ra cắp (r,𝛅) sao cho số đường hình sin đi qua

nhiều nhất, và cặp đó chính là cặp tham số cho đường thẳng.

Hough với OpenCv

Để thuận tiện cho việc dùng Hough để tìm đường thẳng và đường tròn trong ảnh thì

OpenCv cung cấp chức năng HoughLines, HoughLinesP và HoughCircles.

a. Tìm đường thẳng với HoughLines và HoughLinesP. Hình 2.17

HoughLines

vector<Vec2f> lines;

HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 );

Dst: đầu ra. ( là ảnh xám)

Lines: một vector lưu trữ thông số (r,θ) của các dòng được phát hiện

Rho: độ phân giải của tham số r theo Pixel. Thường sử dụng 1 pixel.

Theta: độ phân giải của tham số θ theo radian. Thường sử dụng 1 độ

Page 40: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 39 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

(CV_PI/180)

Threshold: số lượng tối thiểu của nút phát hiện.

Srn và stn: thông số mặc định.

HoughLinesP

vector<Vec2f> lines;

HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 );

Dst: đầu ra (ảnh xám)

Lines: Một vector sẽ lưu trữ các thông số của

các dòng được phát hiện.

Rho: độ phân giải của tham số r theo pixel. ( thường sử dụng 1 pixel)

Theta: độ phân giải của tham số θ theo radian (thường sử dụng là 1 độ

CV_PI/180)

Threshold: số lượng tối thiểu nút

MinhLinLength: số lượng tối thiểu của các điểm có thể tạo thành một

đường. nếu ít hơn sẽ bị bỏ qua.

maxLinegap: khoảng các tối đa giữa hai điểm được xem xét trong cùng

một dòng.

Page 41: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 40 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.17 Kết hợp giữa HoughLines với HoughCircles

b. Tìm đường tròn với HoughCircles. Hình 2.18

vector<Vec3f> circles;

HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8,

200, 100, 0, 0 );

Src_gray: đầu vào là một ảnh xám

Circles:một vector lưu chữ 3 giá trị xc, yc , r cho mỗi vòng tròn tìm được.

CV_HOUGH_GRADIENT:xác định phương pháp phát hiện. đây là

phương pháp duy nhất sẵn có trong OpenCV

Dp=1: tỷ lệ nhịch đảo của độ phân giải.

Min_dist = src_gray.rows/8: khoản các tối thiểu giữa tâm phát hiện được

Param_1 =200: ngưởng để phát hiện cạnh canny nội bộ.

Pram_2 = 100*: ngưỡng phát hiện tâm.

Min_radius = 0:đặt như mặc định

Max_radius =0: bán kính tối đa được phát hiện. Nếu không biết thì đặt

như là mặc định ( giá trị 0).

Page 42: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 41 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.18 Tìm thấy hình tròn trong mẫu có hình tròn.

2.6 - Một số hàm cơ bản trong thư viện OpenCV

Trong những phần trước em đã đề đến một số hàm của OpenCV trong phần này tôi

sẽ giới thiệu những hàm cơ bản hỗ trợ cho các hàm đã được đề cập ở trên. Và đề cập

tới hàm tìm tối tượng hữu hiệu trong thư viện OpenCV.

2.6.1 Tải một ảnh và hiển thị ảnh.

Đây là một chức năng đơn giản không thể thiếu của OpenCV.

Tải một ảnh.

mat src; //tạo một mat src

src = imread(argv[1],1);

Mat = iplimage.

Argv[1]: nguồn hình ảnh (đường dẫn)

1: tải ảnh lên ở chế độ ảnh màu

Page 43: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 42 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hiển thị ảnh.

//------tạo một cửa sổ với tên nguon----------------------

nameWindow(“nguon”, CV_WINDOW_AUTOSIZE);

//------tải ảnh src lên cửa sổ nguon-----------------------

imshow (“nguon”,src);

Hình 2.19 Tải một ảnh vào cửa sổ windows

2.6.2 Chuyển ảnh màu sang ảnh xám.

Đây là chức năng chuyển ảnh màu về ảnh xàm của thư viện OpenCV. Bước

chuyển đổi ảnh màu về ảnh xám là bước làm cần thiết quan trọng cho các bước xử lý

ảnh tiếp theo.

Chuyển ảnh màu sang ảnh xám (hình 2.19)

cvtColor(src, src_gray, CV_BGR2GRAY);

Src: ảnh nguồn

Src_gray: ảnh xám đầu ra.

CV_BGR2GRAY: chuyển từ mày BGR sang xám

Page 44: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 43 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 2.20 Chuyển ảnh màu sang ảnh xám.

2.6.3 Tìm đối tượng bằng findContours.

Ở đây chúng ta sẽ tìm đối tượng thông qua biên. Nó không chính thống là một

thuật toán vì vậy em để findContours vào phần này coi như các hàm OpenCV hữu ích

trong việc tìm đối tượng trong ảnh.

Sau đây chúng ta xem cách sử dụng hàm findContours và xem nó hữu như thế

nào khi dùng các công cụ khác để đánh dấu những vùng tìm được.

void findContours ( InputOutputArray image , OutputArrayOfArrays contours,

OutputArray hierarchy , int mode , int method , Point offset =Point() )

image: ảnh nguồn 8-bit kênh đơn. ( ảnh qua các xử lý nhị phân , tách

ngưỡng, canny)

contours: đường viền được lưu trữ như một vector các điểm.

hierarchy: tùy chọn đầu ra vector bao gồm các thông tin về cấu trúc liên

kết hình ảnh. Nó có nhiều yếu tố như số lượng các đường nét.

Mode: đường viền hồi chế độ: ví dụ CV_RETR_TREE lấy tất cả các

Page 45: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 44 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

đường biền và xây dựng lại một hệ thống phân cấp đầy đủ các đường

nét lồng nhau.

Method: phương pháp lấy đường viền xấp xỉ. ví dụ:

CV_CHAIN_APPROX_SIMPLE nén phân đoạn ngang , dọc chéo và

chỉ ra vị trí.

Offset. Tùy trọn bù đắp.

Kết quả: Hình 2.21

Hình 2.21 Sử dụng findContours tìm đối tượng

Page 46: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 45 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

CHƯƠNG 3. Bài toán nhận dạng biển số xe.

3.1 - Khái niệm về nhận dạng biển số xe.

3.1.1 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 là xác định

thông tin như: chủ sở hữu, …

Phân loại ứng dụng nhận dạng biển số xe:

Ứng dụng nhận dạng biển số xe là ứng dụng có khả năng phân tích hình ảnh và xác

định biển số xe từ các hình ảnh chụp được từ các thiết bị thu hình. Nguồn hình ảnh cho

ứng dụng có rất nhiều. Và phát triển, hình ảnh được trực tiếp thu nhận từ camera.

Trong báo cáo tốt nghiệp em chỉ dừng lại ở mức xác định biển số xe (cắt các vùng chữ

trên biển) từ các bức ảnh.

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 dùng

tại các 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…

(hình 3.1).

Page 47: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 46 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.1 Hệ thống tự động nhận dạng biển số xe.

Loại 2: Không giới hạn vùng nhìn.

Đầu vào: ảnh đầu vào thu được từ 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ể là ả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ố phải dủ rõ để có thể nhận dạng được ký tự trong

vùng đó.

Nguyên ly 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 ma kết quả nhận dạng

được truyền đi hay lưu trữ để phục vụ nhu cầu của người dùng cuối.

Ứng dụng: vì không phụ thuộc vào phạm hình ảnh thu được nên có dùng ứng

dụng tại nhiều nơi như tại những điểm đ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.

Page 48: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 47 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Yêu cầu thiết bị:

- Máy quét

- Đèn chiếu

- Bộ phận thu- tách hình ảnh

- Máy tính

- Một số thiết bị khác tùy mục đích sử dụng.

Trong quá trình tìm hiểu, xây dựng đồ án em hướng tới ứng dụng loại 2. Vì vậy

trong báo có này chỉ nêu cách thức giải quyết làm sao nhận dạng và tách các ký tự chữ

và số của phần biển số ( ở mục 3.2).

3.1.2 Ứng dụng.

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 đề 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 vượt biên bất hợp phá. Việc lắp đặt 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 sẽ hỗ trợ hoặc tự động hóa công tác

mở cổng cho xe ra vào.

- Xử lý vi phạm giao thông: Khi lắp đặt hệ thống sẽ hỗ trợ việc sử lý vi phạm giao

thông đường bộ và có thể tự động báo lỗi vi phạm. Hiện đang được thí điểm trên một

số tuyến đường cúa Quốc lộ 1A để xử lý lỗi chạy quá tốc độ.

Page 49: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 48 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

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

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

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

11-Cao Bằng

12 - Lạng Sơn

14 - Quảng Ninh

15,16 - Hải Phòng

17 - Thái Bình

18 - Nam Định

19 - Phú Thọ

20 - Thái Nguyên

21 - Yên Bái

22 - Tuyên Quang

23 - Hà Giang

24 - Lào Cai

25 - Lai Châu

26 - Sơn La

27 - Điện Biên

28 - Hòa Bình

29,30,31,32 - Hà Nội

33 - Hà Tây

34 - Hải Dương

35 - Ninh Bình

36 - Thanh Hóa

43 - Đà Nẵng

47 - Đắc Lắc

48 - Đắc Nông

49 - Lâm Đồng

50 đến 59 - TP. Hồ Chí

Minh

60 - Đồng Nai

61 - Bình Dương

62 - Long An

63 - Tiền Giang

64 - Vĩnh Long

65 - Cần Thơ

66 - Đồng Tháp

67 - An Giang

68 - Kiên Giang

69 - Cà Mau

70 - Tây Ninh

71 - Bến Tre

72 - Bà Rịa - Vũng Tàu

73 - Quảng Bình

77 - Bình Định

78 - Phú Yên

79 - Khánh Hòa

80 - Các đơn vị kinh tế

thuộc TW (hàng không)

81 - Gia Lai

82 - KonTum

83 - Sóc Trăng

84 - Trà Vinh

85 - Ninh Thuận

86 - Bình Thuận

88 - Vĩnh Phúc

89 - Hưng Yên

90 - Hà Nam

92 - Quảng Nam

93 - Bình Phước

94 - Bạc Liêu

95 - Hậu Giang

97 - Bắc Cạn

98 - Bắc Giang

Page 50: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 49 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

37 - Nghệ An

38 - Hà Tĩnh

74 - Quảng Trị

75 - Huế

76 - Quảng Ngãi

99 - Bắc Ninh

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

1. Màu xanh chữ trắng là biển xe của các cơ quan hành chính sự nghiệp:

- Trực thuộc chính phủ là biển xanh 80.

- Trưc thuộc tính thành thì theo số tương ứng.

2. Màu đỏ chữ trắng là biền xe trong quân đội:

AT: Binh đoàn 12.

AD: Quân Đoàn 4 , Binh đoàn cửu long.

BB: bộ binh.

BC: Binh chủng Công Binh.

BH: Binh chủng hoá học.

BS: Binh đoàn Trường Sơn.

BT: Binh chủng thông tin liên lạc.

BP: Bộ tư lệnh biên phòng.

HB: Học viện lục quân.

HH: Học viện quân y.

KA: Quân khu 1.

KB: Quân khu 2.

Page 51: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 50 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

KC: Quân khu 3.

KD: Quân khu 4.

KV: Quân khu 5.

KP: Quân khu 7.

KK: Quân khu 9.

PP: Các quân y viện.

QH: Quân chủng hải quân.

QK, QP: Quân chủng phòng không không quân.

TC: Tổng cục chính trị.

TH: Tổng cục hậu cần.

TK: Tổng cục công nghiệp quốc phòng.

TT:Tổng cục kỹ thuật.

TM: Bộ tổng tham mưu.

VT: Viettel.

BL: bộ tư lệnh 969.

3. 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 đó có 3 số ở giữa là mã quốc

gia, 2 số tiếp theo là số tứ 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à hai số

cuối là 01 là biển xe của tổng lãnh sứ.

Page 52: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 51 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

4. Những xe mang biển 80 gồm có:

- Các ban của Trung ương Đảng.

- Văn phòng Chủ tịch nước.

- Văn phòng Quốc hội.

- Văn phòng Chính phủ.

- Bộ Công an.

- Xe phục vụ các đồng chí ủy viên Trung ương Đảng công tác tại Hà Nội và các

thành viên Chính phủ.

- Bộ ngoại giao.

- Viện kiểm soát nhân dân tối cao.

- Tòa án nhân dân tối cao

- Đài truyền hình Việt Nam.

- Đài tiếng nói Việt Nam.

- Thông tấn xã Việt Nam.

- Báo nhân dân.

- Thanh tra Nhà nước

- Học viện Chính trị quốc gia.

- Ban quản lý Lăng, Bảo tàng, khu di tích lịch sử Hồ Chí Minh.

- Trung tâm lưu trữ quốc gia

- Ủy ban Dân số kế hoạch hóa gia đình.

- Tổng công ty Dầu khí Việt Nam.

- Các đại sứ quán, tổ chức quốc tế và nhân viên người nước ngoài.

- Ủy ban Chứng khoán nhà nước.

- Cục hàng không dân dụng Viết Nam.

- Kiểm toán nhà nước.

5. Các biển A:

Xe của Công an – Cảnh sát tương ứng với các tỉnh.

Page 53: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 52 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Ví dụ; 35A xe của Công an – Cảnh sát tỉnh Ninh Bình.

6. Biển 5 số.

Theo quy định của Thông tư 36/2010/TT-BCA do Bộ Công An ban hành ngày 12

tháng 10 năm 2010, kể từ ngày 6 tháng 12 năm 2010 các biển số xe tại Việt Nam sẽ

tăng từ bốn lên năm chữ số (phần mở rộng) khi đăng ky mới ( biển cũ vẫn dùng bình

thường, và có thể chuyển sang biển mới nếu có nhu cầu). Biển số xe mới, kích thước

vẫn giữ nguyên nhưng dãy số mở rộng trên biển không liền nhau mà bị gắt quãng (

hình 3.2)

Hình 3.2 Biển số mới.

3.2 - Một số hướng giải quyết bài toán nhận dạng biển số xe.

Có rất nhiều phương pháp tiếp cận. Trong đó có những cách tiếp cận phổ biến sau.

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

Nhóm tác giả Nigel Whyte and Adrien Kiernan được đại diện cho cách tiếp cận

này.

Ý 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 như 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 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.

Page 54: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 53 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Ưu điểm: rất đơn giản, và xử lý nhanh đối với những ảnh chỉ chứa vùng biển số

xe.

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 có hiệu quả đối với hệ thống trạm

thu phí, trạm gác cổng, gửi xe tự động.

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

Nhóm tác giả Michael Lindenbaum, Rosen Alexander, Vichik Sergey, Sandler

Roma được đại diện cho cách tiếp cận này.

Ý 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à nhận dạng các ký tự ở trên mỗi

vùng con.

Ưu điểm: độ chính xác cao. Và 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 nhau 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.

Ngoài hai cách tiếp cận phổ biến trên còn có nhiều các tiếp cận khác để xác định

chính xác vùng nào chứa biển số xe.

Page 55: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 54 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

3.2.3 Phân ngưỡng và tím vùng đối tượng (hướng tiếp cận của đồ án).

Ý tưởng: nhận thấy các vùng biển số là các vùng đặc trưng có hình chữ nhật, có

tỉ lệ kích thước theo tiêu chuẩn. Vì vậy sau khi tách ngường và tìm vùng (OpenCV hỗ

trợ findContourns) ta tìm những vùng có tỷ lệ theo kích thước giống với tỉ lệ của biển

số xe. Để có thế lọc các vùng biển số một lần nữa thì ta tiếp tục tìm số vùng con trên

vùng biển số và so sánh với số lượng ký tự của biển số.

3.3 - Hướng giải quyết.

Ở phần 3.2 chúng ta đã tìm hiểu những hướng giải quyết cho việc xác định vùng

chứa biền số xe. Mỗi cách giải quyết có nhửng ưu điểm và hạn chế riêng của nó tuy

nhiên sẽ có hướng giải quyết nhất định dựa trên đặc trưng của biển số xe.

Một số đặc điểm biển số xe ở Việt Nam.

Hình 3.3 Một số loại biển số xe thông dụng

a. Tiêu chuẩn về kích thước:

Ở mỗi nước thường có tiêu chuẩn về kích thước nhất định. Đối với nước ta, biển số

xe qui định khá đồng đều cho mỗi loại xe, tỷ lệ chiều dài, rộng cho mỗi loại xe là như

nhau.

- Đối với loại xe có một hàng ký tự thì tỉ lệ dài/rộng là: 5.4/5.3 HW .

- Đối với loại xe có hai hàng ký tự thì tỉ lệ dài/rộng là: 4.1/8.0 HW .

Từ những đặc điểm này, ta có có thể xác định được các vùng con thỏa mãn thì khả

năng chứa biển số là rất cao.

Page 56: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 55 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

b. Số lượng ký tự trong biển số xe:

Mỗi ký tự thường có tỷ lệ kích thước chiều rộng, chiều cao tương ứng với chiều dài

và rộng của biển số xe. Ví dụ, chiều cao của mỗi 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 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. Mỗi ký tự của biển số xe được xem như

là một vùng liên thông con. Do đó, chúng ta có thể đếm vùng liên thông con thỏa mãn

tích chất đó là ký tự. Chú ý số ký tự trên biển số xe là từ 6 đến 10 ký tự. ở nước ta chỉ

có số ký tự trên mỗi biền số xe nằm trong khoảng 6 đến 9 ký tự. Vậy ta có thể dùng

ngưỡng [6.9] để nhận dạng vùng biển số xe.

Từ những nhận xét trên, chúng ta có thể đưa ra giải pháp cho bài toán nhận dạng:

1. Sử dụng phát hiện biên và biến đổi Hough. Sau đó sử dụng hai tính chất trên

biển số xe để xác định chính xác vùng con chứa biển số xe. Khi đã xác định chính xác

vùng con chứa biển số thì tiến hành nhận dạng các ký tự. Đây là cách tiếp cận của khá

nhiều các bài toán nhận dạng sử dụng dò biên kết hợp với Hough.

2. Sử dụng tách ngưỡng và phân vùng đối tượng. Sử dụng việc tách ngưỡng loại

bỏ những vùng không phải là biển số ( có cùng tỉ lệ kích thước nhưng có độ xám thấp

hơn dưới 100). Sau đó tiến hành tìm vùng đối đượng theo tỉ lệ của biển số ta sẽ thu

được số lượng phân vùng biển số ít hơn. Tiếp đó sử dụng tìm vùng đối tượng một lần

nữa với các phân vùng biển số lấy số lượng ký tự tách được so sánh với số lượng ký tự

hợp lệ để tạo tìm phân vùng biển số chính xác hơn. Và cũng tiến hành nhận dạng từng

ký tự được cắt ra.

Trong báo cáo của mình em sẽ trính bày theo giải pháp 2 gồm các bước sau:

Bước 1: Tìm vùng biển số

Với ảnh xám đầu vào thực hiện phân ngưỡng ( hoặc dò biên canny) và tìm đối

tượng.

Tách các đối tượng có tỉ lệ rộng/dài trong phạm vi biển số để làm nguồn cho bước

2.

Page 57: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 56 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Bước 2: Tách riêng từng ký tự trên biển số:

Tiến hành tìm đối tượng trên nguồn do bước 1 cung cấp sau đó so sánh số đối

tượng nhận được có trùng với số ký tự tên các biển số xe không. Nếu khớp với tiêu

chuẩn thì đó là những vùng biển số có khả năng là biển số xe cao nhất. Tách riêng từng

ký tự để nhận dạng quang học như OCR hoặc mạng noron tuy nhiên trong báo cáo lần

này em chỉ dừng lại ở việc tách riêng từng ký tự của biển số xe.

3.4 - Phát hiện vùng chứa biển số.

Sơ đồ các bước phát hiện vùng chứa biển số xe.

ảnh đầu vào

Biến đổi ảnh xám và

lọc ảnh

Tìm đường bao đối

tượng

Tách vùng biển số

Phân ngưỡng

Page 58: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 57 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

3.4.1 Giai đoạn 1: Biến đối ảnh xám và lọc ảnh

Ảnh đầu vào là một ảnh bất kỳ, được chuyển về ảnh có 256 mức xám và tiến hành

lọc ảnh giảm nhiễu.

Để tiến hành lọc giảm nhiễu em sử dụng bộ lọc song phương để giảm khả năng bị

mờ biên.

(a) (b)

Hình 3.4 (a) ảnh đầu vào (b) ảnh xử lý xám và lọc song phương.

3.4.2 Giai đoạn 2: Tiến hành phân ngưỡng hoặc phát hiện biên.

Có hai quá trình phân ngưỡng đó là phân ngượng tự động và phân ngưỡng

không tự động.

Với phân vùng biển số là khá nhỏ so với toàn bộ ảnh nên quá trình phân ngưỡng

tự động bằng việc lấy Histogram sẽ dễ gây lỗi và không làm sáng tỏ vùng biển số.

Qua thực nghiệm ta thấy phân vùng biển số thường có ngưỡng từ 100 – 220 vì

vậy trong phần này của mình em tiến hành thử tìm vùng biển số với từng ngưỡng bằng

vòng lặp. Vòng lặp sẽ xuất phát từ ngưỡng 100 đến 220 vì thông thường phát hiện

vùng biển số các biển rõ thì ngưỡng 100 – 120 là có thể dừng vòng lặp lại sẽ tiết kiệm

các bước tính toán.

Page 59: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 58 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Kết thúc giai đoạn này ta thu được ảnh 8-bit kênh đơn để làm nguồn cho giai

đoạn 3. (hình 3.5)

3.4.3 Giai đoạn 3: Tìm đường bao đối đượng.

Khi ta tiến hành phần ngưỡng sẽ làm hiện rõ vùng biển số, trong giai đoạn này

ta có thể sử dụng các phương pháp phát hiện biên.

Khi có ảnh 8-bit kênh đơn thu được ở giai đoạn 2 chúng ta tiến hành tìm các

vùng biển là đối tượng riêng bằng hàm findContourns (torng thư viện OpenCV) để

trích các vùng và lấy thông số của các vùng như tọa độ điểm của các cạnh, diện tích

của vùng. (hình 3.6)

Hình 3.5 ảnh sau khi tiến hành phân ngượng

Page 60: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 59 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.6 Tìm đường bao các đối tượng

3.4.4 Giai đoạn 4: Tách vùng biển số.

Sau khi có được những thông số của giai đoạn 3 tìm thấy. Dựa vào các đặc điểm

của biển số mà em tiến hành như sau:

Tìm đường bao đối tượng với với tiêu chí tỉ lệ 5.45.3 HW hoặc

4.18.0 HW để tìm ra những vùng có thể là biển số nhất.

Để hạn chế số lượng vùng tím thấy em tiếp tục lọc ảnh theo tiêu chí diện tích để

hạn chế những vùng quá nhỏ và quá lớn so với vùng biển số. Với ảnh đầu vào được

thay đổi kích cỡ về ảnh có cỡ 640X480 thì vùng biển số sẽ nằm trong khoảng diện tích

từ 1500 – 25000.

Tiến hành cắt các vùng có thể là biển số nhất trên ảnh xám đã lọc ở giai đoạn 1

để làm nguồn cho giai đoạn cắt ký tự để làm mẫu cho các quá trình nhận dạng ký tự (tự

xây dựng). Ở giai đoạn này có thể kết hợp dùng các bài toán nhận dạng ký tự để phát

hiện biển số xe.(hình 3.7)

Page 61: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 60 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.7 Sau khi lọc bằng dặc điểm biển số và cắt riêng vùng biển số

3.5 - Tách riêng từng ký tự

Trong phần này mục đích chính là tách các ký tự để làm mẫu huấn luyện cho

việc nhận dạng ký tự trên biển số. (hình 3.8)

Các giai đoạn trong việc phân tách các ký tự như sau:

Page 62: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 61 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Ảnh đầu vào là ảnh chỉ chứa biển số xe được trích ra từ ảnh xám đã qua lọc ở

giai đoạn 4 của phần “3.4 Phát hiện vùng biển số”.

Hình 3.8 Các ký tự được cắt sau khi tìm thấy vùng biển số

3.5.2 Giai đoạn 1: Tiến hành phân ngưỡng.

Giai đoạn này tương tự giai đoạn 2 của phần 3.4

3.5.3 Giai đoạn 2: Tìm vùng đối tượng.

Tương tự phần 3.4.3

3.5.4 Giai đoạn 3: Tìm và tách vùng ký tự.

Tương tự phần 3.4.4 nhưng với tiêu chí khác như.

Số ký tự nằm trong khoản 6 đến 9 ký tự.

Vùng ký tự có diện tích từ 50 đến 200.

Tiến hành cắt ký tự và lưu lại.

3.6 - Nhận dạng ký tự quang học ( mạng nơron)

Mạng nơron nhân tạo ( Artificial Neural Network) bao gồm các nút ( đơn vị xử

lý) được nối với nhân bởi các liên kết noron. Mỗi liên kết kèm theo có một trọng số

nào đó, đặc trưng cho đặc tính kích hoạt giữa các nơron. Có thể xem trọng số là

phương tiện để lưu giữa thông tin dài hạn trong mạng và nhiệm vụ của quá trình huấn

luyện (học) mạng là cập nhật các trọng số khi có thêm các thông tin về các mẫu học,

hay nói cách khác, các trọng số được điều chỉnh sao cho đúng.

Trong mạng, một số nơron được nối với môi trường bên ngoài như các đầu ra,

đầu vào.

Page 63: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 62 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

3.6.1 Mô hình nơron nhân tạo

Hình 3.9 Mô hình nơron nhân tạo.

Mỗi nơron được nối với các nơron khác và nhận được các tín hiệu sj từ chúng

với các trọng số wj. Tổng các thông tin vòa có trọng số là:

Người ta gọi đây là thành phần tuyến tính của nơron. Hàm kích hoạt g (còn gọi

là hàm chuyển). Đóng vai trò biến đổi từ Net sang tín hiệu đầu ra out.

Đây là thành phần phi tuyến của nơron. Có 3 dạng hàm kích hoạt thường được

dùng trong thực tế.

*)Hàm dạng bước:

00

01

x

xxstep

x

xxstep

0

1

*)Hàm dấu:

01

01

x

xxstep

x

xxstep

1

1

*)Hàm sigmoid:

Net= jj sw

Out= g(Net)

Page 64: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 63 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

xexSigmoid

1

1)(

Ở đây ngưỡng đóng vai trò làm tăng tính thích nghi và khả năng tính toán của

mạng nơron. Sử dụng ký pháp véctơ, nssS ,....,1 véctơ tín hiệu vào, nwwW ,....,1

vecto trọng số, ta có

Netgout SWNet

Trường hợp xét ngưỡng , ta dùng biểu diễn vecto mới ,,....,1 nssS ,

1,,....,1

' nwwW .

3.6.2 Mạng nơron

Mạng nơron là hệ thống bao gồm nhiều phần tử xử lý đơn giản (nơron) hoạt

động song song. Tính năng của hệ thống này tùy thuộc vào cấu trúc của hệ, các trọng

số liên kết nơron và quá trình tính toán tại các nơron đơn lẻ. Mạng nơron có thể học từ

dữ liệu mẫu và tổng quát hóa dựa trên các dựa trên các dữ liệu mẫu học. Trong mạng

nơron, các nơron đón nhận tín hiệu vào gọi là nơron vào và các nơron đưa thông tin ra

gọi là nơron ra.

a. Phân loại các mạng nơron

Theo kiểu liên kết nơron: ta có mạng nơron truyền thẳng (feel-forward Neural

Network) và mạng nơron qui hồi (recurrent Neural Network). Trong mạng nơron

truyền thẳng, các liên kết nơron đi theo một hướng nhất định, không tạo thành đồ thị

không có chu trình với các đỉnh là các nơron, các cung là các liên kết giữa chúng.

Ngược lại, các mạng qui hồi cho phép các liên kết nơron tạo thành chu trình. Vì các

thông tin ra của các nơron được truyền lại cho các nơron đã góp phần kích hoạt chúng,

nên mạng hồi quy còn có khả năng lưu giữ trạng thái trong của nó dưới dạng các

ngưỡng kích hoạt ngoài các trọng số liên kết nơron.

Theo số lớp: các nơron có thể tổ chức lại thành các lớp sao cho mỗi nơron của

lớp này của được nối với các nơron ở lớp tiếp theo, không cho phép các liên kết giữa

các nơron trong cùng một lớp, hoặc từ nơron lớp dưới lên nơron lớp trên. Ở đây cũng

không cho phép các liên kết nhảy qua một lớp.

Page 65: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 64 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.10 Mạng nơron truyền thẳng và nhiều lớp.

Hình 3.11 Mạng nơron hồi quy.

b. Chức năng của mạng noron.

Mạng noron như một công cụ tính toán:

Giả sử mạng noron Neural network có m nơron vào và có n nơron ra, khi đó với

mỗi vecto các tính hiệu vào X=(x1,…,xn), sau quá trình tính toán tại các nơron ẩn, ta

nhận được kết quả ra Y=(y1,…,yn). Theo nghĩa nào đó mạng nơron làm việc với tư

cách một bảng tra, mà không cần biết dạng phụ thuộc hàm tường minh giữa Y và X.

khi đó ta viết:

NNXtinhY ,

Cần lưu các nơron trên cùng một lớp có thể tính toán đồng thời, do vậy độ phức

tạp tính toán nói chung sẽ phụ thuộc vào số lớp mạng.

Các thông số cấu trúc mạng nơron bao gồm:

- Số tính hiệu vào, số tín hiệu ra

- Số lớp nơron

- Số nơron trên mỗi lớp ẩn

Page 66: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 65 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

- Số lượng liên kết của mỗi nơron (liên kết đầy đủ, liên kết bộ phận và liên kết

ngẫu nhiên)

- Các trọng số liên kết nơron.

Mạng nơron như một hệ thống thích nghi có khả năng học:

Để chỉnh các trọng số liên kết cũng như cấu trúc của mình sao cho phù hợp với

các mẫu học. Người ta phân biết ba loại kỹ thuật học:

- Học có giám sát (supervised learning)

- Học không giám sát ( unsupervised learning)

- Học tăng cường.

Trong học giám sát, mạng được cung cấp một tập mẫu học (Xs,Ys) theo nghĩa

Xs là các tín hiệu vào, thì kết quả ra đúng của hệ phải là Ys. Ở mỗi lần học, vector tín

hiệu vào Xs được đưa vào mạng, sau đó so sánh sự sai khác giữa các kết quả ra đúng Ys

với kết quả tính toán outs. Sai số này sẽ được dùng để hiệu chỉnh lại các trọng số liên

kết trong mạng. Quá trình cứ tiếp tục cho đến khi thỏa mãn một tiêu chuẩn nào đó. Có

hai cách sử dụng tập mẫu học: hoặc dùng các mẫu lần lượt, hết mẫu này đến mẫu khác,

hoặc sử dụng đồng thời tất cả các mẫu một lúc. Các mạng với cơ chế học không giám

sát được gọi là các mạng tự tổ chức. Các kỹ thuật học trong mạng nơron có thể nhằm

vào hiệu chỉnh các trọng số liên kết (gọi là học tham số) hoặc điều chỉnh, sửa đổi cấu

trúc của mạng bao gồm số lớp, số nơron, kiểu và trọng số các liên kết (gọi là học cấu

trúc).

Học tham số:

Giả sử có k nơron trong mạng và mỗi nơron có đúng một liên kết vào với các

nơron khác. Khi đó, ma trận trọng số liên kết W sẽ có kích thước kx1. Các thủ tục học

tham số nhằm mục đích tìm kiếm ma trận W sao cho

WXTinhY ss , đối với mọi mẫu học ss YXS , (1)

Page 67: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 66 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.12 Học tham số có giám sát.

Học cấu trúc:

Với học tham số ta giả định rằng mạng có một cấu trúc cố định. việc học

cấu trúc của mạng truyền thẳng gắn với yêu cầu tìm ra số lớp của mạng L và số nơron

trên mỗi lớp nj. Tuy nhiên, với các mạng hồi quy còn phải xác định thêm các tham số

ngưỡng của các nơron trong mạng. Một cách tổng quát phải xác định bộ tham số

kknnLP ,....,,,....,, 11 ở đây jnk sao cho PXTinhY ss , đối với mọi mẫu học

ss YXs , (2).

Về thực chất, việc điều chỉnh các vector tham số W trong (1) hay P trong (2)

đều qui về bài toán tìm kiếm tối ưu trong không gian tham số. Do vậy, có thể áp dụng

các cơ chế tìm kiếm kinh điểm theo gradient.

3.6.3 Mạng Kohonen

Cách xử lý thông tin trong các mạng ở trên thường chỉ quan tâm tới giá trị và

dấu của các thông tin đâu vào, mà chưa quan tâm khai thác các mối liên hệ có tính chất

cấu trúc trong lân cận của vùng dữ liệu mẫu hay toàn thể không gian mẫu.

Chẳng hạn, với 2 thành phần ; 1 tam giác , 1 hình chữ nhật,

Page 68: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 67 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

ta có thể tạo thành hình ngôi nhà khi chúng được phân bố kề giáp với nhau theo một

trật tự nhất định.

Teuvo Kohonen (1989) đã đề xuất một ý tưởng rất đáng chú ý về ánh xạ có đặc

trưng topo tự tổ chức ( theo nghĩa không cần có mẫu học) nhằm bào toàn trật tự sắp

xếp các mẫu trong không gian biểu diễn nhiều chiều sang một không gian mới các

mảng nơron ( một hoặc hai chiều). Trong mạng Kohonen, các vector tín hiệu vào gần

nhau sẽ được ánh xạ sang các nơron trong mạng lân cận nhau.

a. Cấu trúc mạng

Mạng Kohonen rất gần gũi với kiểu cấu trúc mạng nơron sinh học và cấu tạo lẫn

cơ chế học. Mạng Kohonen thuộc vào nhóm mạng một lớp các nơron được phân bố

trong mặt phằng hai chiều theo kiểu lưới vuông hay lưới lục giác dưới.

Phân bố này phải thỏa mãn yêu cầu; Mỗi nơron có cùng số nơron trong từng lớp

láng giềng. Ý tưởng của Kohonen là các đầu vào tương tự nhau sẽ kích hoạt các nơron

gần nhau về khoảng không gian. Mối quan hệ tương tự ( theo khoảng cách) có thể tồng

quát hóa cho một lớp tương đối rộng các quan hệ tương tự giữa các tín hiệu đầu vào.

Hình 3.13 Lưới các nơron

Một cách trực quan, có thể xem thuật giải huấn luyện mạng Kohonen nhằm biến

đổi không gian tín hiệu vào sang mạng nơron giống như các thủ tục kiểu như “ làm

trơn” hay “tạo hình” dữ liệu.

Để đáp ứng yêu cầu các nơron có cùng số nơron lân cận trong mỗi lớp láng

giềng, người ta thường dùng các phép cuận chỉ số để đặt được hiệu ứng cái xăm xe.

Chằng hạn tọa độ (xi, yi ) của các nơron thuộc lớp láng riềng thứ k của nơron cóa tọa

độ (x,y) trong mảng nơron 2 chiều có kích thước pxq cho trong thủ tục sau:

Page 69: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 68 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

for i:=-k to k do

for j:=-k to k do

begin xi:=mod(x+i+p-1,p) + 1;

yi:=mod(y+j+q-1,q) + 1;

if (i=k) or (j=k) then

nơ ron (xi, yi) thuộc vào lớp láng giềng thứ k

else

nơ ron (xi, yi) thuộc vào lớp láng giềng thứ r

r<k; r được xác định bởi max(xi,yi)

end;

Trường hợp lớp noron Kohhonen là một dãy, cách cuộn tròn mạng nơron tạo

thành một đường tròn.

Tất cả các nơron của lớp kích hoạt có liên kết đầy đủ với lớp vào. Điểm quan

trọng nhất trong mạng Kohonen là với một vector tín hiệu vào, nó chỉ cho phép các

phản hồi mang tính chât địa phương nghĩa là đầu ra của mỗi nơron không được nối với

tất cả các nơron khác mà chỉ với một số nơron lân cận. Sự phản hồi mang tính địa

phương của những điều chỉnh (nếu có) tạo ra hiệu ứng là các nơron gần nhau về vị trí

sẽ có hành vi tương tự khi có những tín hiệu giống nhau được đưa vào.

b. Huấn luyện mạng

Quá trình học được sử dụng trong mạng Kohonen dựa trên kỹ thuật cạnh tranh,

không cần có tập mẫu học. Khác với trường hợp học có giám sát, các tin hiệu đầu ra

có thể không biết được một cách chính xác.

Page 70: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 69 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Tại mỗi thời điểm chỉ có một nơron duy nhất C trong lớp kích hoạt được lựa

chọn sau khi đã đưa vào mạng các tín hiêu Xs. Nơron này được chọn theo một trong

hai nguyên tắc sau:

- Nguyên tắc 1: Nơron C có tín hiệu ra cực đại.

outc max(outj) = max ((xsi wji) (9) j=1 i=1

- Nguyên tắc 2: Vector trong số của nơron C với tín hiệu vào nhất

errc min(errj) = min ((xsi - wji)2 (10)

j =1 i=1

Sau khi xác định được nơron C, các trọng số wci được hiệu chỉnh nhằm làm cho

đầu ra của lớn hơn hoặc gần hơn giá trị trọng số mong muôn. Do vậy, nếu tín hiệu vào

xsi với trọng số sci tạo kết quả ra quá lớp thì phải giảm trọng số và ngược lại. Các

trọng số của các nơron láng giềng j cũng phải được hiệu chỉnh giảm, tùy thuộc vào

khoảng cách tính từ C. Ta đưa vào hàm tỷ lệ a(.) = a(dcj), ở đây dcj là khoảng cách

topo giữa nơron trung tâm C và nơron j đang xét. Trên thực tế hàm a(.) có thể là hằng

số, hàm tỷ lệ nghịch hoặc hàm có điểm uốn. Để đảm bảo yêu câu, do có nhiều mẫu

tham gia quá trình huấn luyện ta đưa vào hệ số η(t).

ở đây :

t là số đối tượng mẫu đã dùng để luyện mạng .

tmax là số mẫu tối da

amaz, amin tương ứng là giá trị cực đại, cực tiểu của hàm a(.)

Tùy thuộc vào nơron trung tâm C được lựa chọn theo nguyên tắc 1 hoặc nguyên

tắc 2 ta có cách hiệu chỉnh các trọng số wij tương ứng:

wji = wji + (t) a(dcj )(1 - xi wji ) (1)

hoặc wji = wji + (t) a(dcj) (xi - wji ) (2)

Sau đó, chuẩn hoá các trọng số sao cho: 11

2

n

i

wji

Page 71: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 70 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Theo kinh nghiệm, cần phải tạo ra phân bố ngẫu nhiên các trọng số trong

khoảng -0.1 đến 0.1 hoặc -1/m đến 1/m, ở đây m là số trọng số của mạng và chuẩn hoá

dữ liệu vào, ra bằng -1 hoặc 1.

Tuy nhiên cũng phải chú ý một điều là việc lựa chọn tiêu chuẩn chuẩn hoá, định

cỡ dữ liệu phụ thuộc rất nhiều vào bản chất bài toán.

c. Sử dụng mạng

Giả sử đã huấn luyện mạng để nhận được ma trận trọng số W. Khi đưa vào

mạng một vector X, toàn bộ mà trận W lại được cập nhật theo các công thức (1) hoặc

(2) tùy thuộc vào sử dụng nguyên tắc 1 hay nguyên tắc 2.

Như vậy, mạng Kohonen cho chúng ta biết được sự phân bố và quan hệ tương

đối về mặt “ địa lý “ giữa các mẫu trong không gian biểu diễn.

d. Thử nghiệm mạng

Ánh xạ từ không gian 3 chiều sang không gian 2 chiều.

Bài toán đặt ra là tạo ánh xạ từ một mặt cầu đơn vị 3 chiều với 2000 điểm phân

bố ngẫu nhiên trong 8 múi cầu sang mặt phẳng các nơ ron được phân bố thành lưới

kích thước 15 x 15.

Mạng Kohonen được thiết kế có 3 đầu vào, tương ứng với 3 tọa độ và 255

nơron, phân bố thành lưới vuông 15 x 15. Mỗi nơron vào được nối đầy đủ với các

nơron ra, do vậy tổng cộng có 675 trọng số. Ban đầu nơron trung tam có 7 lớp láng

giềng để đảm bảo rằng tất cả các vùng láng giêng kế giáp nhau. Giả sử, hiệu chỉnh cực

đại tại nơron trung tâm a(0) = 0.3 và tại lớp thứ 7 giá trị này chỉ là 0,5% giá trị tại

nơron trung tâm, do vậy bằng 0,3 x 0,005 = 0,0015. Giá trị có thể xem là rất nhỏ, do đó

n(t) = hằng số. Trong quá trình luyện mạng, cứ 400 điểm mẫu được đưa vào để luyện

mạng sẽ có một lớp láng giềng ở vòng ngoài bị co lại. Các nơron láng giềng càng xa sẽ

càng ít bị hiệu chỉnh hơn. Trong thí nghiệm này ta sử dụng nguyên tắc 2 và công thức

(2), các giá trị trọng số ban đầu được lấy ngẫu nhiên trong khoảng [-0,1 – 0,1]. Kết quả

huấn luyện mạng với 2000 mẫu được cho trong hình 3.13

Page 72: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 71 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Dễ dàng thấy rằng tất cả các quan hệ topo giữa các vùng trên mặt cầu được bảo

toàn sau khi ánh sạ (hình 3.13)

Hình 3.14 Ánh xạ mặt cầu vào lưới nơron 15x15

Điểm thú vị là trên mạng có những vùng trống, nhầm tách rời điểm hội tụ của

các vùng 1,2,3,4 ở cực bắc khỏi các vùng 5,6,7,8 ở bán cầu nam.

Một số lưu ý về mạng Kohonen

- Mạng không chỉ quan tâm đến nội dung tín hiện vào mà còn xem xét cấu trúc

topo của mẫu.

- Mạng có thể biến đổi từ không gian nhiều chiều sang không gian ít chiều hơn.

- Cơ chế học không có giám sát

- Các quan hệ topo được bảo toàn khi ánh xạ.

3.6.4 Mạng nơron nhiều lớp lân truyền ngược sai số

a. Kiến trúc mạng.

Các nơron lớp thứ t được nối đầy đủ với các lớp thứ t+1. Trong nhiếu ứng dụng

thực thế, để đơn giản, người ta thường sử dụng mạng có mốt lớp ẩn, số nơron trong lớp

ẩn được xác định dựa trên kinh nghiệm, hoặc dựa trên các kỹ thuật tìm kiếm khác.

Page 73: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 72 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 3.15 Mạng nơron 2 lớp.

b. Huấn luyện mạng.

Quá trình huấn luyện mạng được trình bày ở đây là quá trình học có giám sát

với tập mẫu ( Xs, Ys). Quá trình học có thể tóm tắt như dưới:

Mỗi khi mẫu Xs=(x1,…..,xn) vào mạng, ta thực hiện các công việc sau:

- Lan truyền mẫu Xs qua mạng để có outs = Tinh(Xs, NN).

- Tính sai số Errs của mạng dựa trên sai lệch outs-Ys.

- Hiệu chỉnh các trọng số liên kết nơron dẫn tới lớp ra Wij từ nơron j tại lớp ẩn

cuối cùng tới nơron i tại lớp ra: wij = wij +α * aj * 𝛅i (1)

Với :

α là hệ số học

aj là đầu ra của nơron j.

𝛅i là sai số mà nơron I ở lớp ra phải chịu trách nhiệm, được xác định theo công

thức: 𝛅i = Erri g’ (Neti) (2)

Với Erri là sai số thành phần thứ I trong Err, Neti là tổng thông tin vào có trọng số

của nơron thứ i (Neti = Σ wij.aj) và g’(.) là đạo hàm của hàm kích hoạt g được dùng

trong các nơron.

Hiệu chỉnh các trọng số liên kết nơron Wik dẫn tới tất cả lớp ẩn từ nơron thứ k sang

nơron j ( các lớp ẩn được xét từ dưới lên):

Tính tổng sai số tại nơron j phải chịu trách nhiệm.

𝛅j=g’(Netj Σw𝛅i) (3)

Hiệu chỉnh trọng số wjk = wjk + α*ak*𝛅j (4)

( trường hợp xét liên kết từ nơron vào thứ k sang nơron j trên lớp ẩn thứ nhất, ta có

ak = ik ) chính là tín hiệu vào).

Page 74: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 73 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Chú ý:

- Trường hợp xét hàm kích hoạt tại các nơron

ex

xg

1

1)(

Ta có hệ thức g’(x)= g(x)(1-g(x))

- Từ công thức (1) và (4) ta có thể viết lại

Wij= wij + wij với wij= α*aj𝛅i và

Wjk = wjk+ wjk với wjk = α*ak𝛅j

Trong thực tế, thường hiệu chỉnh wij theo nguyên tắc có chú ý đến thao tác

trước đó. Do vậy: cu

ijij

moi

ij waw , ở đây là hệ số quán tính.

Quá trình huấn luyện mạng cần chú ý tới các yếu tố sau:

- Các trọng số ban đầu wij được gán các giá trị ngẫu nhiên, nhỏ.

- Lựa chọn các hệ số học α và hệ số quán tính sao cho α +β ≈ 1, với không

lớn hơn α quá nhiều.

Các tín hiệu vào, ra nên được định cỡ chỉ nằm trong khoảng [0,1]. Các nghiên cứu

thực nghiệm chỉ ra rằng nên ở trong khoảng [0.2,0.8].

c. Sử dụng mạng

Giải sử đã huấn luyện mạng như hình ở trên với tập mẫu (Xs,Ys) để được ma trận

trọng số W. Quá trính lan truyền trong mạng một vecto tín hiệu vào X=(x1,x2,x3) được

cho bởi:

3532521516534324214164565464 xwxwxwgwxwxwxwgwgawawgout =F(X,W)

Khả năng tính toán của mạng nhiều lớp.

- Với một lớp ẩn, mạng có thể tính toán xấp xỉ một hàm liên tục bất kỳ đối với

các biến tương ứng là các tín hiệu vào.

- Với 2 lớp ẩn, mạng có thể tính toán xấp xỉ một hàm bất kỳ. Tuy vậy, số nơron

trong các lớp ẩn có thể tăng theo hàm mũ đối với số đầu vào và cho đến nay vẫn chưa

có các hàm có thể xấp xỉ nhờ các mạng nhiều lớp.

Page 75: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 74 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

CHƯƠNG 4. Kết quả và hướng phát triển của bải toán nhận

dạng biển số xe.

4.1 - Kết quả hướng giải quyết “phân ngưỡng và tìm đối tượng”.

Với mục đích tìm hiểu bài toán nhận dạng biển số xe và do thời gian có hạn nên em

chưa thể hoàn thành được phần mềm của mình. Em chỉ dừng lại ở việc xây dựng

hướng giải quyết và xây dựng chương trình kiểm tra bước phát hiện vùng biển số xe và

tách ký tự trong biển số xe.

Trong giai đoạn lọc ảnh em đã sử dụng các bộ lọc để làm giảm nhiễu của ảnh.

Trong kết quả thí nghiệm em sử dụng bộ lọc song phương để lọc nhiễu vì lọc song

phương là lọc bảo toàn đường biên như trong mục (2.2.4 trang 23).

Nhận thấy, vùng biển ảnh dễ nhận biết là vùng có mức xám cao. Vì vậy trong

chương trình kiểm nghiệm của mình em tiến hành quét ảnh xám với khoảng xám [100,

220], đây là khoảng xám sẽ được sử dụng để xử lý nhị phân ảnh ( mục 2.1 trang 17)

nên em sẽ sử dụng gọi là khoảng ngưỡng [100,220].

Do trong giai đoạn 3 ( 3.4.3 trang 59) đã nói chúng ta sử dụng hàm findcontourns

(mục 2.5.3 trang 44) do thư viện cung cấp sẵn của OpenCV chỉ sử dụng ảnh đầu vào là

ảnh Canny hoặc ảnh nhị phân vì vậy ta bị giới hạn việc sử dụng các phương pháp phát

hiện biên hoặc vùng là phương pháp dò biên Canny ( mục 2.3.5 trang 34) và phương

pháp nhị phân ( mục 2.1 trang 17).

Kết quả thí nghiệm:

Mẫu 1: gồm 72 ảnh tổng hợp gồm những xe biển nền xanh, biển nền đỏ, biển nền

trắng, biển bị mờ, biển xe đang chạy. Trong đó gồm:

- Biển nền trắng chữ đen 57 biển.

- Biển nền xanh chữ trắng 10 biển.

- Biển nền đỏ có 5 biển.

Page 76: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 75 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Mẫu 2: gồm 72 ảnh chỉ chứa biển số xe. Do nền biển số xe và chữ có độ tương

phản cao nên chúng ta không cần phân biệt màu biển số.

4.1.1 Kết quả dùng với phương pháp tìm biên Canny kết hợp với tìm vùng

đối tượng.

a. Tìm vùng biển số.

Kết quả: Bảng 1.

Bảng 1. Chi tiết tìm vùng biển số sử dụng dò biên Canny và tìm vùng đối tượng.

Loại biển Số biển mẫu Số biển bị lỗi Tỉ lệ tìm được

Biển số nền trắng

chữ đen

57 13 77.2%

Biển số nền xanh

chữ trắng

10 3 70%

Biển số nền đỏ chữ

trắng

5 4 20%

Tổng: 72 20 72,22%

Nhận xét:

Kết quả nhận dạng với tỉ lệ thấp.

b. Tìm vùng ký tự.

Kết quả: trong 72 mẫu biển số thì có 22 biển không thể phân tách ký tự được. đạt tỷ

lệ khá thấp 69,44%.

4.1.2 Kết quả dùng với phương pháp phân ngưỡng kết hợp tìm vùng đối

tượng

a. Tìm vùng biển số.

Kết quả:

Page 77: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 76 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Bảng 2: Chi tiết tìm vùng biển số sử dụng hướng phân ngưỡng và tìm vùng đối tượng.

Loại biển Số biển mẫu Số biển bị lỗi Tỉ lệ tìm được

Biển số nền trắng

chữ đen

57 1 98,3%

Biển số nền xanh

chữ trắng

10 1 90%

Biển số nền đỏ chữ

trắng

5 4 20%

Tổng: 72 6 91,6%

Nhận xét:

Kết quả nhận dạng trong vùng ngưỡng này khá tốt chưa nhận dạng tốt ở biển đỏ

Tuy nhiên ngưỡng là khá rộng làm chậm quá trình tính toán. Nên cần tìm các

ngưỡng phù hợp hơn. Trong mục (2 .3)

b. Tách ly ký tự.

Trong 72 biển có 11 biển không cách ly được toàn bộ ký tự. Tỉ lệ thành công đạt

84.7%.

4.1.3 Kêt luận.

Từ kết quả trong mục 4.1.1 và mục 4.1.2 ta thấy tỷ lệ thành công theo hướng

tiếp cận “ phân ngưỡng và tìm vùng đối tượng” cao hơn hướng tiếp cận “dò biên và

tìm vùng đối tượng”.

Sau đó em tiến hành tìm ngưỡng quét hợp lý hơn.

Page 78: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 77 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 4.1 Biển không nhận dạng được

b. Tìm vùng biển số với khoảng ngưỡng rộng 10 ngưỡng. (tăng dần)

Trong phần này chúng ta sẽ tìm xem bao nhiêu biển được phát hiện ở những vùng

ngưỡng khác nhau. Và chỉ xét những vùng mới được phát hiện. bảng 3

Nhằm phát hiện nhưng vùng ngưỡng nào không phát hiện ngưỡng biển mới để

loại bỏ.

Page 79: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 78 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Bảng 3: Tìm vùng biển số trong các khoảng ngưỡng khác nhau tăng dần.(biển được

tìm thấy ở khoảng ngưỡng trước sẽ không phải là đối tượng xét ở các khoảng ngưỡng

sau).

Khoảng ngưỡng Biển nền trắng chữ

đen (biển)

Biển nền xanh chữ

trắng (biển)

Biển nền đỏ chữ

trắng (biển)

100-110 30 7 1

110-120 4 0 0

120-130 4 0 0

130-140 0 0 0

140-150 6 0 0

150-160 0 0 0

160-170 2 1 0

170-180 3 1 0

180-190 2 0 0

190-200 4 0 0

200-210 1 0 0

210-220 0 0 0

Nhận xét:

Như vậy với các khoảng không phát hiện biển mới ta sẽ loại bỏ để tiếp tục tìm

những vùng quét hợp lý nhất.

c. Tìm vùng biển số trong các vùng ngưỡng rộng 10 giảm dần đã loại

bỏ phần theo nhận xét ở mục a.

Ở mục này với mục đích ta tìm vùng ngưỡng mà vùng phát hiện biển ở đó không

cần thiết vì vùng biển số đó có thể tìm thấy ở vùng ngưỡng khác. Bảng 4

Page 80: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 79 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Bảng 4: Tìm vùng biển số trong các ngưởng khác nhau giảm dần. (biển được tìm thấy

ở khoảng ngưỡng trước sẽ không phải là đối tượng xét ở các khoảng ngưỡng sau).

Khoảng ngưỡng Biển nền trắng chữ

đen (biển)

Biển nền xanh chữ

trắng (biển)

Biển nền đỏ chữ

trắng (biển)

210-200 28 0 0

200-190 6 0 0

190-180 4 1 1

180-170 2 1 0

170-160 2 0 0

150-140 4 3 0

130-120 6 0 0

120-110 2 4 0

110-100 2 0 0

Nhận xét:

Không có phần loại bỏ.

Nhận xét:

Từ mục (2) và (3) ta thấy các khoảng ngưỡng cần quét là:

100-130 và 140-150 và 160-210

thì tỉ lệ tìm vùng biển thành công sẽ không giảm và cũng có thể thấy chưa tìm được

vùng ngưỡng hợp lý để nhận dạng biển nền đỏ

Nguyên nhân gây lỗi:

Từ những ảnh không thể tìm thấy vùng biển số như hình 4.1 ta có thể đưa ra những

nguyên nhân sau:

Page 81: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 80 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

- Vùng biển số có độ tương phản thấp với nền ảnh. Trong hình 4.2 chúng

ta thấy vùng biển số sau khi được phân ngưỡng (hình bên trái) chưa làm nổi bật vùng

biển số khiến quá trình tìm vùng biển số ( hình bên phải ) không thể nhận thấy vùng

biển số.

Hình 4.2 Vùng biển số trong quá trình phân ngưỡng.

- Vùng biển số có ngưỡng thấp hơn 100 ( mức đặt ra của chương trình).

Khi vùng biển có mức ngưỡng ( mức xám ) thấp hơn ngưỡng của chương trình đặt ra

thì sẽ bị quá trình phân ngưỡng loại bỏ như hình 4.3 làm quá trình tìm vùng biển số

không thể phát hiện ra.

Hình 4.3 Mức xám thấp làm vùng biển số bị mất trong quá trình phân ngưỡng

Page 82: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 81 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

d. Tìm ngưỡng cho giai đoạn cách ly ký tự.

Bảng 5. Chi tiết các khoảng ngưỡng phát hiện những biển số.( các biển tách ly thành

công ở khoảng ngưỡng trước không được tính cho khoảng ngưỡng sau).

Ngưỡng Cach ly biển thành

công. Ngưỡng

Cách ly biển thành

công.

100-110 32 160-170 3

110-120 5 170-180 0

120-130 7 180-190 0

130-140 7 190-200 0

140-150 3 200-210 1

150-160 3

Nhận xét:

Khoảng ngưỡng cần quét là:

100-170 và 200-210.

Lý do lỗi.

- Bị che mất một phần nhỏ. Hình 4.4 (a) làm mất đi một phần ký tự hoặc

ký tự dích liền với đường viền của biển làm quá trình tìm đối tượng nhầm chữ số và

viền của biển là một đối tượng.

- Ký tự không rõ Hình 4.4 (b) bóng sáng và ký tự bị mờ từng phần cũng

làm cho quá trình tìm đối tượng sẽ phát hiện ra nhiều đối tượng mà không phát hiện ra

vùng các chữ số.

- Chữ bị bóng do kính lắp hoặc bị đèn chiếu lòa Hình 4.4 (c)

- Ảnh có nhiều nhiễu không rõ hình 4.4 (d). nhiều nhiễu sẽ làm các ký tự

gần nhau sẽ được tính gần như là một đối tượng.

Page 83: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 82 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Hình 4.4 Những biển số không nhận đủ ký tự

4.2 - Hướng phát triển của bài toán nhận dạng biền số xe.

4.2.1 Nhận xét.

Từ những kết quả thu được (phần 4.1) em thấy giải quyết bài toán nhận dạng

biển số xe theo hướng “ phân ngưỡng tìm đối tượng” có những ưu điểm sau:

Ưu điểm: Thuật toán cài đặt nhanh, tìm vùng biển số và cách ly ký tự với tỉ lệ

thành công cao ( ở những biển số thông thường), tìm được ở những ảnh tự nhiên, vùng

biển số bị nghiêng.

Nhược điểm: Nhận dạng kém với những biển số có sự tương phản với ảnh nền

thấp như biển nền đỏ, nền bị mờ, những biển số có đường viền mảnh, biển số có lắp

những thiết bị trang trí, biển bị bóng lóa do ánh sáng, và những biển có phần chữ số

không rõ ràng.

Vì vậy, để bài toán phát huy hiệu quả tốt nhất thì thiết bị quan sát cần đặt ở vị trí

phù hợp. Để thu được những ảnh không có bóng sáng và hiện thị toàn bộ biển số xe.

Phương pháp này xử lý được ảnh bất kỳ vì vậy có thể được dùng vào việc quan sát

quản lý giao thông.

4.2.2 Hướng phát triển của bài toán.

- Nâng cao hiệu quả chương trình, tách ly các kí tự trong biển số trong các trường

hợp biển số bị nhiều nhiễu, mất mát thông tin do nhiễu từ điều kiện môi trường, tìm

vùng biển số trong ảnh có độ tương phản giữa biển số và nền thấp. Đặc biệt là biển xe

có nền màu đỏ chữ trắng.

- Phát triển chương trình thành module phần cứng. Có khả năng tương thích với

các thiết bị quan sát như camera.

Page 84: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 83 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

- Kết hợp chương trình với những chương trình nhận dạng khác để hỗ trợ tốt hơn

cho việc quản lý phương tiện giao thông. Ví dụ: kết hợp với chương trình nhận dạng

chữ viết để đưa biển số về dạng ký tự trên máy tính giúp công việc quản lý bến bãi…

- Nghiên cứu theo hướng một ứng dụng cụ thể như : giám sát phương tiện giao

thông, xử lý vi phạm giao thông, quản lý xe tại các bãi giữ xe, các kho vật tư….

Page 85: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 84 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

KẾT LUẬN.

Sự phát triển của công nghệ thông tin đã có những tác động tích cực đến nhiều

mặt của đời sống xã hội trong đó phải kể tới 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ớ đã 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à hệ thống giám sát đều lấy biển số xe là mục tiêu

giám sát.

Ở nước ta, các hệ thống giám sát tự động nói cung và hệ thống nhận dạng biển

số xe nói riêng cũng đang được chú trọng tuy nhiên nó vẫn còn là lĩnh vực cần nhiều

công sức đầu tư để cải thiện phương pháp cũng như tỷ lệ tìm biển thành công.

Đa phần các công tác quản lý, xử lý đối với các phương tiện giao thông đều cần nhân

lực con người. Báo cáo nhằm mục đích tìm hiểu bài toán nhận dạng “Biển số xe” với

mục đích để quản lý, giám sát các phương tiện giao thông.

Với mục đích phát hiện vùng biển số do thời gian có hạn nên em chưa cài đặt

nhận dạng ký tự quang học trong ứng dụng của mình. Em chắc rằng trong tương lai

không xa, thì hệ thống nhận dạng biển số xe nói riêng và nhận dạng nói chung sẽ được

sử dụng rộng rãi với độ chính xác cao phục vụ cho nhiều lĩnh vực cuộc sống để giám

sát, quản lý công việc thay cho con người.

Page 86: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 85 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

TÀI LIỆU THAM KHẢO

Tiếng việt.

[1] Nhận môn xử lý ảnh số. Ths. Lương Mạnh Bá, Pts. Nguyễn Thanh Thủy.

NXB KHKT 2003.

[2] Đồ án tốt nghiệp của chị Phạm Thị Thanh Thủy trường Đại học Dân Lập Hải

Phòng năm 2009

Tiếng anh.

[3] learing OpenCV_ computer vission whit the OpenCV Library_ Gary Breadki &

Kaebler

[4]http://docs.opencv.org

[5]http://code.gurusvn.com

[6] http://vi.wikipedia.org

Page 87: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 86 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Phụ lục.

Hướng dẫn cài đặt và cấu hình OpenCV.

OpenCV (Open Source Computer Vision) là một thư viện chức năng lập trình

cho ngành thị giác máy tính. OpenCV được phát hành theo BSD license và nó là miễn

phí cho cả hai học thuật và thương mại. OpenCV được dùng với các ngôn ngữ C++, C,

Python và Java(Android) và hỗ trợ các hệ điều hành Windows, Liniux, Android và

Mac OS. Trong thư viện OpenCV có hơn 2500 các thuật toán tối ưu.

Việc cấu hình OpenCV với Microsoft Visual Studio 2010 tương đối khó khăn

cho người mới sử dụng.

Sau đây em xin hướng dẫn cài đặt và cấu hình OpenCV phiên bản 2.4 với

Microsoft Visual Studio 2010 bản 32 bit.

I. Hướng dẫn cài đặt OpenCV

1. Tải về và cài đặt.

Tải về OpenCV 2.4 tại trang chủ http://opencv.org

Cài đặt thực chất là giải nén. Bạn nên giải nén ở thu mục đơn giản ví dụ : trong

hướng dẫn này tối giải nén thành D:\opencv

2. Tải vẻ và cài đặt Cmake

Tải về Cmake tại trang chủ http://www.cmake.org và tiến hành cài đặt bình

thường.

3. Chạy cmake_gui. Trong mục “where is the source code” chọn thư mục

(D:\opencv). Trong mục “where to build the binarines” chọn D:\opencv\builds ( tự

tạo thư mục này). Click Configure và chọn như hình sau:

Một bạn tùy chọn hiện ra bạn click “Generate”

Page 88: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 87 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

4. Mở OpeCV.sln lên bằng Visual Studio 2010 để tiến hành thiết lập.

Chọn “Debug” trong Solution configuration. Và tiến hành biên dịch.

Tương tự cho thiết lập “Release”

5. Thêm vào đường dẫn vào environment variavles:

D:\opencv\builds\bin\Release

D:\opencv\builds\bin\Debug

Control Panel System Advanced System Settings Environment

variables và thêm 2 thực mục đó vào biến "path".

II. Hướng dẫn cấu hình OpCV với Microsoft Visual Studio 2010.

1. Tạo một dự án “ win 32 console applicationg” bằng Microsoft Visual Studio

2010.

2. Trong Solution Explprer, chọn chuột phải vào project chọn properties.

a. Chọn VC++ Directories.

- Trong mục Include Diretories thêm hai thư mục:

D:\opencv\build\include

D:\opencv\build\include\opencv

- Trong mục Library Directories, thêm hai mục sau:

D:\opencv\builds\lib\Debug

D:\opencv\builds\lib\Release

b. Chọn Linkerinput.

Trong Additional Dependencies bạn chép toàn bộ danh sách file .lib trong

thư mục

D:\opencv\builds\lib\Debug

D:\opencv\builds\lib\Release

Cách tiến hành cấu hình trên đã được em hướng dẫn bằng video.

http://www.youtube.com/watch?v=wc2PQGznhhc&feature=g-upl

Page 89: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 88 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

Một số hàm quan trọng.

1. Biến đổi ảnh xám và lọc ảnh song phương:

Code:

void gray_filter() Mat src_gray; cvtColor(src,src_gray,CV_BGR2GRAY); bilateralFilter(src_gray,src_gray_filter,10,20,5); 2. Hàm phân ngưỡng hoặc tìm biên canny.

Code:

void threshold_canny() Canny(src_gray_filter,dst_canny,120,360,3); threshold(src_gray_filter,dst_threshold,100,200,THRESH_BINARY); 3. Tìm vùng biển số.

Code :

void vungBienSo() vector<int> int_vung; vector<vector<Point> > contours; vector<Vec4i> hierarchy; /// Find contours findContours( dst_threshold, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); vector<vector<Point> > contours_poly( contours.size() ); vector<Rect> boundRect; for( size_t i = 0; i < contours.size(); i++ ) approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true ); boundRect.push_back(boundingRect( Mat(contours_poly[i]) )); for ( size_t i = 0; i < boundRect.size(); i++) double x = boundRect[i].width*1.0; double y = boundRect[i].height*1.0; double a = x/y; if( a>=3.5 && a<=4.5) int_vung.push_back(i);

Page 90: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 89 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

else if(a>=0.8 && a<=1.4) int_vung.push_back(i); // -------------------------------lay vung bien------------------------------------- IplImage* src1 = new IplImage(src); IplImage* cropped_img = cvCreateImage( cvGetSize(src1),src1->depth,src1->nChannels); for( size_t i = 0; i < int_vung.size();i++) int area = boundRect[int_vung[i]].width*boundRect[int_vung[i]].height; if (area >= 1500 && area <= 30000) cvSetImageROI(src1,cvRect(boundRect[int_vung[i]].x,boundRect[int_vung[i]].y,boundRect[int_vung[i]].width,boundRect[int_vung[i]].height)); IplImage *tam = cvCreateImage(cvGetSize(src1),src1->depth,src1->nChannels); cvCopy(src1,tam,NULL); vung_bien.push_back(tam); cvResetImageROI(src1); drawImageInside(tam, cropped_img ,i+1 ,0); Mat drawing = Mat::zeros( dst_threshold.size(), CV_8UC3 ); for( size_t i = 0; i< int_vung.size(); i++ ) Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours_poly, (int)i, color, 1, 8, vector<Vec4i>(), 0, Point() ); rectangle( drawing, boundRect[int_vung[i]].tl(), boundRect[int_vung[i]].br(), color, 2, 8, 0 ); 4. Cách ly vùng ký tự.

Code:

void crop_so() for(size_t i = 0; i< vung_bien.size(); i++) IplImage* src1 = new IplImage(vung_bien[i]); IplImage* a = new IplImage(src); Mat src_gray; cvtColor(vung_bien[i],src_gray,CV_BGR2GRAY); bilateralFilter(src_gray,src_gray_filter,10,20,5); threshold(src_gray_filter,dst_threshold,153,200,THRESH_BINARY); IplImage* cropped_img = cvCreateImage( cvGetSize(a),a->depth,a->nChannels); vector<int> int_vung; vector<vector<Point> > contours; vector<Vec4i> hierarchy; findContours( dst_threshold, contours, hierarchy, CV_RETR_TREE,

Page 91: Tim Hieu Bai Toan NHan Dang

Đồ Án Tốt Nghiệp 90 Khoa Công Nghệ Thông Tin

SV: Phạm Thế Tài – Lớp S11-50TH

GVHD: Th.S Vũ Anh Dũng

CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); vector<vector<Point> > contours_poly( contours.size() ); vector<Rect> boundRect; for( size_t i = 0; i < contours.size(); i++ ) approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true ); boundRect.push_back(boundingRect( Mat(contours_poly[i]) )); for (size_t i =0 ; i< boundRect.size();i++) if(boundRect[i].area() >=100 && boundRect[i].area() <1000 ) cvSetImageROI(src1,cvRect(boundRect[i].x,boundRect[i].y,boundRect[i].width,boundRect[i].height)); IplImage *tam = cvCreateImage(cvGetSize(src1),src1->depth,src1->nChannels); cvCopy(src1,tam,NULL); ky_tu.push_back(tam); cvNamedWindow("aaa"); cvShowImage("aaa",tam); cvWaitKey(0); cvResetImageROI(src1); drawImageInside(tam, cropped_img ,i*15 ,0); cvShowImage("cac ky tu",cropped_img ); cvWaitKey(0); if(ky_tu.size() >=6 && ky_tu.size() <=9) i=vung_bien.size(); else ky_tu.empty(); 5. Hàm drawImageIndide

Code:

void drawImageInside(IplImage* source, IplImage* target, int x, int y) for (int ix=0; ix<source->width; ix++) for (int iy=0; iy<source->height; iy++) int r = cvGet2D(source, iy, ix).val[2]; int g = cvGet2D(source, iy, ix).val[1]; int b = cvGet2D(source, iy, ix).val[0]; CvScalar bgr = cvScalar(b, g, r); cvSet2D(target, iy+y, ix+x, bgr);