Как найти метки выравнивания в изображении - PullRequest
12 голосов
/ 21 марта 2012

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

Пример изображения типичного знака, который мне нужно найти:

Обрезка http://draftingmanuals.tpub.com/14065/img/14065_69_1.jpg

Какими методами можно оценить изображение, полученное со сканера, чтобы найти различные метки на изображении? Мне нужно найти несколько меток и их центральные точки.

Ответы [ 3 ]

6 голосов
/ 22 марта 2012

Просто мозговой штурм некоторых возможных подходов.

Соответствие шаблону

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

Интересные моменты

Найдите способ идентифицировать "интересные точки" на изображении. Например, точки, которые кажутся в центре пересечения, могут быть найдены путем свертки с небольшим ядром, которое усиливает пиксели, которые имеют совпадающие пиксели в кардинальных направлениях, а затем пороговое значение результата. Это дает список пикселей, которые кажутся точками пересечения (может быть некоторый шум). Вы можете искать в этом подмножестве координат «созвездие», которое выглядит как пять точек пересечения в вашей регистрационной метке. Возможно, вам все равно придется применить сопоставление с шаблоном, чтобы найти наиболее вероятные позиции, но это значительно уменьшит количество местоположений, поворотов и масштабных коэффициентов, которые вам бы пришлось попробовать в противном случае.

Обнаружение функции

Существуют алгоритмы обнаружения линий, обнаружения кругов и т. Д. Возможно, вы сможете запустить их несколько, а затем искать комбинацию двух пересекающихся отрезков в пределах круга. Это может быть самый надежный способ, но, вероятно, труднее всего работать.

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

2 голосов
/ 22 марта 2012

Я нашел это французский PDF ресурс от Колин Буври , имеющий дело с Распознавание символов и символов, выгравированных на стекле .

Если вы не знакомы с французским языком, вам не о чем беспокоиться: куча ценных исходных кодов на Delphi перечислены внизу документа, поверьте мне!

Спасибо.

0 голосов
/ 02 ноября 2014

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

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