MATLAB – Как поместить одно изображение на другое?

Вопросы и ответы
Вопрос:У меня есть изображение Я получил только восстановленное по фазе изображение с использованием функции fftn. Моя цель Используя только реконструкцию данного изображения, я получаю только ребра и линии Затем я хочу покрасить эти линии и края с красным или синим цветом в восстановленном только фазе изображении. Затем я хочу поместить это "цветное" изображение на исходное

Вопрос:

У меня есть изображение

enter image description here

Я получил только восстановленное по фазе изображение с использованием функции fftn.

Моя цель

  • Используя только реконструкцию данного изображения, я получаю только ребра и линии

  • Затем я хочу покрасить эти линии и края с красным или синим цветом в восстановленном только фазе изображении.

  • Затем я хочу поместить это “цветное” изображение на исходное изображение, чтобы края и линии из исходных изображений могли быть сильно освещены с соответствующим красным или синим цветом.

Но когда я запускаю код, я получаю следующую ошибку

‘Индексы индексов должны быть либо натуральными целыми числами, либо логическими.

Ошибка в sagar_image (строка 17)
наложение (ph) = 255;

Итак, что мне делать?

clc; close all; clear all; img=imread(‘D:baby2.jpg’); figure,imshow(img); img=rgb2gray(img); fourier_transform=fftn(img);%take fourier transform of gray scale image phase=exp(1j*angle(fourier_transform)); phase_only=ifftn(phase);%compute phase only reconstruction figure,imshow(phase_only,[]); ph=im2uint8(phase_only);%convert image from double to uint8 superimposing = img; superimposing(ph) = 255; figure, imshow(superimposing,[]), Ответ №1

наложение (ph) = 255 может означать –
1. ph содержит индексы наложения, что вы хотите нарисовать белый (255).
2. ph является “логическим” изображением того же размера, что и наложение, каждый пиксель, который оценивается как “истинный” в ph, будет окрашен в белый цвет в наложении.

То, что вы имели в виду, вероятно:

threshold = 0.2; superimposing(real(phase_only) > threshold) = 255;

Если вы хотите сплавить два изображения и увидеть их один поверх другого, используйте imfuse:

imshow(imfuse(real(phase_only), img, ‘blend’))

Оцените статью
Добавить комментарий