2017-01-25 1 views
0

나는 이미지의 데이터 세트에서 텍스트 인식 작업을 해왔다. 구성 요소를 사용하여 이미지의 문자를 분할하고 임계 값 이미지의 윤곽선을 찾고 싶습니다. 그러나 많은 문자가 서로 병합되고 이미지의 다른 구성 요소와 병합됩니다.OpenCV - 텍스트 분할로 문자 윤곽 분리하기

나눌 수 있습니까? 도와 주셔서 감사합니다!

다음은 몇 가지 예입니다, 내 코드의 일부 :

Mat placa_contornos = processContourns(img_placa_adaptativeTreshold_mean); 
vector<vector<Point>> contours_placa; 
findContours(placa_contornos, 
      contours_placa, 
      CV_RETR_EXTERNAL, externos) 
      CV_CHAIN_APPROX_NONE); 
vector<vector<Point> >::iterator itc = contours_placa.begin(); 
while (itc != contours_placa.end()) { 
    //Create bounding rect of object 
    Rect mr = boundingRect(Mat(*itc)); 
    rectangle(imagem_placa_cor, mr, Scalar(0, 255, 0)); 
    ++itc; 
} 
imshow("placa con rectangles", imagem_placa_cor); 

Results examples

original image, binarized image, result

+0

원래 이미지와 2 진화 된 이미지를 넣으면 도움이됩니다. – ilke444

+0

@ like444 귀하의 의견을 주셔서 감사합니다, 설명에서 내가 하나의 원본 이미지와 이미지를 넣어, 그리고 그 결과. 도와 주셔서 감사합니다. – Alexander33

+1

골격을 시도해 볼 수도 있습니다 –

답변

0

나는이 도움이 있는지 확인하기 위해 바이너리 이미지 이상을 잠식하려고합니다. 또한 스큐를 고정하고 문자도

를 연결하는 결론을 제거 시도 할 수 있습니다, 이것은 관련이있을 수 : Recognize the characters of license plate

+0

고마워요. @brad, 상단과 하단에 선이있는 이미지가 많아서 제거하고 싶습니다. 어떻게 선을 제거 할 수 있습니까? – Alexander33

+0

비슷한 문제에 직면했을 때 Mat의 각 행을 확인하여 수평선을 나타내는 많은 흰색 픽셀이 있는지 확인할 수있었습니다. 그러나이 방법은 기울기를 보정 할 수 있거나 각도가 일정한 경우에만 작동합니다. 그렇지 않으면 라인 감지의 다른 방법이 효과가있을 수 있습니다. – brad

0

당신은 당신의 역치 이미지에 opening operation을 시도 할 수 있습니다 노이즈를 제거하는 . 필요에 따라 커널 크기를 조정할 수 있습니다. 그것은 당신의 역치 이미지에 다음과 같은 중간 출력을 제공

// Get a rectangular kernel with size 7 
Mat element = getStructuringElement(0, Size(7, 7), Point(1, 1)); 
// Apply the morphology operation 
morphologyEx(placa_contornos, result, CV_MORPH_OPEN, element); 

, 나는 그것이 당신의 탐지를 개선하는 것 같아요.

enter image description here