Nhận dạng vùng nhập liệu dạng số

Một phần của tài liệu Tách và nhận dạng số viết tay trong phiếu nhập dữ liệu (Trang 54)

Trên các form nhập liệu, bên cạnh các vùng đánh dấu còn có các vùng để nhập ký tự dạng số và chữ. Trong khuôn khổ luận văn này tập trung vào nhận dạng các vùng nhập dữ liệu số như hình vẽ.

Hình 2-30: Vùng nhập số

Vùng nhập bao gồm nhiều ô, mỗi ô dùng để nhập một số hoặc một ký tự. Các ô được thể hiện bởi các đường bao đen mà ta sẽ dùng các đường bao này để tách riêng từng ô. Tương tự như đã trình bày ở phần nhận dạng các ô đánh dấu, phần tách vùng chỉ cho ta một vùng tìm kiếm của vùng nhập liệu, để nhận dạng số được viết trong ô ta cần tách ra từng ô riêng biệt.

2.2.2.1 Tách các ô nhập số

Do các ô nhập số được bao quanh bởi các đường thẳng, ta sẽ sử dụng yếu tố này để tách riêng các ô.

Trước tiên vùng nhập số tìm được phải được mở rộng ra bốn phía một khoảng định trước là margin . Do các đường thẳng có kích thước nhỏ theo hướng vuông góc, nên vùng phải được mở rộng hơn để tránh các sai lệnh nhỏ do thuật toán phân vùng làm mất đường bao.

(a)

(b)

Hình 2-31: (a) vùng tìm kiếm bị mất đƣờng bao; (b) vùng tìm kiếm đƣợc mở rộng

Các bước thực hiện :

Bƣớc 1 : Tìm tất cả các đường thẳng trong vùng theo giải thuật tìm đường thẳng mờ với mật độ cho phép là 0.5.

Hình 2-32: Các đƣờng thẳng trong vùng

Bƣớc 2 : Hợp các đường thẳng ngang dài và có cùng tọa độ theo trục y

Hình 2-33: Các đƣờng thẳng sau bƣớc 2

Bƣớc 3 : Chọn cặp đường thẳng ngang có độ dài lớn nhất và khoảng cách bằng độ rộng của ô( thông tin về kích thước của ô được cung cấp bởi mẫu). Loại các đường thẳng đứng nằm ngoài phạm vi cặp đường thẳng ngang này, hợp các đường thẳng đứng còn lại có cùng tọa độ theo trục x

Hình 2-34: Các đƣờng thẳng sau bƣớc 3

Bƣớc 4 : Chọn tất cả các đường thẳng dọc nằm giữa hai đường thẳng ngang và có độ dài bằng kích thước ô. Trong các đường thẳng này, tìm một tập có số phần tử lớn nhất mà mỗi phân tử là một đường thẳng đứng có khoảng cách đến một đường khác gần nó nhất trong tập là bội số của kích thước ô.

Hình 2-35: Các đƣờng đứng xác định đƣợc sau bƣớc 4

Hình 2-36: Kết quả tách ô bởi các đƣờng thẳng bƣớc 3,4

Nhận xét : ta không sử dụng các đường thẳng đã được xác định làm mốc quy chiếu ở phần trước để tách ô vì trong một số form, khi đã có đủ số đường thẳng đứng đủ dài thì dùng các đường thẳng trong vùng nhập số làm mốc quy chiếu là không hiệu quả. Nguyên nhân là do các đường này thường ngắn sẽ gây ra nhiều sai số, bên cạnh đó các đường này lại thường có số lượng lớn, gây khó khăn trong cho việc đối chiếu.

Một nguyên nhân khác là tìm đường thẳng trên phạm vi vùng nhập số sẽ cho kết quả cao hơn trong phạm vi toàn ảnh. Do ta đã biết đây là vùng nhập số, sẽ chỉ có các đường bao và chữ số trong vùng nên ta có thể nới lỏng các tham số tìm đường thẳng để có thể tìm được đủ đường hơn và dài hơn.

2.2.2.2 Nhận dạng số trong ô nhập

Trong khuôn khổ luận văn, các ô số được xác định bao gồm các số tô theo viền của bẩy nét cơ bản được được đánh dấu bởi các đường chấm nhỏ trong ô.

Hình 2-37: Vùng nhập số trong mẫu và trong ảnh scan

Luận văn hướng tới nhận dạng form nhập dữ liệu, là loại form mà ta đã biết trước thông tin về cấu trúc, ta cũng có thể đưa ra một số quy tắc ràng buộc để tăng độ chính xác cho việc nhận dạng. Sử dụng số viết theo kiểu này là một cách áp đặt cũng như việc áp đặt khi tô các ô trong vùng đánh dấu phải tô kín và tô đậm, giúp cho nhận dạng nhanh hơn và chính xác hơn rất nhiều. Bên cạnh đó các áp đặt này không quá khó cho người điền thông tin vào form thực hiện cũng như không làm giảm thẩm mỹ của form.

Để nhận dạng số viết tay trong các ô, trước tiên cần thực hiện hai bước xử lý : khử nhiễu trong ô và tìm hình bao của ảnh

Khử nhiễu trong ô : Bên cạnh các nhiễu nền, nhiễu ngẫu nhiên sinh ra trong quá trình quét ảnh đã được xử lý đáng kể ở phần tách nhiễu và khử nền ở chương trước, một số nhiễu vẫn tồn tại trong ảnh là các nhiễu tạo bởi các đường chấm được thêm để tăng độ chính xác các khung số như trong hình vẽ. Bản chất của những nhiễu này là rời rạc và có kích thước nhỏ.

Để khử các nhiễu này trước tiên ta co vùng về kích thước như kích thước trong mẫu. Khi đó các điểm chấm trên ảnh sẽ chỉ có kích thước là 1 hoặc 2 pixel. Áp dụng thuật toán lọc trung vị [2] theo hai chiều với kích thước cửa sổ là 3, những điểm đen rời rạc có giá trị đột biến này sẽ bị đưa về giá trị nền của các điểm ảnh lân cận.

Hình 2-38: Ảnh trƣớc và sau khi lọc nhiễu (adsbygoogle = window.adsbygoogle || []).push({});

Tìm hình bao của ảnh : ban đầu lấy đường bao của ảnh là toàn bộ khung ảnh, co dần đường bao này theo cả bốn phía trên, dưới ,trái, phải cho đến khi đường bao tiếp xúc với biên của số. Tác dụng của thao tác này là nhằm loại bớt các vùng ảnh không mang thông tin, nhằm giảm thời gian tính toán của chương trình.

Hình 2-39: Hình bao xác định đƣợc trên ảnh Nhận dạng số :

Với mục đích tăng độ chính xác cho nhận dạng số, các số trong vùng nhập liệu được quy định viết theo các nét thẳng ngang và dọc được hướng dẫn bởi khung chấm đen trong ô. Cấu trúc của số trong ô rất đơn giản chỉ bao gồm 7 nét cơ bản để tạo ra 10 chữ số từ 0 đến 9. Sau đây tôi xin đưa ra một phương pháp nhận dạng dựa trên việc đánh giá các nét tạo nên các số này.

Hình 2-40: Các nét cơ bản tạo nên số dạng nét thẳng

Hình 2-41: Các số mẫu từ 0 đến 9 Bƣớc 1 : phát hiện tất cả các nét ngang trong vùng

Sử dụng thuật toán xác định đường thẳng ở trên. Tuy nhiên do khu vực số có một số đặc điểm khác với ảnh tổng quát ban đầu như : kích thước rất nhỏ, không bị lẫn bởi các đối tượng không mong muốn khác, nên thuật toán xác định đường cần phải có sự thay đổi.

Gọi độ rộng của hình bao là W, ngưỡng của các blackrun tạo nên đường thẳng được đặt là 1

3W .

Tỉ lệ giữa độ dài và độ cao của đường phải giảm bớt do đường khá ngắn trong khi đó nét của số có thể đậm. Qua thực nghiệm, một tỉ lệ hợp lý được xác định là 4.

Nếu tìm được đường nằm ngang nghĩa là ở đó có một nét. Để đường này có độ dài nhất có thể, đối với mỗi tọa độ x( 0 ≤ x < W) trong khoảng ymin và ymax giới hạn bởi đường thẳng tìm được có một điểm đen thì coi đó là điểm đen của đường.

Hình 2-42: Các nét ngang Bƣớc 2 : Phát hiện tất cả các nét đứng

Nếu tồn tại nét ngang ở giữa thì tìm đường nét đứng trên hai nửa của số được chia bởi nét ngang này theo cách tương tự như trên. Nếu không, coi như tồn tại một nét ngang ở tọa độ y = 1

2Hvới H là chiều cao của hình bao.

Hình 2-43: Các nét đứng

Bƣớc 3: Tìm độ dài giả địnhLeni0 i 9 của các số từ 0 đến 9 nếu được viết trong hình bao này

Ví dụ : nếu số 1 được viết trong hình bao( kích thước WH) do số 1 tạo bởi hai nét 6 và 7(hình 2-41) nên Len1H. Nếu số 2 được viết, do số 2 được tạo bởi 3 nét ngang 1,2,3 và hai nét đứng 5 và 6 nên Len2   3 W H

Bƣớc 4 : Xác định số dựa vào mức độ hoàn thiện nét của các nét tìm được so với độ dài giả định.

Các nét tìm được trong hình bao có độ dài lần lượt là stroke stroke1, 2,...,stroke7( những nét nào không có thì có độ dài là 0). Tổng độ dài của các nét

7 1 sum k k l stroke    Công thức 2-14 Tập các nét tạo nên số i(0 i 9) là Si k:1 k 7

Độ dài của các nét trong hình để tạo nên số i là

i i j j S l stroke    Công thức 2-15

Độ dài của các nét lỗi

i sum i

ell

Công thức 2-16

Các nét lỗi là các nét làm cho số trong hình khác với số i, nét lỗi càng nhiều thì càng làm cho sai biệt lớn. Do đó để đánh giá ta phải nhân độ dài các nét lỗi với một hệ số âm

Đánh giá số trong hình bao so với số i dựa trên công thức

i i i l e Len    Công thức 2-17

Xét i với các giá trị từ 0 đến 9, kết quả nhận dạng là giá trị i làm cho biểu thức trên có giá trị là lớn nhất. (adsbygoogle = window.adsbygoogle || []).push({});

Nhận xét : phương pháp đề xuất đơn giản và dễ cài đặt. Các số được điền cũng không cần quá thẳng hoặc bám sát vào khung hướng dẫn được in sẵn trong ô. Do đó người nhập form có thể dễ dàng thực hiện mà không cần chỉ dẫn nhiều.

Thực nghiệm cho thấy độ chính xác của phương pháp này là rất cao. Tuy có nhược điểm là không nhận dạng được số viết tay thông thường nhưng với những ưu điểm đã nêu, các ô số dạng nét thẳng vẫn có thể được áp dụng rộng rãi vào các form nhập liệu trên thực tế.

CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG TÍCH HỢP

Trong các chương trước, tôi đã trình bày các bước trong quy trình nhận dạng ảnh bao gồm tiền xử lý, tách vùng, nhận dạng. Một vấn đề xuyên suốt toàn bộ luận văn đó là nhận dạng ảnh được thực hiện dựa trên các thông tin đã biết trước về mẫu sử dụng để tạo ra ảnh. Các thông tin này cần được lưu trữ, sắp xếp một cách hợp lý nhằm hỗ trợ cho nhận dạng và quản lý.

Khác với các hệ thống nhận dạng ảnh khác như hệ thống chấm thi trắc nghiệm, hệ thống bầu cử,… Những hệ thống này là những hệ thống gắn chặt với một nghiệp vụ cụ thể và thông thường chỉ có một hặc vài loại phiếu nhập. Các thông tin trên phiếu nhập được liên kết với các dữ liệu có ngữ nghĩa trong cơ sở dữ liệu và được sử dụng để thực hiện các chức năng của hệ thống như phân loại sinh viên, lập báo cáo,... Phiếu nhập trong những hệ thống này hoàn toàn có thể được thay thể bởi một form trong chương trình để nhập thông tin vào từ máy tính thay vì điền vào phiếu trên giấy sau đó nhận dạng.

Hệ quản trị phiếu nhập được xây dựng ở đây là một chương trình trung gian. Là phần chỉ liên quan đến xử lý ảnh được tách riêng ra khỏi các hệ thống trên. Trong hệ thống này các mẫu phiếu được thiết kế và nhận dạng để được sử dụng trong các ứng dụng độc lập khác. Dữ liệu nhận dạng tương ứng cũng được đưa vào cơ sở dữ liệu của các ứng dụng đó. Hệ quản trị phiếu không nhằm mục đích quản lý các dữ liệu nhận dạng được mà chỉ quản lý các thông tin dùng để định nghĩa và hỗ trợ cho nhận dạng.

Bên cạnh quản trị phiếu nhập, hệ thống hoàn thiện cũng cần phải có một quy trình xử lý ảnh tích hợp các giải pháp đã trình bày ở các chương 2, 3 bắt đầu từ khi nhận được ảnh cho đến khi có được kết quả nhận dạng cuối cùng.

Chương xây dựng hệ thống tích hợp sẽ tập trung vào các chức năng : quản trị phiếu nhập( thiết kế form, lưu trữ và quản lý form), hỗ trợ nhận dạng form.

Một phần của tài liệu Tách và nhận dạng số viết tay trong phiếu nhập dữ liệu (Trang 54)