Если не требуется режим реального времени, выполните простой подход для проверки возможности автоматизации ротации:
Печатные платы, подобные изображенным на изображениях, часто основаны на перпендикулярных отрезках прямых линий. Таким образом, вы можете «очищать» и удалять такие вещи, как пятна от кофе, находя сегменты.
Подумайте о создании ядра, которое будет иметь линию с темными пикселями на одной стороне и яркими пикселями на другой. Сложите его на изображении (или сопоставьте), чтобы идентифицировать все пиксели, которые имеют последовательность ярких / темных пикселей, которые являются почти вертикальными или горизонтальными.
Вы можете чередовать, чтобы ускорить процесс.
края пятен и пятнышки могут пережить это, если вы хотите, чтобы углы были близки к 45 * изображениям!
Полученное изображение можно интерпретировать как разреженное облако точек.
Теперь вы можете использовать RANSAC или другие подобные подходы, чтобы описать многие из оставшихся корреляций как отрезки.
* используйте 2-х точечный линейный сегмент в качестве входной модели для RANSAC, уменьшите, если он небольшой.
* Определить бесконечные линии, которые имеют много внутренних
* используйте подходы роста или binninng для сегментирования линий.
Преимущества:
высокая вероятность представлений отрезков, которые фактически представлены в виде схем в изображении. 2-х точечное описание сегментов, возможные преобразования просты.
легкая интерпретация данных, поскольку они могут быть наложены в openCV
Вращение должно быть легко найдено как вращение, которое соответствует большинству найденных линий по горизонтальной и / или вертикальной осям.
повторите для обоих изображений.
теперь вы можете определить наилучший перевод между изображениями, используя простую взаимную корреляцию x, y.