Соответствие шаблонов вращения и масштабирования в OpenCV
Возможный дубликат:
масштабирование и вращение
У меня есть изображение в градациях серого, с белым фоном и черной формой. У меня также есть несколько похожих тестовых изображений, которые различаются по вращению и форме. Тестовые изображения не совпадают с шаблонами, но они похожи.
Я хочу сравнить эти два изображения и посмотреть, совпадает ли шаблон с любым из тестовых изображений. На изображениях нет искажений, шумов и других дефектов. Есть ли уроки на эту тему?
2 ответа
Попробуйте сначала самый простой способ.
Если я вас правильно понимаю, у вас есть модель - черная фигура на белом фоне. Вы можете рассматривать это как blob - найдите его центр масс и вращение, вычисляя угол главных осей - посмотрите там.
Затем вы должны выделить фигуры из других изображений. Затем попробуйте найти наилучшую соответствующую фигуру с помощью функции matchShapes() - посмотрите, как ее использовать.
Функция matchShapes() выполняет сопоставление инвариантов масштаба и вращения.Чем меньше совпадений, тем лучше совпадение.
Расширяя свой вопрос, вы можете найти центр масс и вращение наиболее подходящего сгустка, а также найти вращение, масштаб и смещение между вашей моделью и сопоставленным изображением.
Это довольно сложный предмет. У вас обычно есть варианты, такие как Обобщенное преобразование Хафа и Нормализованная корреляция градаций серого, чтобы иметь дело с сопоставлением шаблона. Проблема в том, что они не являются инвариантами масштаба или вращения в их простейшем выражении. Вы должны сосредоточиться на проблеме в то время, обобщенное решение является сложным. Сначала я рекомендую простое сопоставление с шаблоном. Затем добавьте "хаки" для поворота и масштабирования. Для поворота вы можете уменьшить масштаб (сопоставление с низким разрешением) и сопоставить шаблон с повернутыми моделями. Это также может иметь дело с масштабом.