#matlab #image-processing
#matlab #обработка изображений
Вопрос:
Пожалуйста, предложите, как соединить точечные пиксели в изображении, как показано ниже:
Я хочу применить OCR к этому изображению. Я пробовал некоторые морфологические операции, такие как сгущение и объединение, но не получил ожидаемого результата (NH5343320). Исходное изображение также загружается. Применив обнаружение горизонтальных краев к исходному изображению, я получил пунктирное изображение, как указано выше. Существуют ли какие-либо другие доступные методы для применения распознавания в таких изображениях.
Комментарии:
1. Какая априорная информация у вас есть? Например, если бы вы заранее знали ширину символов, вы могли бы просто определить большие двоичные объекты внутри прямоугольника из верхней левой точки и соединить центры этих двоичных объектов линиями. затем удалите все большие двоичные объекты, соединенные таким образом, и перейдите к следующему символу
2. Изображение прошло через плохое пороговое значение. Можете ли вы также добавить исходное изображение?
3. «не получается правильный вывод». Значение? Каков правильный вывод, что вы пробовали и почему это не сработало? мы знаем, что он не получил правильный вывод, вы бы не спрашивали здесь, если бы это было так.
Ответ №1:
Я бы вырезал и заполнил шаблон для каждой из доступных букв. Предположительно, это будут буквы [A-Z] и цифры [0-9], подобные этому.
0.png
3.png
Теперь я бы выполнил поиск по каждому из них в вашем исходном изображении. Я делаю это в командной строке с помощью ImageMagick, но вы можете использовать Matlab, OpenCV или CImg или привязки ImageMagick к Python, Perl, PHP, C, C .
Итак, я ищу 3
первый:
compare -metric rmse -dissimilarity-threshold 1 -subimage-search plate.png 3.png result.png
25607.9 (0.390752) @ 498,46
Итак, 3
найдено в координатах 498,46. Будет 2 выходных файла, output-0.png
которые выглядят следующим образом:
и output-1.png
в котором вы можете видеть самые яркие области, показывающие, где совпадение является наилучшим:
Аналогично с 0
:
compare -metric rmse -dissimilarity-threshold 1 -subimage-search plate.png 0.png result.png
31452.6 (0.479936) @ 664,44
Комментарии:
1. Можете ли вы объяснить, как мы можем найти координаты искомого символа. В своем ответе вы указали координаты 498,46 и 664,44. Как мы можем найти эти точки программно. Также не могли бы вы объяснить, какие другие числовые параметры использовались, поскольку я не был знаком с ImageMagick.
2. Координаты верхнего левого угла, где изображение шаблона с маленькой буквой совпадает с исходным изображением, указаны в выходных данных после
@
— я полагаю, вы можете прочитать их оттуда. Первое число в выходных данных соответствует тому, насколько хорошо совпадение. Порог несоответствия должен быть установлен равным нулю, если вы хотите получить идеальное совпадение, или единице, если вы готовы допустить очень плохие совпадения и хотите принимать собственные решения.3. Я думаю, вы бы использовали нормализованную взаимную корреляцию в Matlab, но я не знаком с этим продуктом.