Các bước thực hiện thuật toán cắt từ

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nhận dạng chữ viết tay tiếng Việt trên các thiết bị cầm tay Luận văn ThS. Công nghệ thông tin 1.01.10 (Trang 57)

Bước 2: Ước lượng điểm cắt

Bước này sẽ gán các điểm cắt ứng cử viên. Thuật toán xác định các điểm cắt ứng viên được sử dụng là thuật toán mẹo. Thuật toán mẹo sẽ xác định các điểm tại đó có sự thay đổi đột ngột histogram theo chiều thẳng đứng.

Bước 3: Dùng các quy tắc để kiểm chứng các điểm ứng cử viên

Các quy tắc sau đây đựa trên đặc trưng của các ký tự để kiểm chứng các điểm cắt ứng viên.

Quy tắc 1: Xác định thòng lòng và xóa các điểm cắt ứng viên nằm trong thòng lọng, và đánh dấu một điểm cắt ứng viên tại cuối thòng lọng.

Hình 3.9. Các điểm cắt ứng viên thay đổi khi áp dụng quy tắc 1 Hình 3.8. Minh họa các đường baseline Hình 3.8. Minh họa các đường baseline

Quy tắc 2: Xác định các hình mũ và xóa các điểm cắt nằm trong các đường viền hình mũ và thêm điểm cắt ứng viên vào điểm cuối của của hình mũ. Các hình mũ có dạng , . ( Xem hình 3.10)

Quy tắc 3: Đối với từng điểm cắt, nếu khoảng cách trung bình giữa điểm trước điểm cắt đang xét và điểm trước và sau nó, nếu nhỏ hơn khoảng cách trung bình của một ký tự thì loại bỏ điểm cắt đó thông qua hỗ trợ của mạng neural.

Quy tắc 4: Thêm vào các điểm cắt bị thiếu, các điểm cắt bị thiếu được xác định bằng cách đo khoảng cách giữa hai điểm cắt. Nếu khoảng cách giữa hai điểm cắt lớn hơn khoảng cách trung bình của hai điểm cắt liền nhau thì tìm có thể giữa hai điểm cắt đó còn thiếu một điểm cắt.

3.2.4Sử dụng thông tin phụ để tăng độ chính xác

Trong nhận dạng chữ viết tay trực tuyến, ta thu được nhiều thông tin về ký tự hơn so với nhận dạng chữ viết tay offline như hướng viết, v.v... Riêng đối với tiếng việt, ta sẽ sử dụng các dấu trong tiếng việt để kiểm chứng và quyết định điểm cắt tại vị trí nào.

Trong tiếng việt, có tất cả 5 dấu “dấu nặng”, “dấu sắc”, “dấu huyền”, “dấu hỏi”, “dấu ngã”. Các dấu này đi kèm với một số ký tự nhất định. Bảng sau đây liệt các ký tự đi với 5 dấu trên.

Dấu Các ký tự có

đấu này

Đặc điểm

Dấu hỏi(?) a,e,i,y,o,u Ở trên ký tự chứa nó Dấu sắc “´” a,e,i,y,o,u Ở trên ký tự chứa nó Dấu nặng “.” a,e,i,y,o,u Ở dưới ký tự chứa nó Dấu huyền “`” a,e,i,y,o,u Ở trên ký tự chứa nó Dấu ngã “~” a,e,i,y,o,u Ở trên ký tự chứa nó

Ngoài các dấu kể trên, có một số ký tự muốn viết được phải dùng hai nét bút, nét bút thứ 2 có các đặc trưng dễ phát hiện như có ít điểm ( Ví dụ là dấu “.”) hoặc là một nét bút thằng (Ví dụ như dấu gạch ngang khi viết chữ “t”). Bảng sau đây liệt kê đặc trưng của các ký tự đặc biệt.

Ký tự Đặc trưng

i Được tạo thành bởi nét bút thứ hai là dấu “.” t Được tạo thành bởi nét bút thứ hai là một nét

gạch ngang.

3.2.5Kết hợp cắt từ và nhận dạng

Để tăng kết quả nhận dạng, ta sẽ tiến hành cắt từ và tìm ra các điểm cắt ứng cử viên sau đó cắt từ theo các điểm cắt ứng cử viên đó và đem nhận dạng, trong tất cả các trường hợp cắt(mỗi trường hợp cắt được coi như là có sự thay đổi của các điểm cắt ứng viên so với các trường hợp cắt khác) nêu trường hợp nào có tỉ lệ lỗi nhỏ nhất khi nhận dạng thì đó chính là kết quả nhận dạng.

Nếu kết hợp với từ điển, sau mỗi trường hợp cắt, ta nhận dạng và đánh giá tỉ lệ lỗi, ngoài ra còn kiểm tra từ nhận dạng được có nằm trong từ điển hay không. Sau đây là mô hình kết hợp các phương pháp cắt từ và nhận dạng[13].

Với mỗi từ N i=1 i<=N Y Sử dụng thuật toán tách từ thứ i để chia từ thành các khối mới Nhận dạng và đánh giá tỉ lệ lỗi cho cả từ i=i+1 Nhận kết quả nhận dạng tốt nhất từ các thuật toán cắt N Hình 3.12. Sơ đồ kết hợp giữa tách từ và nhận dạng

3.3.Trích chọn đặc trƣng

3.3.1Hƣớng viết

Hướng viết cục bộ tại một điểm (x(t),y(t)) được tính bằng cách sử dụng hàm cosin và sin: _�_ Cos (t) = ) ( ) ( t s t x   Và Cos (t) = ) ( ) ( t s t x   Trong đó: ) ( ) ( ) (t x2 t y2 t s     ) 1 ( ) 1 ( ) (     x t x t x t ) 1 ( ) 1 ( ) (     y t y t y t Hình 3.13. Xác định hướng viết

3.3.2Xác định độ cong

Độ cong tại điểm (x(t),y(t)) được tính bởi hàm cosine và hàm sine sử dụng các điểm (x(t-2),y(t-2)), (x(t),y(t)), (x(t+2),y(t+2)). Hàm sine và cosine được tính như sau:

Cos (t) = cos (t-1) * cons (t+1) + sin  (t-1) * sin (t+1) Và

Cos  (t) = cos (t-1) * sin (t+1) – sin (t-1) * cos (t+1)

3.4.Pen-up/pen-down

Đặc trưng Pen-up/Pen-down chỉ ra khi nào bút viết tiếp xúc với bàn viết hoặc không. Hai đặc trưng này cho biết thông tin bắt đầu và kết thúc của một nét bút. Hai đặc trưng này sẽ được thu nhận nhờ hỗ trợ của ngôn ngữ lập trình.

3.5.Lƣợng tử hóa độ nghiêng

Đặc trưng này liên quan đến hướng viết của người viết. Để lượng tử hoá độ nghiêng, trước tiên ta tính góc nghiêng giữa hai điểm pi và pi+1 theo công thức:[4]

) ( tan 1 1 1 i i i i i x x y y       

Góc nghiêng sau khi được tính sẽ được lượng tử thành 8 mức. Gọi Q là tập các góc nghiêng đã được lượng tử thành các mức tương ứng với mỗi điểm pi

Q = {qi} trong đó I = 1..N và qi = {0,..,7}

3.6.Xác định các điểm trội

Các điểm trội của một ký tự P là các điểm mà giá trị độ nghiêng đã được lượng tử hóa thay đổi một cách đáng kể. Điểm pi của P được gọi là điểm trội nếu thỏa mãn hai điều kiện sau:

(qi+1 – qi + 8 ) % 8  FI và (qi – qi-1 + 8 ) % 8  FI

Trong đó FI là giá trị ngưỡng cố định có giá trị từ 0 đến 4. % là phép toán lấy phần dư. Hai điểm đầu và điểm cuối của P được mặc định là hai điểm trội.

Khi giá trị của FI tăng lên thì cấu trúc của P cũng trở nên thô hơn và ngược lại. Hình sau đây minh họa cấu trúc của một ký tự khi giá trị FI thay đổi:

Hình 3.15. Các điểm trội của ký tự khi các giá trị FI thay đổi. (a) FI =0, (b) FI = 1, (c)FI = 2 (c)FI = 2

CHƢƠNG 4. MỘT SỐ PHƢƠNG PHÁP NHẬN DẠNG

4.1.Đối sánh nhị phân

Phương pháp này sử dụng các đặt trưng của ký tự để đối sánh như số nét bút tạo thành ký tự, ký tự có nét bút trễ hay không hoặc chuyển ký tự về dạng biểu diễn như ảnh nhị phân để so sánh.

Một số ký tự chỉ có một nét bút là “C,e,L,v.v..” trong khi đó một số ký tự khác có thể gồm 2 nét bút như “X,Tv.v..”, các ký tự có thể gồm 3 nét bút là “H,K”.

Tọa độ các điểm (x,y) thu được từ thiết bị số hóa

Chuẩn hóa kích thước và căn giữa Chuyển thành ma trận nhị phân Phân vùng và trích chọn đặc trưng Đối sánh mẫu

Chuẩn hóa kích thước và căn giữa đảm bảo ký tự có cùng kích thước giống nhau. Tất cả các ký tự đều đưa về kích thước n x n.

Khi chuyển các nét bút về dạng nhị phân, ta sẽ thu được một ma trận nhị phân M[n,n] trong đó:

Giá trị n thường là bội số của hai n có thể bằng 16,32,64,128,256. Nếu n càng lớn, mẫu biểu diễn các ký tự sẽ có giá trị khác nhau càng lớn nhưng sẽ tăng kích thước bộ nhớ lưu trữ mẫu.

Ma trận nhị phân sẽ được chia thành các khối, mỗi khối sẽ có kích thước 2x2 hoặc 4x4 tùy vào kích thước của n. Với mỗi khối, ta đếm tổng số điểm đen trên khối đó. Nếu khối đó có số điểm đen  2 thì giá trị của khối đó là 1. Ngược lại giá trị của khối đó có giá trị bằng 0.

Lấy giá trị của tất cả các khối theo thứ tư từ trái qua phải và từ trên xuống dưới ta được một dãy nhị phân. Dãy nhị phân này sẽ được so sánh với các dãy nhị phân được gán nhãn có trong cơ sở dữ liệu mẫu. Nếu mẫu nào trùng với với chuỗi nhị phân cần nhận dạng hoặc có sai lệch it nhất thì nhãn cua nó chính là kết quả nhận dạng.

Phương pháp nhận dạng này dễ cài đặt và tuy nhiên độ chính xác không cao nhất là khi kích thước n chọn nhỏ và số lượng mẫu yêu cầu cho mỗi ký tự là nhiều.

4.2.Warping thời gian động

Kỹ thuật Dynamic Time Warping(DTW) là kỹ thuật so sánh đường cong di chuyển các tọa độ của nét bút online, được thực hiện bằng cách so sách các điểm của các đường cong với nhau. Khoảng cách giữa tất cả các cặp điểm được tính tổng và tính trung bình. Hình sau đây biểu diễn kết quả đối sánh hai đường cong bằng 3 kỹ thuật đối sánh khác nhau.

Hình 4.3. Các kỹ thuật đối sánh đường cong. Các đường cong (a) và (b) được đối sánh với nhau sử dụng (c) Đối sánh tuyến tính(Tất cả các điểm i của được đối sánh với nhau sử dụng (c) Đối sánh tuyến tính(Tất cả các điểm i của đường cong a được đối sánh với điểm i của đường cong b) (d) Đối sánh hoàn toàn(tất cả các điểm của đường cong a được đối sánh với điểm gần nhất trong đường cong b) (e) Đối sách sử dụng DTW.

Giả sử hai đường cong P và Q được biểu diễn dưới dạng P(p1,p2,..,pN) và Q(q1,q2,…,qM). Hai điểm pi và qj chỉ được đối sánh với nhau nếu nó thỏa mãn 3 điều kiện

- Điều kiện về đường biên: pi và pj chỉ được đối sánh nếu nó là điểm đầu tiên hoặc là điểm cuối cùng cùng P và Q.

- Điều kiện về sự kiện: pi và pj chỉ được đối sánh nếu nó là điểm có cùng sự kiện Pendown hoặc Penup.

- Điều kiện về tính liên tục: pi và pj chỉ được đối sánh nếu chúng thỏa mãn điều kiện sau đây[17]

Trong đó c là một hằng số có giá trị nằm trong khoảng [0,1]. M,N là số điểm biểu diễn đường cong cần đối sánh và đường cong mẫu.

Để giảm bớt các điểm cần lưu trữ trong tập dữ liệu mẫu, ta dùng hai kỹ thuật tính trung bình để đưa mẫu về một dạng cấu trúc có cùng số điểm.

Thuật toán lấy mẫu và tính trung bình(Resample and average) được thực hiện với mỗi điểm pi

4.3.Đối sánh chuỗi

Các phương pháp đối sánh bằng cách tính khoảng cách giữa ký tự mẫu và ký tự cần nhận dạng không phù hợp khi sử dụng nhận dạng ảnh ký tự khi nó bị méo mó, biến dạng về hình dạng, kích thước hoặc hướng..

Kỹ thuật đối sánh chuỗi được thực hiện bằng cách biểu diễn các ký tự dưới dạng chuỗi các ký tự. Độ dài của chuỗi ký tự khác nhau tùy theo kích thước và

hình dáng của các ký tự. Việc phân loại các ký tự được thực hiện bằng các tìm khoảng cách nhỏ nhất hay độ tương đồng lớn nhất giữa chuỗi đối sánh được kéo dãn hay nén với chuỗi mẫu. Kỹ thuật này được gọi là tìm kiếm hàng xóm gần nhất.

4.3.1Trích chọn chuỗi nét bút liền kề(stroke sequence strings)

Trong phương pháp này, mỗi lần lấy mẫu từ một nét bút có độ dài là 8 pixels(Được gọi là nét bút mẫu). Mỗi nét bút mẫu sẽ có 8 hướng được ký hiệu bằng các ký tự {→,↗,↑,↖,←, ↙,↓,↘}. Các nét bút liền kề nhau sẽ được biểu diễn bằng một cặp dấu {}. Mỗi một ký tự biểu diễn hướng của nét bút mẫu được đánh số tương ứng từ 0 đến 7.

4.3.2Đối sánh chuỗi nét bút liền kề

Gọi di,j là khoảng cách giữa nét bút mẫu của ký tự ai và nét bút mẫu thứ j của ký tự aj, di,j được tính như sau[20]:

di,j được coi như là số bước ít nhất để chuyển nét bút mẫu của ký tự ai cùng hướng với nét bút mẫu j của ký tự a. Ví dụ khoảng cách giữa nét bút mẫu ↑ và

Hình 4.5. Hướng viết được biểu diễn tương ứng với các giá trị nguyên

nét bút mẫu → là 2 vì phải cần 2 bước di chuyển để chuyển thành nét bút mẫu →.

Kỹ thuật đối sánh chuỗi nét bút liền kề sẽ tìm khoảng cách nhỏ nhất giữa hai chuỗi nét bút liền kề bằng cách chuyển hướng, chèn hoặc xóa các nét bút mẫu. Xét 2 mẫu ký tự “A” như sau.

Các nét bút mẫu sẽ được phép chuyển hướng, chèn hoặc xóa. Chi phí cho phép chuyển hướng là di,j. Chi phí cho phép chèn và xóa là 2. Khoảng cách giữa hai chuỗi được tính bằng cách lập trình động theo công thức.

Khoảng cách giữa hai chuỗi a1 và a2 được minh họa bằng bảng tính khoảng cách cho hai nét bút đầu tiên. Chuỗi đầu tiên sẽ được biểu diễn ở phía trên của bảng, chuỗi thứ hai sẽ được biểu diễn ở phía bên trái nhất của bảng. Các nét bút mẫu ở phía trên và phía trái của bảng được ký hiệu tương ứng là ti và lj. Các giá trị khởi tạo cho hàng đầu tiên và cột đầu tiên của bảng là T[0,j] = c x j và T[i,0] = c x i. Bây giờ T[i,j] được tính theo công thức.

Khoảng cách giữa hai nét bút đầu tiên a1 và a2 ở trên ví dụ trên là 10.

Trong tiếng việt, có nhiều ký tự được viết bởi nhiều nét bút ví dụ như các ký tự “đ”, “H”, “A” v.v... Khi tìm khoảng cách ngắn nhất giữa hai ký tự này ta phải quan tâm đến kích thước và điểm xuất phát của ký tự. Khoảng cách cuối cùng giữa hai ký tự được tính bằng cách công tất cả khoảng cách giữa các cặp chuỗi gần nhau nhất.

Ví dụ, ký tự “A” được viết theo các cách sau đây.

Ngoài cách dựa vào sự khác biệt của hướng viết, ta có thể đối sánh dựa khoảng cách giữa các điểm. Cho trước một dãy các sự kiện được sắp tương ứng giữa hai ký tự với nhau, khoảng cách dE(i,j) giữa một cặp các sự kiện ei

A = (xi A ,yi A ,i A) từ ký tự A và ejB = (xj B ,yj B , i B) từ B. Ba hàm sau dùng để tính ba độ đo giữa các cặp sự kiện.

dx(i,j) = |(xi A -x1 A ) – (xj B – x1 B )| dy(i,j) = |(yiA-y1A) – (yjB – y1B)| Hình 4.7. Các cách viết ký tự “A”

d(i,j) = Min(|(i A -j B ), 360 - |(i A – j B )|) dE(i,j) = αdx(i,j) + βdy(i,j) + γd(i,j)

Trong đó  nằm trong khoảng (0,360) và α, β, γ là các trọng số của tổ hợp tuyến tính. Các trọng số này được tính toán từ thực nghiệm

Khoảng cách giữa hai ký tự là tổng khoảng cách giữa các cặp điểm tương ứng từ hai chuỗi. Các ký tự được tạo thành từ nhiều nét bút khác nhau được đưa về một nét bút bằng cách nối điểm cuối của nét bút hiện tại với điểm đầu của nét bút tiếp theo và như vậy tất cả các ký tự đều được biểu diễn bởi một chuỗi đơn.

Mỗi một sự kiện của chuỗi thứ nhất chỉ được sắp tương ứng với một sự kiện của chuỗi thứ hai. Việc liên kết luân phiên này được thực hiện dựa trên hai phương pháp sau:

 Bỏ qua sự kiện ở chuỗi thứ nhất nếu như thấy rằng liên kết với chuỗi thứ hai là sai

 Bỏ qua sự kiện ở chuỗi thứ hai nếu như thấy rằng liên kết với sự kiện thứ nhất không có.

Trong hai trường hợp này, ta tăng giá trị tổng khoảng cách giữa hai chuỗi lên một giá trị nào đó được gọi là giá trị phạt sai hoặc giá trị bị khuyết. Các giá trị được cộng thêm vào được coi như là giá trị ngưỡng giữa hai sự kiện được coi

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nhận dạng chữ viết tay tiếng Việt trên các thiết bị cầm tay Luận văn ThS. Công nghệ thông tin 1.01.10 (Trang 57)

Tải bản đầy đủ (PDF)

(100 trang)