Соответствие шаблона - вычитание изображения - PullRequest
0 голосов
/ 01 октября 2010

У меня есть проект, в котором я должен вычесть пустое изображение шаблона из входящего изображения, заполненного пользователем.Тип документа - обычный банковский чек.

Цель состоит в том, чтобы извлечь из него рукописные поля путем вычитания одного изображения из пустого шаблонного изображения.

Проблема, с которой я сталкиваюсь, заключается в выравнивании этих двух изображений, поскольку существует масштабирование,перевод, вращение и т. д.

Есть идеи, как выровнять изображение шаблона с входящим изображением?

ОБНОВЛЕНИЕ 1:

Я публикую примеризображение со страницы википедии , но в монохромном формате, так как мое изображение в монохромном формате.alt text

Ответы [ 2 ]

3 голосов
/ 01 октября 2010

При работе с обработкой изображений для промышленных проектов в большинстве случаев мы имеем дело с проверкой. Реплика похожа на знак - может быть дырой, крестиком - который никогда не меняется, всегда находится в одинаковых позициях.

Как правило, двух опорных точек достаточно, чтобы исправить проблемы со смещением, такие как вращение, перемещение, а также масштабирование. Например, если вы знаете расстояние между ними, вы всегда можете проверить его, чтобы убедиться, что масштабный коэффициент правильный, или скорректировать его на основе разницы текущего расстояния и правильного расстояния.

В вашем случае я хотел бы спросить вас: имеет ли шаблон и входящее изображение какие-либо визуальные признаки, которые являются инвариантными и могут быть легко сегментированы?

Если у вас есть ответ на этот вопрос, все остальное будет более простым - само отличие - довольно простой алгоритм.

1 голос
/ 01 октября 2010

Основной ответ - написать функцию, которая берет два изображения и двухмерное преобразование и сообщает вам, как они выровнены после применения преобразования к целевому изображению. Функция должна быть непрерывной на основе преобразования и иметь локальные минимумы (0), где изображения идеально выровнены. Это называется функцией стоимости.

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

Существуют продукты, которые делают это - обычно они называются Распознавание форм, Регистрация форм, Обработка форм и т. Д. Некоторые из них являются SDK, но есть также приложения, которые могут делать это без программирования.

Отказ от ответственности: я работаю в Atalasoft, где мы продаем дополнение для обработки форм к нашему .NET Imaging SDK.

...