Ý tưởng chính của phần này về việc cắt chữ in dính là “gần nhà, xa ngõ”, dựa vào các đặc điểm của các cặp điểm thắt để ra quyết định cắt.
Với mỗi một từ hay một cụm chữ dính, trước tiên ta tiến hành tách ra các chu tuyến, sau đó dựa vào chu tuyến ngoài để tìm ra các cặp điểm thắt. Mỗi chu tuyến đều tồn tại một chu tuyến đối ngẫu. Trong các nghiên cứu trước các tác giả đã chỉ ra rằng mỗi đối tượng ảnh, ở đây là một từ hay một cụm chữ dính, tồn tại duy nhất một chu tuyến ngoài.
Chữ trước khi dò
biên Chữ sau khi dò biên Chu tuyến trong Chu tuyến ngoài
Quá trình tìm cặp điểm thắt Điểm đang xét
Điểm phân nửa trên và nửa dưới chu tuyến ngoài
Hình 6.14. Quá trình tìm chu tuyến và cặp điểm xét duyệt
Xuất phát từ tư tưởng trên, với mỗi một từ hay cụm chữ dính ban đầu sẽ được tiến hành dò biên để tìm ra các chu tuyến và tính chất tương ứng, các thông tin về chu tuyến ngoài và chu tuyến trong tìm được cùng các thông tin về ngưỡng quét, ngưỡng thắt, mật độ quét được lưu lại.
Quá trình tìm các cặp điểm thắt của đối tượng bắt đầu từ việc xét duyệt các điểm thuộc chu tuyến ngoài. Cặp điểm xét duyệt được xác định bởi một điểm nằm nửa phần trên chu tuyến và điểm còn lại nằm ở phần nửa dưới chu tuyến ngoài (Hình 6.14). Việc phân loại nửa trên và nửa dưới chu tuyến xác định bởi điểm bên trái nhất và điểm bên phải nhất của đối tượng.
Nửa chu tuyến dưới Nửa chu tuyến trên
c) ng Đườ c tắ T p ậ đường c tắ M=0 M=5 b) a)
Với mỗi điểm xét duyệt nằm nửa trên chu tuyến ngoài ta tìm một điểm tương ứng nằm nửa dưới chu tuyến có khoảng cách nhỏ nhất đến điểm đang xét và thỏa mãn ngưỡng quét (S). Điều này nhằm tránh việc xét những điểm biên liền sát với điểm đang xét dọc theo chu tuyến.
Nếu khoảng cách từ điểm đang xét đến điểm dưới chu tuyến tìm được có tỷ số so với khoảng cách hai điểm này tính dọc theo chu tuyến nhỏ hơn ngưỡng (L) thì cặp điểm đang xét được xem là cặp điểm thắt và được lưu trữ lại.
Tiếp theo, các cặp điểm thắt tìm được sẽ được kiểm tra xem có thỏa mãn điều kiện là cặp điểm cắt hay không? hay nói cách khác đường nối giữa 2 điểm có là đường phân ranh giới của các chữ dính hay không?
Trước hết, vị trí của từng cặp điểm thắt sẽ được xét duyệt, nếu độ lệch hoành độ của chúng ở quá xa hay quá gần (nhằm tránh trường hợp cắt ngang) thì cặp điểm đó sẽ bị loại. Trong trường hợp ngược lại, cặp điểm biên (kí hiệu là Db) sẽ được truyền theo lời gọi hàm FindCutPoint(...). Hàm FindCutPoint(...) sẽ thực hiện tìm đếm số điểm thuộc nửa dưới của chu tuyến ngoài có hoành độ gần với hoành độ của điểm thuộc nửa trên chu tuyến ngoài trong cặp điểm đang xét (kí hiệu số điểm biên tìm được là B). Nếu số điểm B tìm được > 1 thì hàm FindCutPoint(…) trả về giá trị FALSE, do đó cặp điểm thắt Db sẽ bị loại khỏi quá trình xét duyệt sau đó.
Ngược lại, hàm FindCutPoint(…) tính độ cao l1 của 2 điểm biên trong Db, và tính độ cao l2 của điểm chuẩn trong Db với điểm B vừa tìm được. Nếu l2-ll>ll thì hàm FindCutPoint(...) cũng sẽ trả về giá trị FALSE. Ngược lại, cặp điểm Db sẽ được kiểm tra xem có gần với cạnh trái và cạnh phải của hình chữ nhật bao quanh chu tuyến ngoài đang xét hay không. Nếu chúng quá gần thì hàm FindCutPoint(..) trả về giá trị FALSE, ngược lại hàm FindCutPoint(..) trả về giá trị TRUE. Tiếp nữa, hàm FindCutPoint(…) sử dụng đến mật độ M nhằm xem xét khoảng cách tương đối giữa các cặp điểm thắt theo hoành độ. Nếu chúng lớn hơn điều kiện mật độ cắt (M) hàm FindCutPoint(…) trả về giá trị TRUE. Do đặc điểm của chữ Việt là các chữ có râu đều có râu nằm về bên phải nên thứ tự ưu tiên đối với mật độ cắt là từ phải sang trái để tránh trường hợp khi cắt các chữ “ư” “ơ” v.v.. để lại nét cho chữ viết sau.
Hình 6.15. Một số hình ảnh minh hoạ về các điều kiện ở trên
Cặp điểm này được gọi là cặp điểm cắt. Để tăng độ chính xác cho
Lỗi
Tổng số P ≠1 Không kiểm tra l2-ll>ll
Không kiểm tra sự tương hỗ với hình chữ nhật bao quanh
chu tuyến ngoài với Db
bình, sau đó, hoành độ mới này sẽ hợp với tung độ của điểm chuẩn trong cặp điểm thắt để hình thành lên một điểm mới (gọi là điểm cắt tạm thời) và nó được lưu giữ nhằm phục vụ cho các bước tiếp theo trong quá trình cắt chữ.
Cuối cùng, sau khi đã xác định được tập điểm cắt tạm thời trong tập các cặp điểm biên gần nhau, hàm VerifyCutPoint() sẽ được gọi nhằm thẩm tra lại dựa theo quá trình phân tích độ rộng của kí tự trong từ và vị trí