Преобразование изображения в C # - PullRequest
4 голосов
/ 09 октября 2011

Я работаю над приложением обработки документов, которое генерирует и читает формы. Прикрепленный образец формы создается в виде печатного документа, заполняется людьми, сканируется и возвращается в приложение для обнаружения заполненных значений, включая оптические метки (пузырьки), текст (OCR) и т. Д. Нажмите здесь для образца формы .

Поскольку сканирование искажает изображение с точки зрения поворота, масштаба и перемещения, я использую три маркера для определения ориентации и исправления изображения довольно примитивным способом, который ОЧЕНЬ дорогой для вычислений и памяти. Вот суть этого:

  1. Чтение образа с диска.
  2. Обнаружение болтов с помощью AForge.net.
  3. Отфильтруйте маркеры, используя форму, относительный размер и другие свойства.
  4. Рассчитать поворот и повернуть изображение.
  5. Обнаружение болтов из повернутого изображения с помощью AForge.net.
  6. Рассчитать масштаб и масштаб повернутого изображения.
  7. Обнаружение болтов из масштабированного изображения с помощью AForge.net.
  8. Рассчитать перевод и перевести повернутое, масштабированное изображение.
  9. Обнаружение болтов из переведенного изображения с помощью AForge.net.
  10. Отфильтруйте отметки ответа (пузырьки), поскольку у меня уже есть позиции исходной формы.
  11. Извлеките средний цвет и сравните с пороговым значением, чтобы определить, заполнена ли опция.

Вышеприведенное, являющееся чрезвычайно точным, но неэффективным способом обработки, я собираюсь использовать геометрический подход к извлечению капель только ОДИН РАЗ, отфильтровывая маркеры / пузырьки и используя простую математику для определения ожидаемых положений пузырьков относительно маркеров. Это должно сократить время обработки на 80% и использование памяти на 60%.

Альтернативно, должен быть способ применить все три преобразования к одному изображению, не влияя на следующее. Это также уменьшит потребность в обнаружении BLOB-объектов трижды.

1 Ответ

0 голосов
/ 16 февраля 2012

Я бы смоделировал изображение и сделал преобразования для этой модели в памяти вместо реального изображения.Затем, как только вы вычислили матрицу преобразования, вы можете применить ее к реальному изображению, чтобы выполнить OCR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...