Как выровнять две разные картинки таким образом, чтобы они совпадали как можно ближе?

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

изображения могут быть сдвинуты в направлениях x/y и повернуты до 5 градусов на z, но они не будут искажены (т. е. масштабированы или замыкаются).

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

Если бы не было проблемы вращения, то я мог бы просто попытаться сравнить строки пикселей с методом грубой силы, пока не найду совпадение, а затем я знаю смещение и могу выровнять изображение.

нужен ли мне AI для этого?

Мне трудно найти ресурсы по обработке изображений, которые подробно описывают, как работают эти алгоритмы выравнивания.

2 ответов


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

Если вы не хотите находить соответствия точек, вы можете напрямую оптимизировать вращение и перевод, используя самый крутой спуск, проблема в том, что это не выпукло, поэтому нет гарантирует, что вы найдете правильное преобразование. Вы можете сделать случайные перезагрузки или имитацию отжига или любые другие глобальные трюки оптимизации поверх этого, что, скорее всего, сработает. Я не могу найти никаких ссылок на эту проблему, но это в основном алгоритм стабилизации цифрового изображения, который мне пришлось реализовать, когда я взял компьютерное зрение, но это было много лет назад,вот соответствующие слайды хотя, посмотрите на "stabilization revisited". Да, я знаю, что эти слайды ужасно, я их не сделал:) однако метод определения градиента довольно элегантный, так как конечная разница явно неразрешима.

Edit: я, наконец, нашел документ, который перешел, как это сделать здесь, это действительно отличная статья, и она очень хорошо объясняет алгоритм Лукаса-Канадэ. Кроме того,этот сайт имеет много материала и исходного кода для выравнивания изображений, что, вероятно, будет полезно.


для выравнивания 2 изображений вместе вы должны выполнить технику регистрации изображений. В matlab напишите функции для регистрации изображений и выберите желаемые функции для справки под названием "точки объектов", используя "инструмент выбора контрольной точки" для регистрации изображений. Подробнее о регистрации изображений читайте в окне справки matlab, чтобы правильно понять.