Jump to content
Compvision.ru
Sign in to follow this  
OmgZomg

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

Recommended Posts

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

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

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

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

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

Благодарю!

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
On 10/21/2020 at 6:27 PM, Smorodov said:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Сделал так:

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×