Ứng dụng mạng Neural trong lĩnh vực nhận dạng

Một phần của tài liệu NGHIÊN CỨU GIẢI PHÁP NHẬN DẠNG BIỂN SỐ XE TRÊN CƠ SỞ CÔNG NGHỆ XỬ LÝ ẢNH (Trang 72 - 101)

3.5.1 Nhiệm vụ

Vấn đề nhận dạng đặc tính là một lĩnh vực ứng dụng của những phương pháp phân loại tự động tiêu biểu. Ngoài sự quan tâm ứng dụng của nó qua vấn đề nhận dạng mã Zip, tự động đọc của ngân hàng kiểm tra..., nó liên quan tới

tất cả các vấn đề tiêu biểu sẽ gặp khi tiến hành phân loại: sự lựa chọn khi trình bày dữ liệu, sự lựa chọn kiểu và cấu trúc thích hợp, và huấn luyện có giám sát phân loại sử dụng một tập hợp những mẫu và khả năng tổng quát của mạng.

3.5.2Cách tiếp cận

Từ những lớp perceptrons đơn, là thành phần chính cho việc xây dựng những lớp phân loại tuyến tính, những hệ phân loại mạng neural mạnh hơn đã được phát triển. Mạng thông dụng nhất là Mạng nuôi tiến nhiều lớp (Multi Layer feedforward Network) huấn luyện bởi giải thuật lan truyền ngược (backpropagation). Mạng này với một lớp ẩn thì thông dụng cho những hệ phân loại, chúng có thể xấp xỉ những hàm quyết định phức tạp nếu cung cấp đủ số neural bên trong lớp ẩn .Tuy nhiên, không có quy tắc đơn giản nào cho biết như thế nào là đủ hoặc thiếu những neural lớp ẩn để học một hàm đã cho. Cách duy nhất là thử và chọn cho đến khi có một mạng tốt nhất.

Quá trình nhận dạng cổ điển được tách ra thành những bước xử lý trước và sự phân loại kế tiếp. Trong cách tiếp cận chúng ta, những thao tác xử lý trước có thể không cần thiết khi sử dụng mạng nơron vì khả năng chịu nhiễu rất tốt của nó.

Các kiểu chữ do những người khác nhau thực hiện. Những người này vẽ những chữ số thẳng góc để làm giới hạn bớt sự đa dạng lớn của những kích thước và những kiểu viết. Những chữ số được số hóa bởi một scanner: những chữ số đen và trắng nhị phân. Ngoài những sự biến đổi kiểu kích thước và ghi, vấn đề phân đoạn làm khó hơn bởi sự tồn tại của những chữ số gối lên nhau, những dấu ngang và những sự đánh dấu trên phong bì, hay các dấu gạch trên biển số xe. Bởi vậy, nhiều chữ số bị cắt một phần, bao gồm bên ngoài những sự dánh dấu hoặc những phần từ những chữ số khác, và vài chữ số không thể được phân vùng được

Tập mẫu huấn luyện và tập mẫu thử của dữ liệu mà những cơ sở chứa đựng không rõ ràng có những mẫu có thể nhận ra được tuy khó khăn có vài mẫu thì thậm chí được gán cho lớp sai trong lúc phân loại.

Sự lựa chọn hình thức trình bày dữ liệu thích hợp là một điểm khẩn yếu khi nào giải quyết một nhiệm vụ phân loại, hoặc với một có thể dạy được hoặc với một hệ phân loại không có thể dạy được. Nếu một kiểu dữ liệu có nhiễu một cách tương đối được sử dụng, thì cần phải có một tập mẫu đủ lớn để huấn luyện mới có những kết quả thỏa mãn. Bởi vì hệ phân loại trên tập hợp mẫu thử thì khá gần với những đặc tính của tập huấn luyện.

Cho một kiểu dữ liệu đã cho, một siêu phẳng tối ưu phân ra những lớp trong N-chiều nhập vào không gian có thể được tìm thấy nếu những phân phối xác suất nằm bên dưới cũng được biết hoặc đánh giá đúng đắn. Siêu phẳng này có thể được xấp xỉ bởi việc huấn luyện hệ phân loại mạng neural nào đó trên những mẫu của tập huấn luyện. Hệ phân loại có một tập hợp những tham số, những trọng số trong trường hợp của một mạng neural, phải được xác định. Với câu hỏi vừa rồi : Làm sao nhiều mẫu huấn luyện được dùng đến đạt được một độ chính xác đã cho của việc xấp xỉ? Trong khi trả lời tới câu hỏi này chắc chắn đầy đủ phụ thuộc vào sự phức tạp của vấn đề phân loại tại chỗ, nó là số mẫu cần phải có đểù đạt được một độ chính xác đã cho nó phụ thuộc vào lũy thừa với kích thước N của không gian đầu vào , đây là khó khăn đặc biệt cho việc nhận biết thế giới thực mà những vấn đề như nhiệm vụ nhận dạng chữ số sẽ bàn luận ở đây.

3.6 Kết luận chương 3

Giải pháp nhận dạng biển số xe trên cơ sở công nghệ xử lý ảnh để trích lọc được các ký tự số và chữ trên biển số xe, Ứng dụng mô hình mạng neural để xây dựng phần mềm nhận dạng biển số xe.

CHƯƠNG 4: XÂY DỰNG PHẦN MỀM NHẬN DẠNG BIỂN SỐ XE 4.1 Mô hình tổng quát hệ thống nhận dạng biển số xe mô tô hai bánh

Một hệ nhận dạng biển số xe mô tô trực tuyến có thể được mô tả tóm lược như sau:

Khi có xe vào phạm vi camera chụp ảnh xe (dừng đúng vị trí quy định), ảnh chụp sẽ được truyền vào chương trình nhận dạng chính. Ảnh chụp sẽ được đưa vào module trích ảnh biển số, ảnh này sẽ được tiền xử lý, sau đó module tách ký tự đơn sẽ thực hiện tách từng ký tự trên biển số trước khi đua vào module nhận dạng ký tự. Ký tự sau khi nhận dạng sẽ được kết xuất và lưu vào cơ sở dữ liệu (có thể dùng quản lý trong bãi giữ xe,…) của chương trình. Sau đây tôi sẽ trình bày chi tiết từng module và thuật toán giải quyết vấn đề.

4.1.1 Thu nhận ảnh Vị trí chụp ảnh Vị trí chụp ảnh

Hệ thống sử dụng thiết bị camera để chụp ảnh xe, có vị trí đặt thu chụp cách phương tiện giao thông một khoảng 1m. Với điều kiện chụp ảnh như trên sẽ giúp cho hệ thống có các thông tin trong quá trình nhận dạng như: tỉ lệ của vùng ảnh có biển số so với ảnh thu được từ camera, phạm vi bảng số trên ảnh,… làm tăng hiệu quả nhận dạng của hệ thống.

4.1.2 Nhận ảnh và các tham số đầu vào

Thiết bị chụp ảnh được điều khiển bởi chương trình thực hiện tại máy tính. Camera được điều khiển chụp ảnh gián tiếp thông qua module điều khiển phát hiện chuyển động, truyền tín hiệu yêu cầu chụp và lưu giữ tạm các ảnh chụp.

Ảnh chụp nhận được là ảnh chụp phía sau xe, có độ phân giải là 640x480 chứa một phần xe và ảnh biển số.

Ảnh biển số: trong phạm vi của đề tài này sẽ xử lý các dạng biển số lưu thông do cơ quan cảnh sát giao thông qui định.

Dạng biển số Hình chữ nhật bao gồm 2 dòng chữ Ký tự trên biển số Gồm có 10 ký tự số in: 0,…9 và 21 ký tự chữ

in hoa gồm {A …Z} \ {I, J, O, Q, W}. Thông tin trên biển số gồm 2 phần:

 Thông tin tỉnh thành, quận huyện: 4 ký tự dòng 1.

 Số hiệu biển số: ký tự dòng 2.

Miền kích thước của biển số. Cao = 40

Rộng = 50

Màu ảnh nền và màu chữ ảnh có nền sáng chữ tối Vị trí tương đối của biển số

trong ảnh

Thường nằm khoảng giữa ảnh.

Chiều rộng, cao của một ký tự trên biển số.

Rộng = 7 Cao = 10

Bảng 4.1: Bảng mô tả thông tin ảnh biển số xe mô tô

Các điều kiện trình bày ở trên sẽ được tham số hóa trong hệ thống nhận dạng của đề tài và mang tính chất tăng cường ràng buộc ảnh đầu vào.

4.2Trích biển số, xử lý ảnh biển số và tách ký tự chữ số xe mô tô

4.2.1 Thuật toán trích biển số dùng phương pháp phân tích phổ tần số (Fast Fourier Transform) (Fast Fourier Transform)

Kỹ thuật phân tích phổ Fourier được sử dụng rộng rãi trong lĩnh vực xử lý ảnh, và thường được áp dụng để tăng cường chất lượng ảnh (ví dụ như làm trơn và làm sắc nét cho ảnh). Các ảnh có thể xem như là các hàm rời rạc của thời gian, mà phép biến đổi Fourier một chiều hay hai chiều có thể áp dụng được. Đối với xử lý ảnh số, luôn luôn tồn tại phép biến đổi Fourier và biến đổi ngược của nó. Phép biến đổi Fourier F(u), thu được từ hàm ngõ vào f(x), với x là biến không gian số rời rạc và u là biến tần số rời rạc trong miền tần số. Phép

biến đổi Fourier rời rạc một chiều được trình bày trong biểu thức (4.1) và phép biến đổi Fourier rời rạc 2 chiều được cho trong biểu thức (4.2).

     1 0 2 ) ( 1 ) ( M x M ux j e x f M u F với u=0,1,…,M-1 (4.1)                1 0 1 0 2 ) , ( 1 ) ( M x N y N vy M ux j e y x f MN u F với u = 0,1,…,M-1 (4.2) và v = 0,1,…,N-1

Do biến đổi Fourier phức tạp, cho nên sẽ thuận tiện hơn nếu ta dùng phổ biên độ của nó, còn được gọi là phổ Fourier, cho bởi biểu thức 4.3. Dạng phổ thường được dùng là phổ năng lượng hay phổ mật độ, bằng bình phương của phổ Fourier, cho bởi biểu thức 4.4

 2 1 2 2 ) ( ) ( | ) ( |F uR uI u (4.3) ) ( ) ( | ) ( | ) (u F u 2 R2 u I2 u P    (4.4)

Chúng ta cũng cần chú ý đến mối liên hệ giữa miền không gian và miền tần số: x M u    1 (4.5) y N v    1 (4.6)

Do các mối liên hệ này mà các mẫu có sự thay đổi cường độ (tỉ lệ thay đổi mức xám) trong ảnh có thể liên quan tới các tần số trong phép biến đổi Fourier, bởi vì tần số liên hệ trực tiếp đến tỉ lệ thay đổi.

Do đặc điểm biển số xe mô tô ở Việt Nam hầu hết là nền màu trắng, chữ màu đen, nên quá trình trích biển số trong ảnh có nền phức tạp trở nên dễ dàng hơn. Muốn trích được biển số xe trong ảnh, chúng ta phải làm thế nào đó lấy được tọa độ (trên, dưới, trái, phải ) tương ứng (top, bottom, left, right) của biển số

Để cực đại hóa xác suất tìm các hàng đi qua trong ảnh đi qua biển số xe, chúng ta tính trung bình biểu đồ cho các tần số trong khoảng [u1, u2] mà chúng ta dự đoán các ký tự trong biển số xe chiếm ưu thế. Sau khi phân tích biểu đồ ta lấy được vị trí đỉnh (top) và đáy (bottom) của biển số. Từ giá trị của top và bottom, ta có thể tách được dòng chứa biển số Khi dãy ngang có chứa biển số xe đã được tách ra, ta cần tìm các giới hạn dọc cho biển số. Để thực hiện việc này, biểu đồ cho mỗi hàng được tính và tất cả tần số được tính trung bình trên mỗi cột. Cách thực hiện cũng giống như cách làm với các hàng và thu được các giá trị cạnh trái (left), cạnh phải (right). Sau đó tiến hành cắt biển số theo giá trị (top, bottom, left, right) Giao diện chính của chương trình nhận dạng biển số xe

Chúng ta cũng cần chú ý đến mối liên hệ giữa miền không gian và miền tần số: x M u    1 (4.7) y N v    1 (4.8) Do các mối liên hệ này mà các mẫu có sự thay đổi cường độ (tỉ lệ thay đổi mức xám) trong ảnh có thể liên quan tới các tần số trong phép biến đổi Fourier, bởi vì tần số liên hệ trực tiếp đến tỉ lệ thay đổi.

Do đặc điểm biển số xe mô tô ở Việt Nam hầu hết là nền màu trắng, chữ màu đen, nên quá trình trích biển số trong ảnh có nền phức tạp trở nên dễ dàng hơn. Muốn trích được biển số xe trong ảnh, chúng ta phải làm thế nào đó lấy được tọa độ (trên, dưới, trái, phải ) tương ứng (top, bottom, left, right) của biển số

Để cực đại hóa xác suất tìm các hàng đi qua trong ảnh đi qua biển số xe, chúng ta tính trung bình biểu đồ cho các tần số trong khoảng [u1, u2] mà chúng ta dự đoán các ký tự trong biển số xe chiếm ưu thế. Sau khi phân tích biểu đồ

ta lấy được vị trí đỉnh (top) và đáy (bottom) của biển số. Từ giá trị của top và bottom, ta có thể tách được dòng chứa biển số như hình 4.1

Hình 4.1: Phân tích phổ ngang cho ảnh chứa biển số.

Hình 4.2: Tách dòng chứa biển số.

Khi dãy ngang có chứa biển số xe đã được tách ra, ta cần tìm các giới hạn dọc cho biển số. Để thực hiện việc này, biểu đồ cho mỗi hàng được tính và tất cả tần số được tính trung bình trên mỗi cột. Cách thực hiện cũng giống như cách làm với các hàng và thu được các giá trị cạnh trái (left), cạnh phải (right). Sau đó tiến hành cắt biển số theo giá trị (top, bottom, left, right) vừa nhận được như hình 4.2

Hình 4.3: Phân tích phổ ngang cho ảnh chứa biển số.

Hình 4.4: Tách biển số

Thuật toán trích biển số xe: Input: = Ảnh thu được từ camera Output: = Ảnh biển số trích được Với h: ngưỡng cao

w: ngưỡng rộng

Function fft(image) {

i=0;

thiết lập giá trị ban đầu; flag=0;

for (i=0; i<image.Height;i++) {

P=trung bình biên độ phổ của hàng pixel thứ i; //sử dụng thư viện AForge

If (P>=ngưỡng) If (flag=1) height=height+1; else { top=i; flag=1; } else if (height>=h) bottom=i; }

Tách ảnh mới: đỉnh là top, đáy là bottom=RowImage i=0;

thiết lập giá trị ban đầu; flag=0;

for (i=0; i<image.Width;i++) {

P=trung bình biên độ phổ của cột pixel thứ i; //sử dụng thư viện AForge

If (P>=ngưỡng) If (flag=1) width=width+1; else { left=i; flag=1; } else

if (width>=w)

right=i;

}

Biển số xe= ảnh mới với cạnh trái là left và cạnh phải là right. }

Hình 4.5: Một số ảnh sau khi tách được biển số.

4.2.2 Tổng kết thuật toán trích biển số

Theo thuật toán này thì kết quả nhận được là một biển số, tốn nhiều thời gian xử lý. Nếu ảnh đầu vào thỏa điều kiện như đã nêu trong phần chụp ảnh, thì thời gian xử lý sẽ nhanh do kích thước ảnh nhỏ.

4.2.3 Tiền xử lý

Sau khi nhận được ảnh biển số, thì công việc xử lý ảnh trên biển số cũng không kém phần quan trọng, vì không phải tất cả các biển số đều rõ ràng mà

nó còn tùy thuộc vào thời gian tồn tại của biển số, do ảnh hưởng của điều kiện chụp ảnh (sáng, tối,…), ảnh hưởng do đinh ốc,…

Ảnh biển số xe

Chuyển ảnh sang ảnh Gray Level:

Xử lý ảnh bằng giải thuật K-means:

Đảo ngược màu (Invert ):

Lọc Median:

Bộ lọc BlobsFiltering:

4.2.4 Thuật toán tách ký tự

Sau bước tiền xử lý ảnh, ta tiến hành tách từng ký tự đơn trong biển số. Phân tích Histogram theo chiều ngang H(r): ta đánh dấu được 2 vị trí tách dòng trên bảng số. Do mỗi dòng trên biển số có một độ cao nhất định đó là độ cao của ký tự trên bảng 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ố.

Hình 4.7: Lược đồ chiếu ngang để tách dòng

Phân tích Histogram theo chiều dọc V(c): ta sẽ đánh dấu được vị trí tách từng ký tự trên bảng số, mỗi ký tự có một độ 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 4.8: Lược đồ chiếu dọc để tách ký tự.

Thuật toán tách ký tự:

Input: Ảnh biển số trích được từ thuật toán trích biển số đã qua tiền xử lý. Output: ảnh mảng các ký tự trên biển số.

Với h: ngưỡng cao w: ngưỡng rộng

Function define_line ( image, thres)

{ i=0; c=0;

thiết lập giá trị ban đầu; flag=0;

for (i=0; i<image.Height;i++) {

P=trung bình mức xám của hàng pixel thứ i; If (P>=ngưỡng) If (flag=1) height=height+1; else { top[c]=i; flag=1; } else if (height>=h) { bottom[c]=i; c++; } }

Tách ảnh mới: đỉnh là top, đáy là bottom= RowImage }

Function define_pos( image, thres)

{ i=0;

thiết lập giá trị ban đầu; c=0;

flag=0;

for (i=0; i<image.Width;i++) {

P=trung bình mức xám của cột pixel thứ i; If (P>=ngưỡng) If (flag=1) width=width+1; else { left[c]=i; flag=1; } else if (width>=w) { right[c]=i; c++; } }

Tách ảnh ký tự ‘c’ mới với cạnh trái là left[c], cạnh phải là right[c].

Tách được từng ký tự ra khỏi bảng số ta bắt đầu chuẩn hóa các ký tự về cùng một kích thước. Trong luận văn này ta chọn kích thước chuẩn là 20 x 10. Ảnh ký tự là ảnh nhị phân với pixel trắng có giá trị tương ứng là 1, pixel đen có giá trị tương ứng là 0. Đây là dữ liệu để đưa vào mạng Neural huấn luyện.

(a) ký tự được tách ra (b) ký tự được chuẩn hóa. Hình 4.10: Chuẩn hóa ký tự về 20 x 10

Một phần của tài liệu NGHIÊN CỨU GIẢI PHÁP NHẬN DẠNG BIỂN SỐ XE TRÊN CƠ SỞ CÔNG NGHỆ XỬ LÝ ẢNH (Trang 72 - 101)