Các phương pháp tiền xử lý được đề xuất cho OCR trên hình ảnh tròn


8

Xin chào, đây là hình ảnh mẫu của tôi Tôi sẽ phát hiện nhân vật theo thời gian thực trên những hình ảnh như thế.

Tôi đã thử SURF, SIFT, MSER và khớp mẫu trên ảnh gốc mà không cần xử lý trước. Tôi có thể phát hiện các ký tự nhưng khi hình ảnh thay đổi, các phương thức phát hiện tính năng này không hoạt động vì không có nhiều điểm quan tâm trong các ký tự trên hình ảnh. Tôi không chắc chắn chính xác loại tiền xử lý nào tôi nên làm để có độ chính xác cao hơn.

Vì vậy, câu hỏi của tôi là các phương pháp mà các bạn có thể đề nghị tôi làm để phát hiện nhân vật với độ chính xác cao hơn.

cảm ơn trước.

nhập mô tả hình ảnh ở đây

Câu trả lời:


8

Đây là những gì tôi đã làm cho một khách hàng (Những gì bạn đang hỏi là như nhau).

Giả sử rằng bạn có quyền truy cập vào một loại mẫu nhất định trên hình ảnh (hoặc trung tâm của lỗ), bạn luôn có thể phát hiện mẫu để lấy vị trí của một unwarp có thể:

Khớp mẫu

Lưu ý rằng trong hình ảnh được chuyển đổi, hai vùng sở thích được xác định và vùng mà chúng ta muốn đọc các ký tự là hình xuyến nằm giữa hai vòng tròn. Sử dụng thông tin này, chúng tôi có thể làm cong hình ảnh này bằng cách sử dụng biến đổi cực ngược để thu được:

inverse_polar_transform

Tôi cũng cung cấp mã MATLAB cho phép chuyển đổi này tại bài trao đổi tệp này .

Trong bước tiếp theo, nhờ khớp mẫu, các ký tự được đọc luôn nằm trong vùng cục bộ được xác định trong hình trên. Bây giờ, nếu bạn có ánh sáng thích hợp, phân đoạn nhân vật không là gì ngoài một tập hợp các thao tác xử lý hình ảnh tầm thường:

phân đoạn nhân vật

Các thành phần được kết nối thu được cuối cùng được đưa vào mạng thần kinh hoặc SVM, trước tiên để đào tạo và sau đó phân loại. Phần này chỉ bao gồm một nhiệm vụ học máy cơ bản, mà tôi sẽ không đi vào chi tiết ở đây.

Đừng quên chăm sóc tốt cho việc chiếu sáng, vì nó gần như đã giải quyết được vấn đề một nửa.


cảm ơn câu trả lời Bạn có nhớ chia sẻ chức năng cực nghịch đảo để có được hình ảnh tuyến tính?
Anar Bayramov

1
Tôi đã đăng một triển khai mẫu lên MATLAB FileExchange. Bạn có thể tìm thấy nó ở đây: mathworks.com/matlabcentral/fileexchange/36111
Tolga Birdal 30/12/14

@TolgaBirdal Bạn có thể giải thích cách bạn triển khai phân đoạn nhân vật không?
ahasbini

Vâng, tương ứng, nó bao gồm các ngưỡng cục bộ + phân tích thành phần được kết nối + lọc kích thước + lập trình động để phân chia vùng quan tâm còn lại thành các ký tự riêng lẻ. Tôi nghĩ rằng mỗi bước là tự mô tả :)
Tolga Birdal

1
vâng, nó sẽ kết nối nó. Sau đó, người ta có thể tìm kiếm trên các điểm phân chia có thể và chia văn bản 'mặt dây' theo chiều ngang thành các mảnh rời rạc. Điều này sẽ dẫn đến 'p', 'e', ​​'n' và 'd'. Để quyết định nơi cắt nó ra, người ta có thể sử dụng nhiều kỹ thuật bao gồm một số dạng lập trình động để đáp ứng các ràng buộc trên toàn cầu. Tôi sẽ không nhận được thông tin chi tiết về điều này bây giờ. Một cách tiếp cận tham lam đơn giản sẽ chỉ cắt văn bản từ một điểm có độ rộng ký tự đủ lớn và điểm chạm là một vài pixel.
Birdga Tolga
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.