Я работаю над приложением обработки документов, которое генерирует и читает формы. Прикрепленный образец формы создается в виде печатного документа, заполняется людьми, сканируется и возвращается в приложение для обнаружения заполненных значений, включая оптические метки (пузырьки), текст (OCR) и т. Д. Нажмите здесь для образца формы .
Поскольку сканирование искажает изображение с точки зрения поворота, масштаба и перемещения, я использую три маркера для определения ориентации и исправления изображения довольно примитивным способом, который ОЧЕНЬ дорогой для вычислений и памяти. Вот суть этого:
- Чтение образа с диска.
- Обнаружение болтов с помощью AForge.net.
- Отфильтруйте маркеры, используя форму, относительный размер и другие свойства.
- Рассчитать поворот и повернуть изображение.
- Обнаружение болтов из повернутого изображения с помощью AForge.net.
- Рассчитать масштаб и масштаб повернутого изображения.
- Обнаружение болтов из масштабированного изображения с помощью AForge.net.
- Рассчитать перевод и перевести повернутое, масштабированное изображение.
- Обнаружение болтов из переведенного изображения с помощью AForge.net.
- Отфильтруйте отметки ответа (пузырьки), поскольку у меня уже есть позиции исходной формы.
- Извлеките средний цвет и сравните с пороговым значением, чтобы определить, заполнена ли опция.
Вышеприведенное, являющееся чрезвычайно точным, но неэффективным способом обработки, я собираюсь использовать геометрический подход к извлечению капель только ОДИН РАЗ, отфильтровывая маркеры / пузырьки и используя простую математику для определения ожидаемых положений пузырьков относительно маркеров. Это должно сократить время обработки на 80% и использование памяти на 60%.
Альтернативно, должен быть способ применить все три преобразования к одному изображению, не влияя на следующее. Это также уменьшит потребность в обнаружении BLOB-объектов трижды.