Một phƣơng pháp đơn giản để xác định góc nghiêng văn bản là dùng phƣơng pháp hình chiếu. Ý tƣởng chính của phƣơng pháp này là tính Histogram cho tất cả các góc lệch. Histogram của một góc là số điểm đen trong ảnh sao cho các điểm này nằm trên những đƣờng thẳng có cùng một hƣớng tƣơng ứng với góc đó. Sau đó dùng một hàm chi phí áp dụng cho các giá trị Histogram này. Góc nghiêng văn bản tƣơng ứng với góc giá trị hàm chi phí cực đại. Histogram này có biên độ và tần xuất lớn nhất khi văn bản có độ nghiêng bằng 0 với số điểm đen là lớn nhất. Điều này đƣợc minh họa ở hình 2.8c, 2.8d trong đó cho thấy phƣơng pháp hình chiếu đƣợc tính từ hình ảnh trong hình 2.8a, 2.8b
Hình 2.7 Hiện tƣợng rỗ ảnh sau khi quay
24
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.8c có chiều cao và khoảng cách đều nhau hơn so với ảnh bị nghiêng góc thể hiện ở hình 2.8d. Đặc điểm này đƣợc sử dụng trong một vài thuật toán, một trong số các phƣơng pháp là sử dụng phép quay ảnh đầu vào qua một góc và tính hình chiếu cho mỗi góc. Sau đó trích chọn các điểm đại diện từ phép chiếu đƣợc so sánh để xác định điểm cao hơn. Phƣơng pháp này đƣợc thể hiện trong đoạn mã sau:
for theta = -angle to +angle by resolution do { for r = 0 to NROWS do for c = 0 to NCOLS do if (image[r][c] == BLACK) { rotate(r,c,theta,&new_row); ++proj_prof[new_row]; } angle_measure[theta] = criterion_function(proj_prof[]); } kew_angle = choose_skew(angle_measure[]); }
Trong phƣơng pháp hình chiếu tọa độ của mỗi điểm đen đƣợc quay bởi góc và ô tƣơng ứng tăng lên. Dùng hàm Criterion ƣớc lƣợng góc nghiêng cho đỉnh đại diện – hình 2.7, sau đó hàm Choose_skew đƣợc gọi để xác định góc lớn nhất từ hàm Criterion. Xoay tọa độ thay vì quay ảnh bitmap lƣu trữ tạm
2.8d Hình 2.8 Phƣơng pháp hình chiếu đƣợc tính từ ảnh trong hình 2.8a, 2.8b
25
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
thời và làm giảm quá trình tính toán lặp lại nhiều lần.
Thuật toán phát hiện góc nghiêng đƣợc đề xuất bởi các tác giả: Akiyama, Nakano,Potsl, Baird, Lam và Zandy,… Các thuật toán phát hiện góc nghiêng văn bản dựa vào phƣơng pháp hình chiếu thƣờng bao gồm các bƣớc sau:
Bƣớc 1: Dùng một hàm rút gọn F để chuyển ảnh đầu vào thành một tập các bộ ba (x, y, w) trong đó (x, y) là tọa độ của một điểm ảnh đại diện cho một đối tƣợng và w là trọng số của điểm đó. Điểm đại diện là điểm biểu diễn các ký tự trong các đối tƣợng của ảnh.
Bƣớc 2: Một hàm P dùng để chiếu các điểm tìm đƣợc ở trên vào một mảng đếm A theo các góc chiếu khác nhau. Ứng với mỗi góc có một mảng A dùng để lƣu số điểm đại diện. Mảng A là mảng một chiều, phần tử A[r] sẽ cho biết số điểm đại diện nằm trên đƣờng thẳng tạo với trục Ox góc và khoảng cách từ gốc tọa độ tới đƣờng thẳng đó là r.
Bƣớc 3: Sau khi tính đƣợc mảng A[] áp dụng một hàm tối ƣu hóa Ω cho các giá trị của mảng này theo một tiêu chuẩn nào đó. Cuối cùng góc lệch của văn bản là góc tƣơng ứng có giá trị hàm tối ƣu hóa cực đại. Sự khác nhau của các thuật toán là việc xây dựng các hàm rút gọn F và hàm tối ƣu hóa Ω.