OmgZomg 2 Жалоба Опубликовано October 17, 2020 Доброго времени суток, товарищи! Имеются изображения. Не могу приложить к теме, позволяет только 80кб файл. Их нужно наложить одно на другое. Но они со "сдвигом". Как правильно их наложить, учитывая сдвиг? Чтоб всё совпало Накладываю изображения с помощью функции numpy.stack() Благодарю! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 21, 2020 А что должно получиться ? Насколько я помню, stack сделает 6 слойное изображение. Вы этого добиваетесь? Или нужно просто визуальное наложение с прозрачностью ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
OmgZomg 2 Жалоба Опубликовано October 24, 2020 On 10/21/2020 at 6:27 PM, Smorodov said: А что должно получиться ? Насколько я помню, stack сделает 6 слойное изображение. Вы этого добиваетесь? Или нужно просто визуальное наложение с прозрачностью ? Именно этого и добиваюсь. Я работаю с многослойными изображениями (мульти, гипер спектр). Сейчас я одноканальные изображения "накладываю" друг на друга без учета сдвига. Это не очень хорошо. Вот как этот сдвиг устранить? И, кстати, не только 6 слойное. Я и 13 слойное делал. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 27, 2020 Если изображения трансформированы сдвигом, масштабом и поворотом, можно попробовать estimateRigidTransform . Если только смещение, без поворота то, как альтернатива - phaseCorrelate() . Для того чтобы np.stack работала, изображения должны быть одинакового размера и типа, то есть придется их как-то привести к стандартному формату. Вначале посчитать среднее смещение, и принять эту точку за начало отсчета, затем создать пустое изображение для каждого слоя и вклеить в них со смещением, поворотом исходные изображения. Можно использовать warpAffine (попробовать можно здесь. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
OmgZomg 2 Жалоба Опубликовано October 28, 2020 Все изображения одинакового размера. Сделал так: на каждом изображении выбрал одну точку и посчитал смещение. Далее создал пустое изображение (numpy матрица с n каналов). И в эту пустую матрицу накидал изображений с учетом смещения. Все получилось. Вопрос: Я точку, чтобы посчитать смещение, на каждом изображении выбираю вручную. Можно ли как-то смещение найти автоматизированно? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 28, 2020 Если только смещение, без поворота то попробуйте, phaseCorrelate() . Можно еще вырезать шаблон и использовать templateMatching, Есть и более продвинутые способы, например : https://www.sicara.ai/blog/2019-07-16-image-registration-deep-learning Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах