Thuật toán sắp xếp ký tự

Một phần của tài liệu ĐỒ ÁN Nghiên cứu, thiết kế hệ thống nhận dạng chữ viết tay ứng dụng xử lý ảnh và trí tuệ nhân tạo (Trang 93 - 96)

Phương pháp sắp xếp thứ tự nhận diện kí tự: Sau khi tìm được đường biên của kí tự trong với hàm cv2.findContour(), nhóm sử dụng hàm cv2.boundingRect(). Lúc này thu được ma trận Rects gồm 4 cột và n hàng (n số trên hình). Các giá trị này tạo nên một hình chữ nhật bao quanh kí tự với thứ tự (x, y, w, h).

90 Các cột này tương ứng với tọa đọ x_min, y_min của kí tự, chiều cao và chiều rộng của kí tự.

Hình 3.16: Ý nghĩa của các phần tử trên 1 hàng của ma trận Rects

Bài toán đặt ra lúc này nhóm cần sắp xếp thứ tự của mỗi hàng tương ứng với các kí tự theo chiều từ trên xuống dưới và từ trái qua phải của các kí tự trên hình. Để giải quyết bài toán trên nhóm sắp xếp thứ tự các kí tự theo chiều từ trên xuống dưới bằng cách sắp xếp y_min của mỗi kí tự với điều kiện 𝑦𝑖>𝑦𝑖+1và 𝑦𝑖-𝑦𝑖+1>ℎ𝑖 lúc này thứ tự của kí tự i và i+1 trong ma trân Rects sẽ được đổi lại vị trí cho nhau.

for i in range (0, lenth - 1): for j in range (i + 1, lenth):

if (rects[i][0] > rects[j][0]) and abs(rects[i][1]-rects[j][1]) <(rects[i][3]/10): # Hoán đổi vị trí

tmp = rects[i]

rects[i] = rects[j] rects[j] = tmp

Sau khi các kí tự đã được sắp xếp theo hàng, nhóm tiếp tục sắp xếp các kí tự trong hàng từ trái qua phải với điều kiện: 𝑥𝑖>𝑥𝑖+1 thì hàng I và i+1 của ma trận Rects sẽ dduocj hoán đổi với nhau.

91 for i in range (0, lenth - 1):

for j in range (i + 1, lenth):

if (rects[i][1] > rects[j][1]) and (rects[i][1]-rects[j][1])>rects[i][3]: # Hoán đổi vị trí

tmp = rects[i] rects[i] = rects[j] rects[j] = tmp

Sau khi thực hiện hai lần sắp xếp lại thứ tự của các hàng trong ma trân ta thu được kết quả.

92

Một phần của tài liệu ĐỒ ÁN Nghiên cứu, thiết kế hệ thống nhận dạng chữ viết tay ứng dụng xử lý ảnh và trí tuệ nhân tạo (Trang 93 - 96)

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

(140 trang)