Tìm vị trí của text trong ảnh

text_locator_thumb

Với các loại text có format cố định thì việc đọc rất dễ dàng. Tọa độ đã được xác định, chỉ cần chỉ định vùng text cố định là được. Còn các loại văn bản khác thì cần xác định vị trí trước sau đó mới nhận dạng ký tự.

Việc này giúp cho đọc text nhanh hơn là tìm toàn bộ ảnh. Tuy nhiên có thể bị miss (bỏ sót) vùng text nên các bạn cần cân nhắc kỹ.



Ví dụ như thẻ cào điện thoại, vị trí đã có sẵn cố định:

đọc thẻ cào điện thoại

Nhưng với các loại văn bản khác thì text không cố định, do đó cần xử lý thêm. Phương pháp trong bài này là sử dụng lọc Sobel kết hợp hình thái học (morphology). Độ chính xác tương đối & cũng không thể áp dụng cho mọi loại văn bản. Do đó các tham số sử dụng cần được điều chỉnh cho các nhóm văn bản khác nhau.

Thuật toán

Sử dụng ảnh bên dưới để demo thuật toán tìm text trong văn bản
8ipeJ

Đầu tiên dùng lọc Sobel
text_locator_1

Sau đó phân ngưỡng (threshold)
text_locator_2

Dùng phép biến đổi hình thái học CLOSE để fill các lỗ trống
text_locator_3

Sau đó tìm contour rồi vẽ kết quả
text_locator_4

Một vài lưu ý

– Do lọc Sobel dx bị lệch phải (dx = 1) nên phải move các hình chữ nhật qua trái 1 chút
– Các tham số của hình thái học, lọc Sobel phải là số lẻ (1,3,5,7,…)
– Tùy theo loại văn bản, kích cỡ chữ mà tìm tham số hình thái học phù hợp
– Trong hình trên vẫn có sai sót nhỏ ở góc dưới bên trái ảnh
– Bên dưới là minh họa phép biến đổi CLOSE
closing



Code C++

Hàm này có chức năng tìm các vùng hình chữ nhật chứa text trong ảnh

Leave a Reply