Với p h ư ơ n g pháp nhận dạng và cấu trúc dữ liệu đã thể hiện ở trên, th u ậ t toán nhận dạng từ đ ư ợ c m ô tả m ột cách chi tiết h ơ n n h ư sau:
INPUT: Ảnh của từ cần nhận dạng:WordIMG
O U TPU T : Danh sách các từ ímg cử viên có khả năng lựa chọn (các từ nhận
d ạ n g đ ư ợ c t ừ c á c c á c h p h â n đ o ạ n k h á c n h a u ) ;
PR O C ESS:
B ư ớ c 1: Khởi tạo cây lưu trữ, với nút gổc (root) chứa kí tự <ị>;
Bưó'c 2: Gọi thực hiện thủ tục nhận dạng từ đệ qui (W ordR ecognition()) với các tham sô W ordR ecognition(N ull, root, WordIMG);
B ư ớ c 3: Tiến hành ghép các kí tự theo từng nhánh của cây lưu trữ, mỗi nhánh trên cây sẽ
c h o ta m ộ t t ừ ứ n g c ử v i ê n ;
Bưó'c 4: Kết quả <— từ có khả năng lựa chọn cao nhất.
Bưó'c 5: return kết quả;
Thuật toán 2-6: Thuật toán nhận dạng từ
Nguyễn Thị Thanh Tân Trang - 53 - Luận văn thạc sĩ
T ro n g đó thủ tục nhận dạng từ W o r d R e c o g n itio n ( .) được cài đặt đệ qui như sau:
W o r d R e c o g n i t i o n (CNode *pParent, CNode *node, IMAGE w o r d I M G ) { if (stop) return;
//Lưu nút hiện tại (node) vào danh sách các nút con của nút //cha (pParent) trên cây cấu trúc
I n s e r t N o d e ( p P a r e n t , n o d e ) ;
if (sizeof(wordIMG) <= 0) return ;
//Tìm kiếm tất cả các vị tri cắt có thể trên ảnh wordlMG, Kết quả lưu vào danh sách ListPos
F i n d _ A l l _ A l t e r n a t i v e _ C u t _ P o s (wordIMG, ListPos)
//Xét tất cả các vị trí cắt đã luu trong ListPos một cách đệ //qui. vị tri hiện tại là CurrentPos
For each a l t e r n a t i v e cut pos e ListPos{
//Cắt từ đầu ảnh đến vị tri CurrentPos
c h a r l M G = C u t A t P o s ( C u r e n t P o s ) ;
//Tính phần ảnh còn lại
r e s t IMG = w o r d I M G - c h a r IMG
//Gọi chức năng nhận dạng kí tự với ảnh đầu vào là charlMG.
//Ki tự nhận dạng được lưu vào mảng CharArray, số ki tự nhận
/ / d ạ n g đ ư ợ c = c o u n t
if (CharRecognition(charlMG, charArray, c o u n t ) = = T R U E ) {
// Kiểm tra sự hợp lý của ki tự nhận dạng được
if ( C h e c k V a l i d C h a r ( c h a r Ầ r r a y ) = = F A L S E ) {
/ /Remove nhánh cây tương ứng
R e m o v e _ t h i s _ b r a n d _ o f _ t h e _ t r e e 0 ; s t o p = T R U E ; } n e w N o d e = new C N o d e ; newNod.e->ch = charArray; n e w N o d e - > p a r e n t = node;
//Thực hiện một cách đệ qui với phần ảnh còn lại
W o r d R e c o g n i t i o n ( n o d e , newNode, restIMG) Ịelse stop = TRUE ;
}//end for }//end function
Thuật toán 2-7: Thủ tục nhận dạng từ (WordRecognition)
Nguyền Thị Thanh Tân Trang - 54 - Luận văn thạc sĩ
Để thấy đượ c q u á trình hoạt đ ộ n g cùa m ô hình nhận dạn g m ột c ách cụ thể hon, ch ún g ta sẽ x em xét ví dụ trên Hình 2.7. V ới đầu v à o là ảnh của từ “ riv e r” .
Kết qu ả sau inỗi bước đệ qui c ủa thu ật toán đ ư ợ c thể hiện lần lượt trên các hình từ hình a —» hình u
< r ©
b)
c)
Nguyễn Thị Thanh Tàn Trang - 55 - Luận văn thạc sĩ
8)
Nsuyễn Thị Thanh Tân Trang - 56 - Luận văn thạc sĩ
0
j)
Niiuyễn Thị Thanh Tân Trang - 57 - Luận văn thạc sĩ
Nguyễn Thị Thanh Tân Trang - 58 - Luận văn thạc sĩ
Nguyễn Thị Thanh Tân Trang - 59 - Luận văn thạc sĩ
Hình 2.7: Kết quả các bưóc đệ qui thuật toán nhận dạng từ
T ro n g đó:
■ Kí hiệu ‘# ’ thể hiện các kí tự không nhận dạng được
■ Kí hiệu o thể hiện trạng thái kết thúc đồng thời là m ột nút lá trên cây.
Sau khi thực hiện x on g bước 4 (bước ghép các kí tự trên từng nhánh c ủa cây), ta thu được m ột danh sách các từ ứn g cử viên sau đây:
iwrr rurr rw er
iuirr iuver iwier
river ruier
ở bước 5 (bước chọn từ), thuật toán chọn từ k iểm tra v à nh ận thấy chỉ có từ “riv e r” là có trong từ điển vì vậy nó sẽ tiến hành tính xác suất xuất hiện của tất cả các từ ứng cử viên. K ết quả là từ “river” có xác suất xuất hiện cao nhất, vì v ậ y từ nà y sẽ được chọn. Đ ầu ra của thuật toán là từ “riv e r” .
Nguyễn Thị Thanh Tân Trano - 60 - Luận văn thạc sĩ