Подключение пикселей в matlab

#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, но я не знаком с этим продуктом.