Cấu trúc dữ liệu sử dụng trong quá trình nhận dạng

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phương pháp nhận dạng chữ viết tay tiếng Việt dựa trên mô hình mạng nơron Luận văn ThS. Công nghệ thông tin 1.01.10 (Trang 66 - 68)

2.4. Quá trình nhận dạng từ

2.4.2. Cấu trúc dữ liệu sử dụng trong quá trình nhận dạng

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. Trong đó, 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 ch[2];

CTypedPtrList <CNode*, CPtrList> ListChild; };

Trong đó: Parent là con trỏ đến nút cha, ListChild là danh sách các nút con, ch

là một mảng gồm hai phần tử dùng để lưu các ký tự nhận dạng được từ một ảnh đầu vào. Mảng 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) như đã đề cập ở phần 2.1.2. Thông thường, ta chỉ sử dụng đến phần từ đầu tiên của mảng (ch[0]), trong trường 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ánh 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 phâ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ừ. Trong trường hợp một nút trên cây có hai ký tự thì chúng sẽ được xem như hai nhánh của nút đó.

Ví dụ trên Hình 2.4 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 a1, ảnh đầu vào được cắt lần thứ nhất tới ba vị trí. Với vị trí cắt thứ nhất, nhận dạng được ký tự „r‟, với vị trí cắt thứ hai nhận dạng được chữ n, với vị trí thứ 3 ta được chữ m. Hình a2, thể hiện cây kết quả tương ứng.

# m n r r n m r n

a1, lần cắt đầu tiên a2, cây kết quả tương ng

Hình 2.4: 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ị: (Parent = NULL, ch =  (kí tự rỗng), ListChild = NULL).

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à node1

node2), với các giá trị lần lượt là:

(node1.Parent = root, node1.ch = i, node1.ListChild = NULL) (node2.Parent = root, node1.ch = r, node1.ListChild = NULL)

Lúc này: root.ListChild = (node1, node2).

Khi thực hiện đệ quy với phần ảnh còn lại sau lần cắt thứ nhất tại vị trí 1, đỉnh node1 của cây sẽ được mở rộng với ba nút (node11, node12 node13), với các giá trị:

(node11.Parent = node1, node11.ch = w, node11.ListChild=NULL)

Khi đó: node1.ListChild = (node11, node12, node13)

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phương pháp nhận dạng chữ viết tay tiếng Việt dựa trên mô hình mạng nơron Luận văn ThS. Công nghệ thông tin 1.01.10 (Trang 66 - 68)

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

(99 trang)