2012-07-13 50 views
11

Tập hợp các hoạt động tiền xử lý hình ảnh tốt nhất để áp dụng cho hình ảnh nhận dạng văn bản trong EmguCV là gì?Xử lý trước hình ảnh để nhận dạng văn bản

Tôi đã bao gồm hai hình ảnh mẫu here.

Áp dụng bộ lọc thông thấp hoặc cao sẽ không phù hợp vì văn bản có thể có kích thước bất kỳ. Tôi đã thử các bộ lọc trung bình và song phương, nhưng chúng dường như không ảnh hưởng nhiều đến hình ảnh.

Kết quả lý tưởng sẽ là hình ảnh nhị phân với tất cả văn bản màu trắng và hầu hết phần còn lại màu đen. Hình ảnh này sau đó sẽ được gửi đến công cụ OCR.

Cảm ơn

+1

bạn có thể tải lên các hình ảnh mẫu đó tại đây không? liên kết cho 403 bị cấm – Alupotha

Trả lời

16

Chẳng gì bằng bộ tốt nhất. Hãy nhớ rằng hình ảnh kỹ thuật số có thể được thu thập bởi các thiết bị chụp khác nhau và mỗi thiết bị có thể nhúng hệ thống tiền xử lý riêng (bộ lọc) và các đặc điểm khác có thể thay đổi hình ảnh và thậm chí thêm tiếng ồn cho chúng. Vì vậy, mọi trường hợp sẽ phải được xử lý (được xử lý trước) khác nhau.

Tuy nhiên, có hoạt động commmon có thể được sử dụng để cải thiện việc phát hiện, ví dụ, một rất cơ bản sẽ được chuyển đổi hình ảnh sang màu xám và áp dụng một threshold để binarize hình ảnh. Một kỹ thuật khác mà tôi đã sử dụng trước đây là the bounding box, cho phép bạn phát hiện vùng văn bản. Để loại bỏ tiếng ồn từ hình ảnh, bạn có thể quan tâm đến hoạt động xói mòn/giãn nở. Tôi trình bày một số hoạt động này trên this post.

Ngoài ra, có những bài viết thú vị khác về OCR và OpenCV mà bạn nên có một cái nhìn:

Bây giờ, chỉ để cho bạn thấy một cách tiếp cận đơn giản mà có thể được sử dụng với hình ảnh mẫu của bạn, đây là kết quả của việc đảo ngược màu và áp dụng ngưỡng:

cv::Mat new_img = cv::imread(argv[1]); 
cv::bitwise_not(new_img, new_img); 

double thres = 100; 
double color = 255; 
cv::threshold(new_img, new_img, thres, color, CV_THRESH_BINARY); 

cv::imwrite("inv_thres.png", new_img); 
+0

Tôi đoán tôi sẽ phải tìm đúng tập hợp các hoạt động xói mòn/giãn nở cho từng hình ảnh. Ngay bây giờ, tôi dường như không thể tìm thấy một sự kết hợp hoạt động tốt cho tất cả các hình ảnh. Ví dụ đầu nguồn hoạt động tốt nhất. – Osiris

+0

Có cách nào khác để phát hiện văn bản trong hình ảnh không? – Maystro

+1

Liên kết OpenCV thứ hai đã chết, đây là một thay thế: https://github.com/damiles/basicOCR – yurez

2

Cố gắng xử lý hình ảnh hình thái. Hãy xem this. Tuy nhiên, nó chỉ hoạt động trên hình ảnh nhị phân - vì vậy bạn sẽ phải binarize hình ảnh (ngưỡng?). Mặc dù, nó là đơn giản, nó phụ thuộc vào kích thước phông chữ, do đó, một yếu tố cấu trúc sẽ không hoạt động cho tất cả các kích cỡ phông chữ. Nếu bạn muốn một giải pháp chung, có một số giấy tờ để phát hiện văn bản trong hình ảnh - Tìm kiếm thuật ngữ này trong học giả google sẽ cung cấp cho bạn một số ấn phẩm hữu ích.

+0

Cảm ơn, bài báo đó sẽ thực sự hữu ích. Tôi đã xem xét các hoạt động hình thái, nhưng, như bạn đã nói, chúng phụ thuộc vào kích thước văn bản. – Osiris

Các vấn đề liên quan