2012-07-13 3 views
11

EmguCV에서 텍스트 인식을 위해 이미지에 적용 할 수있는 최상의 이미지 전처리 작업은 무엇입니까?텍스트 인식을위한 이미지 전처리

나는 두 개의 샘플 이미지 here을 포함 시켰습니다.

텍스트가 어떤 크기이든지 상관 없으므로 로우 패스 필터 또는 하이 패스 필터를 적용하는 것은 적합하지 않습니다. 중간 및 양자 필터를 시도했지만 이미지에 많은 영향을 미치지는 않습니다.

이상적인 결과는 모든 텍스트가 흰색이고 나머지 대부분이 검은 색 인 이진 이미지입니다. 이 이미지는 OCR 엔진으로 전송됩니다.

감사합니다.

+1

여기 샘플 이미지를 업로드 할 수 있습니까? 링크 403 금지를 제공합니다 – Alupotha

답변

16

가장 좋은 세트 같이 멋진 것은 어디에도 없습니다. 디지털 이미지는 다른 캡처 장치에서 얻을 수 있으며 각 장치는 자체 처리 시스템 (필터)과 이미지를 크게 변경하고 노이즈를 추가 할 수있는 다른 특성을 내장 할 수 있습니다. 따라서 모든 경우는 다르게 처리 (사전 처리)해야합니다.

그러나, 는 예를 들어, 탐지를 개선하는 데 사용할 수 있습니다 commmon 작업있다, 아주 기본적인 하나는 그레이 스케일 이미지를 이진화하는 threshold을 적용 할 수있는 이미지를 변환하는 것입니다. 이전에 사용한 또 다른 기술은 the bounding box으로, 텍스트 영역을 감지 할 수 있습니다. 이미지에서 노이즈를 제거하려면 침식/확장 작동에 관심이있을 수 있습니다. 나는이 작업 중 일부를 this post에 대해 설명합니다. 이제

단지 당신이 할 수있는 간단한 방법을 보여주기 위해 : 또한

, 당신은 살펴 보셔야합니다 OCR 및 OpenCV의에 대한 흥미로운 게시물이 있습니다 샘플 이미지와 함께 사용하는 경우 색상 반전 및 임계 값 적용의 결과입니다.

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

각 이미지에 대한 침식/확장 작동의 올바른 세트를 찾아야 할 것입니다. 지금은 모든 이미지에 대해 합리적으로 잘 작동하는 조합을 찾을 수 없습니다. 그러나 유역 예제가 가장 효과적입니다. – Osiris

+0

이미지에서 텍스트를 감지하는 다른 방법이 있습니까? – Maystro

+1

두 번째 OpenCV 링크가 죽었습니다. 다음은 대안입니다. https://github.com/damiles/basicOCR – yurez

2

형태소 이미지 처리를 시도해보십시오. this을보십시오. 그러나 바이너리 이미지에서만 작동하므로 이미지를 2 진수 화해야합니다 (임계 값?). 간단하지만 글꼴 크기에 따라 다르므로 하나의 구조 요소가 모든 글꼴 크기에서 작동하지 않습니다. 일반적인 솔루션을 원한다면 이미지에서 텍스트 감지를위한 여러 가지 논문이 있습니다. Google 학자에서이 용어를 검색하면 유용한 출판물을 얻을 수 있습니다.

+0

고마워, 그 종이 정말 유용 할거야. 형태 론적 연산을 살펴 보았지만, 당신이 말했듯이, 텍스트 크기에 의존합니다. – Osiris