Обработка изображений — количество символов в точечном тексте

Мне нужно подсчитать символы, напечатанные на банке с напитками[1]. До сих пор я удалял шум и нежелательные пиксели, и теперь мой текст можно читать 2 А можно ли как-то их правильно посчитать? Ocr не может обнаружить этот текст. Или я должен соединить эти точки, используя какой-то алгоритм, и продолжить работу с функцией распознавания?

ROI изображения

Вот код, который дал мне картинку выше.

clear all; close all;
a=imread('coke.jpg');
gray=rgb2gray(a);
thres=150;
lbw=double(gray>thres);
imwrite(lbw,'--\OCR\output.png');

a=imread('output.png');
c=imresize(a,.5);
b = im2bw(c, .9);
b=imcomplement(b);
imwrite(b,'compli.png');

person Vignesh Narendran    schedule 02.02.2016    source источник
comment
Я думаю, что OCR не работает из-за краев вокруг банки, а не из-за того, что он не может прочитать текст, вы хотите вырезать 4 угла вокруг банки.   -  person GameOfThrows    schedule 02.02.2016
comment
@GameOfThrows Нет. Я удалил все и преобразовал в бинарное изображение, где только текст белый, а все остальное черное. ROI — это только текст.   -  person Vignesh Narendran    schedule 02.02.2016
comment
Покажите код, который это делает. Ваш вопрос будет закрыт, потому что вы не показали нам, что вы пробовали или где вы застряли.   -  person rayryeng    schedule 02.02.2016
comment
@GameOfThrows, и нет необходимости распознавать символы, достаточно их подсчета.   -  person Vignesh Narendran    schedule 02.02.2016
comment
@rayryeng я еще мало что сделал с кодом, и я разместил изображение в ROI   -  person Vignesh Narendran    schedule 02.02.2016


Ответы (1)


Вы должны обязательно присоединиться к точкам. Первое, что я бы попробовал, это функция imclose, которая выполняет морфологическое закрытие (расширение с последующей эрозией).

Например, вы можете попробовать это:

im = imread('dotMatrix.png');
im2 = imclose(im, strel('line', 5, 90));
im3 = imclose(im2, strel('line', 5, 45));

введите здесь описание изображения

person Dima    schedule 02.02.2016