2012-07-13 16 views
11

Jaki jest najlepszy zestaw operacji wstępnego przetwarzania obrazu, które można zastosować do obrazów do rozpoznawania tekstu w programie EmguCV?Przerób obrazu do rozpoznawania tekstu

Dołączyłem dwa przykładowe obrazy here.

Zastosowanie filtru dolnoprzepustowego lub górnoprzepustowego nie będzie odpowiednie, ponieważ tekst może mieć dowolny rozmiar. Próbowałem filtrów medianowych i dwustronnych, ale nie wydają się one zbytnio wpływać na obraz.

Idealnym rezultatem będzie obraz binarny z białym tekstem i pozostałą częścią czerni. Ten obraz zostanie przesłany do silnika OCR.

Dzięki

+1

Czy możesz przesłać te przykładowe obrazy tutaj? link daje 403 zabronione – Alupotha

Odpowiedz

16

Nie ma to jak najlepszy zestaw. Należy pamiętać, że obrazy cyfrowe można uzyskać za pomocą różnych urządzeń przechwytywania, a każde urządzenie może osadzać własny system przetwarzania wstępnego (filtry) i inne cechy, które mogą radykalnie zmienić obraz, a nawet dodać do niego szum. Tak więc każdy przypadek musiałby być inaczej potraktowany (przetworzony).

Jednak istnieją commmon operacje, które mogą być wykorzystane do poprawy wykrywania, na przykład, bardzo prosty jeden byłby do konwersji obrazu do skali szarości i zastosować threshold do binarize obraz. Inną techniką, której użyłem wcześniej, jest the bounding box, która pozwala na wykrycie regionu tekstu. Aby usunąć odgłosy z obrazków, możesz zainteresować się erozją/rozszerzeniem operacji. Demonstruję niektóre z tych operacji na this post.

Ponadto, istnieją inne ciekawe posty o OCR i OpenCV, że należy spojrzeć:

Teraz, żeby pokazać wam proste podejście, które mogą używać z obrazem próbki, jest to wynikiem odwrócenia koloru i zastosowania progu:

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

Chyba będę musiał znaleźć odpowiedni zestaw operacji erodowania/rozszerzania dla każdego obrazu. W tej chwili nie mogę znaleźć kombinacji, która działa całkiem dobrze dla wszystkich obrazów. Najlepiej jednak działa przykład działu wodnego. – Osiris

+0

Czy istnieją inne sposoby wykrywania tekstu na obrazach? – Maystro

+1

Drugie łącze OpenCV nie działa, oto alternatywa: https://github.com/damiles/basicOCR – yurez

2

Spróbuj przeprowadzić morfologiczne przetwarzanie obrazu. Spójrz na this. Jednak działa tylko na obrazach binarnych - więc będziesz musiał binaryzować obraz (próg?). Chociaż jest to proste, zależy to od rozmiaru czcionki, więc jeden element struktury nie będzie działał dla wszystkich rozmiarów czcionek. Jeśli chcesz mieć ogólne rozwiązanie, istnieje wiele dokumentów do rozpoznawania tekstu w obrazach - wyszukiwanie tego terminu w google scholar powinno dostarczyć Ci przydatnych publikacji.

+0

Dzięki, że papier będzie naprawdę przydatne. Przyjrzałem się operacjom morfologicznym, ale, jak powiedziałeś, są one zależne od rozmiaru tekstu. – Osiris

Powiązane problemy