Перейти к содержимому
Compvision.ru
OmgZomg

Совместить изображения со сдвигом

Recommended Posts

Доброго времени суток, товарищи!

Имеются изображения. Не могу приложить к теме, позволяет только 80кб файл.

Их нужно наложить одно на другое. Но они со "сдвигом".

Как правильно их наложить, учитывая сдвиг? Чтоб всё совпало

Накладываю изображения с помощью функции numpy.stack()

Благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что должно получиться ? Насколько я помню, stack сделает 6 слойное изображение.

Вы этого добиваетесь? Или нужно просто визуальное наложение с прозрачностью ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
On 10/21/2020 at 6:27 PM, Smorodov said:

А что должно получиться ? Насколько я помню, stack сделает 6 слойное изображение.

Вы этого добиваетесь? Или нужно просто визуальное наложение с прозрачностью ? 

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

Сейчас я одноканальные изображения "накладываю" друг на друга без учета сдвига. Это не очень хорошо.

Вот как этот сдвиг устранить?

И, кстати, не только 6 слойное. Я и 13 слойное делал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если изображения трансформированы сдвигом, масштабом и поворотом, можно попробовать estimateRigidTransform . 

Если только смещение, без поворота то, как альтернатива - phaseCorrelate() . 

Для того чтобы np.stack работала, изображения должны быть одинакового размера и типа, то есть придется их как-то привести к стандартному формату.

Вначале посчитать среднее смещение, и принять эту точку за начало отсчета, затем создать пустое изображение для каждого слоя и вклеить в них со смещением, поворотом исходные изображения. Можно использовать warpAffine (попробовать можно здесь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все изображения одинакового размера.

Сделал так:

на каждом изображении выбрал одну точку и посчитал смещение.

Далее создал пустое изображение (numpy матрица с n каналов).

И в эту пустую матрицу накидал изображений с учетом смещения.

Все получилось.

Вопрос: Я точку, чтобы посчитать смещение, на каждом изображении выбираю вручную. Можно ли как-то смещение найти автоматизированно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если только смещение, без поворота то попробуйте,  phaseCorrelate() .

Можно еще вырезать шаблон и использовать templateMatching, 

Есть и более продвинутые способы, например : https://www.sicara.ai/blog/2019-07-16-image-registration-deep-learning

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×