Вопрос:
У меня есть изображение
Я получил только восстановленное по фазе изображение с использованием функции 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’))