Xử lý contour kết quả

Một phần của tài liệu Nhận dạng biển số xe (Trang 33)

Kết quả sau các bước lọc sẽ cho ra vùng có khả năng là biển số. Với một ảnh đầu vào, sẽ cho ra tương ứng 1 contour cho 1 vùng biển số xe. Do phương pháp này dùng 3 ảnh để xử lý tìm contour, cho nên vùng biển số xe trên ảnh này sẽ có tối đa 3 contour cùng khoanh vùng lên nó. Vùng biển số Contour 2 79H-456.67 Contour 1 1/3 2/3

Các contour này đều thể hiện chính xác vùng biển số nên ta sẽ chọn 1 ra contour thích hợp duy nhất cho vùng biển số này như thế nào ? Có 2 cách do tôi đề xuất như sau:

• Cách thứ nhất :

- Tính trung bình tỉ lệ của các contour cùng loại (dài hoặc vuông), đặt là ratioavg.

- Tính sai số Delta của mỗi contour: là độ chênh lệch ratio của mỗi contour với ratioavg. Contour nào có Delta nhỏ nhất (lệch ít nhất) sẽ được chọn là Contour kết quả cuối cùng.

• Cách thứ 2: cách này đơn giản hơn, là tính số pixel đen trên mỗi vùng contour, vùng nào chứa ít pixel đen hơn (ít pha tạp ngoại cảnh) thì là vùng chứa biển số. Sau khi có được Contour kết quả, ta sẽ tiến hành Crop ảnh theo Contour để ra được ảnh chỉ có biển số xe.

Hình 2.21. Kết quả phát hiện biển số

2.3. Kết quả phát hiện biển số.

Test chương trình trên tập 376 ảnh bất kỳ biển số xe Việt Nam (trong đó 150 ảnh biển số vuông, 226 ảnh biển số dài), điều kiện ánh sáng có thể nhìn rõ biển số bằng mắt thường, góc chụp phần lớn là không lớn hơn 40 độ. Chạy lần lượt các ảnh bằng demo, quan sát kết quả nhận dạng bằng mắt. Kết quả kiểm nghiệm thu được như sau:

Bảng 2.1. Tỉ lệ phát hiện biển số

Biển số vuông Biển số dài Kết quả chung

Số ảnh 150 226 376

Phát hiện đúng 130 205 335

Phát hiện sai 20 21 41

Tỉ lệ phát hiện sai 13.4% 9.3% 11% Thời gian nhận dạng < 1s < 1s < 1s

Một số nguyên nhân dẫn đến nhận dạng sai

Biển bị bóng, phản chiếu Biển số bị tối, thiếu ánh sáng Biển dơ, mù, ố vàng

Hình 2.22. Một số ảnh biển số phát hiện sai

CHƯƠNG 3: NHẬN DẠNG KÝ TỰ TRONG BIỂN SỐ 3.1. Tổng quan về bài toán nhận dạng ký tự

Bài toán nhận dạng tuy ra đời từ thập niên 60 của thế kỷ trước nhưng vẫn luôn nhận được sự quan tâm, nghiên cứu của nhiều nhà khoa học trên thếgiới. Trong những thập niên gần đây, cùng với quá trình đẩy mạnh tin học hóa trong mọi lĩnh vực đời sống xã hội, nhận dạng không chỉ còn là lĩnh vực nghiên cứu lý thuyết nữa mà đã được ứng dụng rộng rãi trong thực tế cuộc sống. Các bài toán nhận dạng được nghiên cứu nhiều nhất hiện nay bao gồm nhận dạng các mẫu hình học (vân tay, mặt người, hình khối,…), nhận dạng tiếng nói và nhận dạng ký tự. Chúng được áp dụng vào nhiều lĩnh vực như y học, dự báo thời tiết, dự báo cháy rừng, điều khiển robot, ... Trong các bài toán nhận dạng này, nhận dạng ký tự là bài toán đang được ứng dụng phổ biến nhất hiện nay.

Nhận dạng ký tự bao gồm hai kiểu chính là nhận dạng chữ in và nhận dạng chữ viết tay. Bài toán nhận dạng ký tự biển số xe cũng là 1 nhánh thuộc nhận dạng ký tự phương pháp hoàn toàn tương tự. Cho đến nay bài toán nhận dạng chữ in đã được giải quyết khá trọn vẹn với sự ra đời của nhiều hệ thống nhận dạng đạt tới độ chính xác gần như tuyệt đối. Tiêu biểu có hệ nhận dạng chữ in dựa trên mô hình mạng nơron bốn lớp của J. Wang và J.S.N. Jean đạt tới tỷlệ chính xác 99.75%. Ở Việt Nam hiện đã có sản phẩm VNDOCR của Viện Công nghệ thông tin nhận dạng chữ in tiếng Việt với độ chính xác tới 99%.

Ngày nay cùng với sự phát triển về mặt lý thuyết, công nghệ, có rất nhiều hướng đi cho việc giải quyết bài tốn này như: nhận dạng kí tự dựa trên cấu trúc hay cách tiếp cận khác như dùng: logic mờ, giải thuật di truyền, mô hình xác suất thống kê, mô hình mạng nơron. Đặc biệt trong những năm gần đây mô hình mạng nơron được quan tâm nhiều do khả năng tổng hợp của mô hình và sự phát triển về tốc độ xử lí của máy tính.

Hình 3.1. Sơ đồ nhận dạng ký tự

Trong đó:

• Tiền xử lý: là quá trình chuẩn hóa dữ liệu vào, gồm các công việc như xử lý nhiễu, chuẩn hóa kích thước dữ liệu, …

• Trích chọn đặc trưng: là quá trình tìm ra các thông tin hữu ích và đặc trưng nhất cho mẫu đầu vào để sử dụng cho quá trình nhận dạng.

• Nhận dạng: là quá trình sử dụng một mô hình nhận dạng cụ thể với một thuật toán cụ thể để trả lời mẫu đầu vào là ký tự nào.

• Hậu xử lý: là quá trình xử lý kết quả cho phù hợp với từng ứng dụng cụ thể.

3.2. Tách ký tự trong biển số xe.

Mục đích chính của phần này là tách riêng từng ký tự để làm mẫu cho huấn luyện và nhận dạng các ký tự. Có 2 phương pháp có thể sử dụng ở bước này như sau:

Phân tích Histogram theo chiều ngang, ta đánh dấu được 2 vị trí tách dòng trên biển số đối với biển vuông và 1 dòng đối với biển dài. Do mỗi dòng trên biển số có độ cao nhất định đó là độ cao của ký tự trên biển số nên ta chọn ngưỡng để tách dòng là độ cao tối thiểu của 1 ký tự trên biển số. (adsbygoogle = window.adsbygoogle || []).push({});

Tiếp theo, ta phân tích Histogram theo chiều dọc, ta đánh dấu được 2 vị trí tách ký tự trên biển. Mỗi ký tự trên biển số có độ rộng nhất định và ta lấy ngưỡng là độ rộng của số 1 (số 1 có độ rộng nhỏ nhất).

Hình 3.2. Lược đồ chiếu ngang và chiếu dọc

Nhược điểm lớn nhất của phương pháp này là phụ thuộc nhiều vào độ nghiêng biển số, khi biển số không nằm phương ngang, việc xác định ngưỡng vô cùng khó khăn.

3.2.2. Phương pháp tìm Contour.

Tư tưởng chính trong phương pháp này là tìm các contour (tương ứng với mỗi ký tự), so sánh với ngưỡng chữ số trên biển (khoảng từ 7 đến 9 ký tự cho biển số xe Việt Nam).

Việc đầu tiên ta sẽ nhị phân ảnh biển số. Vấn đề mấu chốt ở phương pháp này là chọn ngưỡng nhị phân bao nhiêu để cho ra rõ ràng nhất, đầy đủ nhất các ký tự. Chính vì không có phương pháp nào hữu ích cho việc chọn ngưỡng nhị phân, nên ta sẽ quét ngưỡng trong một khoảng nhất định (ở đây ta sẽ chọn khoảng từ 30-170 với bước nhảy là 5). Vỡi mỗi ngưỡng, ta tiến hành nhị phân, tìm các contour thõa mãn là 1 ký tự số xe (thông qua bước các bước lọc contour), sau đó đếm số lượng các contour này và ghi nhận lại. Tiếp tục nhảy lên ngưỡng tiếp theo, đếm số lượng contour, nếu số lượng contour sau lớn hơn số lượng contour trước (có nghĩa là tìm thêm được vài ký tự nữa) thì ghi nhận lại số lượng contour lớn nhất, ngược lại thì không ghi nhận. Lặp lại các bước trên đến ngưỡng 170, so sánh số lượng contour tìm được lớn nhất được ghi nhận với ngưỡng từ 7

đến 9 ký tự, nếu nằm ngoài ngưỡng này thì biển số đó không tìm được đầy đủ các vùng ký tự thõa mãn. Sơ đồ tách ký tự biển số như sau:

Hình 3.3. Sơ đồ tách ký tự biển số

Ưu điểm của phương pháp này là không phụ thuộc vào độ nghiêng biển số, tuy nhiên cần có thuật toán lọc contour thích hợp để cho ra đúng vùng contour là ký tự.

3.3. Các phương pháp rút trích đặc trưng ký tự. 3.3.1. Các phương pháp về chia vùng. 3.3.1. Các phương pháp về chia vùng.

a) Zone

Hình 3.4. Chia vùng (Zone )

Ảnh ký tự được chia thành N×N vùng (zones). Tổng số điểm đen của mỗi vùng sẽ được chọn để tạo thành véc tơ đặc trưng hoặc lấy tỉ lệ số pixel đen (trắng) trên tổng số pixel mỗi vùng.

b) 9-zone

Hình 3.5. 9- zone

 Chuyển ảnh đầu vào

thành ma trận nhị phân

(như hình)

 Với mỗi vùng, giá trị đặc trưng được tính bằng công thức:

Trong đó: fr : là giá trị đặc trưng tại vùng thứ r qr : tổng số pixel tại vùng thứ r Cij : giá trị pixel tại pixel (i,j)

Hoặc, với mỗi vùng, giá trị đặc trưng được tính theo công thức:

Trong đó: Với i và j là chỉ số của pixel đen

c) Diagonal

Hình 3.6. Diagonal

 Chuẩn hóa kích thước về 60x90 px

 Chia ma trận thành 54 vùng, ngang 6 vùng, cao 9 vùng, kích thước mỗi vùng 10x10 px.

 Vỡi mỗi vùng, giá trị đặc trưng được tính như sau:

- Mỗi vùng 10x10 sẽ có 19 đường chéo. Tính tổng giá trị pixel đen theo đường chéo ta được 19 đặc trưng con.

- Giá trị đặc trưng đại diện cho vùng được tính bằng trung bình của 19 đặc trưng trên. Kết quả sẽ có 54 giá trị đại diện cho 54 vùng. (adsbygoogle = window.adsbygoogle || []).push({});

Ngoài ra, có thể lấy thêm 15 đặc trưng nữa, là trung bình đặc trưng của 9 hàng và 6 cột để tạo thành 69 vector đặc trưng.

3.3.2. Biểu đồ chiếu Histogram.

Ý tưởng cơ bản của phương pháp trích chọn đặc trưng này là chiếu các điểm đen trên ảnh 2 chiều theo các hướng ngang, dọc và hai đường chéo thành một dãy các tín hiệu 1 chiều. Ưu điểm của các đặc trưng này là không phụ thuộc nhiều vào nhiễu, tuy nhiên nó vẫn phụ thuộc vào độ nghiêng của chữ. Hình 3.7.Biểu đồ chiếu Histogram

3.3.3. Contour Profile

Chuẩn hóa ảnh đầu vào về 1 kích thước cố định. Quét theo hàng và theo cột, trên mỗi hàng và mỗi cột, tính khoảng cách từ khung ảnh đến điểm đen đầu tiên của chữ trên 1 dòng quét.

Hình 3.8.

Contour profile

3.3.4. Wavelet Haar

Chuyển ảnh ký tự thành ma trận nhị phân. Chia thành N=4 vùng 1,2,3,4 (Si: tổng điểm đen của vùng i). Tính đặc trưng thứ nhất F1 = Tổng điểm đen trên toàn bộ ma trận.

Các đặc trưng tiếp theo được tính như sau:

F2: S1 +S2

F3: S2 + S3

F4: S4

Sau đó trên từng vùng con, lại chia tiếp thành 4 vùng nhỏ và tính các Fi tiếp theo như công thức trên. Trong thực nghiệm, chọn N=4, ta có: 1 + 3 + 4×3 + 4×4×3 + 4×4×4×3 = 256 đặc trưng.

3.3.5. Crossing và Distance

Hình 3.10. Crossing và

Distance

Với Crossing, đặc trưng

được tính trên tất cả các hàng

và cột. Với mỗi dòng

quét, đếm số lần thay đổi

giá trị pixel giữa phần nền và phần chữ. Như vậy ảnh kích thước NxN sẽ có 2N đặc trưng theo cột và hàng.

Còn Distance sẽ đếm khoảng cách từ biên cho đến pixel đầu tiên của phần chữ theo các hướng Trái, Phải, Trên và Dưới.

3.3.6. Binary

Chuyển ảnh thành ma trận nhị phân, với mỗi điểm đen sẽ đại diện bằng giá trị 1, điểm trắng đại diện là giá trị 0 (hoặc ngược lại). Kết quả thu được là 1 ma trận chứa các giá trị 0 và 1.

Hình 3.11. Binary

3.4. Các mô hình nhận dạng

3.4.1. Một số mô hình nhận dạng ký tự.

a) K-NN (K-Nearest Neighbors)

• Xác định giá trị tham số K (K láng giềng gần nhất) (adsbygoogle = window.adsbygoogle || []).push({});

• Tính khoảng cách của đối tượng cần phân lớp (query point) đến tất cả các đối tượng khác trong tranning data. Các hàm khoảng cách thường dùng:

o Khoảng cách Euclide

o Khoảng cách Mahattan

• Đánh giá trị khoảng cách cho các đối tượng và sắp xếp các khoảng cách theo thứ tự tăng dần.

• Lấy ra K láng giềng (có khoảng cách nhỏ nhất) trong các tập các đối tượng.

• Đối tượng nào có số mẫu lớn nhất trong K láng giềng lấy ra thì Query point sẽ thuộc về tập đó (Trường hợp số mẫu bằng nhau, ta tính thêm bước trung bình khoảng cách các đối tượng thuộc cùng 1 mẫu để chọn ra mẫu có trung bình nhỏ nhất).

b) SVM (Support Vector Machine)

Xét bài toán phân lớp đơn giản nhất – phân lớp hai lớp với tập dữ liệu mẫu:

Trong đó mẫu là các vector đối tượng được phân lớp thành các mẫu dương và mẫu âm như trong Hình 3.12.

Các mẫu dương là các mẫu xi thuộc lĩnh vực quan tâm và được gán nhãn yi = 1. Các mẫu âm là các mẫu xi không thuộc lĩnh vực quan tâm và được gán yi = - 1.

Hình 3.12. Phân lớp bằng SVM

Thực chất phương pháp này là một bài toán tối ưu, mục tiêu là tìm ra một không gian H và siêu mặt phẳng quyết định h trên H sao cho sai số phân lớp là thấp nhất. Trong trường hợp này, tập phân lớp SVM là mặt siêu phẳng phân tách các mẫu dương khỏi các mẫu âm với độ chênh lệch cực đại, trong đó độ chênh lệch – còn gọi là Lề (margin) xác định bằng khoảng cách giữa các mẫu dương và các mẫu âm gần mặt siêu phẳng nhất. Mặt siêu phẳng này được gọi là mặt siêu phẳng lề tối ưu..

Các mặt siêu phẳng trong không gian đối tượng có phương trình là:

C + w1x1+ w2x2+ … + wnxn = 0

Tương đương với công thức : C + ∑wixi = 0 với i=1,…,n

Với w = w1 , w2, …, wnlà bộ hệ số siêu phẳng hay là vector trọng số, C là độ dịch, khi thay đổi wC thì hướng và khoảng cách từ gốc toạ độ đến mặt siêu phẳng thay đổi.

Máy học SVM là một học các siêu phẳng phụ thuộc vào tham số vector trọng số w và độ dịch C. Mục tiêu của phương pháp SVM là ước lượng w và C để cực đại hoá lề giữa các lớp dữ liệu dương và âm.

Ta giải phương trình sau:

Tìm ra được vector trọng số w và sai số của mỗi điểm trong tập huấn luyện là ηi , từ đó ta có phương trình tổng quát của siêu phẳng tìm ra được bởi thuật toán SVM là:

f(x1, x2,…, xn) = C +∑wixi Với i = 1,…, n. ( n là số dữ liệu huấn luyện)

Sau khi đã tìm được phương trình của siêu phẳng bằng thuật toán SVM, áp dụng công thức này để tìm ra nhãn lớp cho các dữ liệu mới.

f(x) = sign(C + ∑wixi)

sign(z) = +1 nếu z ≥ 0, sign(z) = -1 nếu z < 0.

Nếu f(x) = +1 thì x thuộc về lớp dương (lĩnh vực được quan tâm), và ngược lại, Nếu f(x) = -1 thì x thuộc về lớp âm (các lĩnh vực khác).

c) Mạng Neural

Được trình bày trong phần tiếp theo.

3.4.2. Ứng dụng mô hình mạng Neural cho nhận dạng ký tư 3.4.2.1. Giới thiệu về mạng Neural

Định nghĩa: Mạng nơron nhân tạo, Artificial Neural Network (ANN) là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơron sinh học. Nó được tạo nên từ một số lượng lớn các phần tử (nơron) kết nối với nhau thông qua các liên kết (trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào đó. Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu,...) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất học chính là quá trình hiệu chỉnh trọng số liên kết giữa các nơron.

Cấu trúc neural nhân tạo:

Hình 3.13. Cấu tạo một Neural (adsbygoogle = window.adsbygoogle || []).push({});

• Tập các đầu vào: Là các tín hiệu vào (input signals) của nơron, các tín hiệu này thường được đưa vào dưới dạng một vector N chiều.

• Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số liên kết – Synaptic weight. Trọng số liên kết giữa tín hiệu vào thứ j với nơron k thường đượckí hiệu là

wkj. Thông thường, các trọng số này được khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá trình học mạng.

• Bộ tổng (Summing function): Thường dùng để tính tổng của tích các đầu vào với trọng số liên kết của nó.

• Ngưỡng (còn gọi là một độ lệch - bias): Ngưỡng này thường được đưa vào như một thành phần của hàm truyền.

• Hàm truyền (Transfer function): Hàm này được dùng để giới hạn phạm vi đầu ra của mỗi nơron. Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng.

• Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa là một đầu ra. Xét về mặt toán học, cấu trúc của một nơron k, được mô tả bằng cặp biểu thức sau:

Trong đó: x1, x2, ..., xp: là các tín hiệu vào; (wk1, wk2,..., wkp) là các trọng số liên kết của nơron thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm truyền và yk là tín hiệu đầu ra của nơron.

Như vậy nơron nhân tạo nhận các tín hiệu đầu vào, xử lý (nhân các tín hiệu này với trọng

Một phần của tài liệu Nhận dạng biển số xe (Trang 33)