Với phư ơ ng pháp nhận dạng đã đề xuất ở phần trên, cấu trúc d ữ liệu thích hợp để lưu các kết quả nhận dạng là cấu trúc cây đa phân. T ro n g đó, mỗi nút lưu thô ng tin về kết quả nhận dạng được từ m ột vị trí cắt đến các vị trí cắt có thể có ngay sau đó bao gồm: Kí tự nhận dạng được và danh sách các nút con, các kí tự lưu ở nút con là các kí tự có thể nhận dạng được từ phần ảnh còn lại. c ấ u trúc dữ liệu của m ột nút được m ô tả như sau
struct CNode {
CNode *Parent;
char c h [2];
CTypedPtrList <CNode*, CPtrList> Listchild;
T rong đó: P arent là con trỏ đến nút cha, L i s t C h i l d là danh sách các nút con, c h là m ột m ảng gồm hai phần tử dù ng để lưu các kí tự nhận dạn g đượ c từ m ột ảnh đầu vào. M ản g ch được sử dụng với mực đích giải quyết trư ờng hợp nhập nhằng kí tự (một kí tự v ừ a giống kí tự a v ừ a giống kí tự b) n h ư đã đề cập ở p h ầ n 2.1.2. T hông thường, ta chỉ sử dụng đến ph ần tử đầu tiên của m ản g (ch[0] ), trong trư ờ n g hợp có nhập nh ằng thì cả hai kí tự sẽ được chọn và thay vì phải tạo th ê m nh án h m ới cho cây, ta sẽ lưu chúng vào m ảng ch. Sau khi tất cả các cách p h â n đoạn từ đã đượ c xét, ta sẽ tiến hành ghép lại các kí tự để tạo thành từ. C ác kí tự được ghép theo từng nhánh của cây: N ú t cha sẽ ghép nối với nút con trực tiếp của m ình, n ế u n út cha có n
con thì sẽ có n nhánh tương ứng và sẽ ghép thành n từ. T ron g trư ờ n g hợp m ộ t nút trèn cây có hai kí tự thì chúng sẽ được xem n h ư hai nhánh của nút đó.
Nguyễn Thị Thanh Tân Trang - 48 - Luận vãn thạc sĩ
Ví dụ trên Mình 2.5 sẽ thê hiện m ột cách cụ thể hơn quá trình lưu kết quả nhận dạng vào cây.
Hình a l , ảnh đầu vào được cắt lần thứ nhất tại hai vị trí. Với vị trí cắt thứ nhất, nhận dạng được kí tự T , với vị trí cat thứ hai nhận dạng được chữ r. Hình a2, thể hiện cây kết quả tư ơ n g ứng.
a2) Cây kết quà tương ứng a l ) Lần cắt đầu tiên
H ình b l , ph ần ảnh còn lại sau lần cắt thứ nhất tại vị trí 1 (vị trí cắt tươ n g ứng với chữ T ) , sẽ đ ư ợ c cắt tại ba vị trí với ba kí tự nhận dạng được tươ ng ứ n g là T , ‘u ’ và ‘w \ H ình b2, thể cây kết quả tươ ng ứng
b l) Lần cắt thứ hai
H ìn h c, thể hiện hình ảnh cụ thể của cây lưu trữ ở trong
b2) Cây kết quả tương ứng
bộ nhớ
Nguvễn Thị Thanh Tân Trang - 49 - Luận văn thạc sĩ
Nul l
c) Hình ảnh cụ thể của cây lưu trữ ở trong bộ nhớ
Hình 2.5: Quá trình lưu trữ các kết quả nhận dạng
Ở thời điểm ban đầu, nút gốc (root) của cây được khởi tạo với các giá trị:
(P arent = N U L L , ch - (Ị) (kí tự rỗng), ListC hild = N U L L ).
Sau lần cắt th ứ nhất, cây được m ờ rộng với hai nút (được gọi tên là n o d e l và
node2), với các giá trị lần lượt là:
( n o d e l - ^ P a r e n t = root, n o d e l- > c h = i, n o d e l-> L is tC h ild = N Ư L L )
( n o d e 2 - ^ - P a r e n t = r o o t , n o d e l - > c h = r, n o d e l —» L i s t C h i l d = N U L L )
Lúc này: ro o t-» L istC h ild = ( n o d e l , node2).
Khi thực hiện đệ qui với phần ảnh còn lại sau lần cắt thứ nhất tại vị trí 1, đỉnh n o d e l của cây sẽ đ ư ợ c m ở rộng với ba nút (n o d e l 1, n o d e l2 và n o d e ]3), với các giá trị:
(n od e 11 -> P aren t = node 1, node 11 —»ch = i, nod e 11 -» L istC h ild = N Ư L L )
( n o d e l2 - > P a r e n t = n o d e l , n o d e l 2 - > c h = u, n o d e l l-> L is tC h ild = N Ư L L )
(n ode 11 -^ P a r e n t = node 1, node 11 - » c h = w, no de 11 -> L istC h ild = N U L L )
K h i đó: n o d e l- ^ L is t C h ild = (n o d e l 1, n o d e l 2 , n o d e l3 )
Nguyễn Thị Thanh Tân Trang - 50 - Luận văn thạc sĩ