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

Вопрос:

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

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'))

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