【发布时间】:2016-07-27 09:35:57
【问题描述】:
我想生成一个黑色的 64x64 像素图像,中间有一个 5x10 像素的白色矩形,然后使用 2D 傅里叶变换来绘制原始图像、模块、相位和恢复图像。
这是我的代码:
image_1_black = double(zeros(64, 64, 3, 'uint8'));
image_1_white = double(ones(5, 10, 3, 'uint8'));
% I need to do something like this:
% image1 = image_1_black with image_1_white
IMAGE_1 = fft2(image_1);
IMAGE_1 = fftshift(IMAGE_1);
IMAGE_1_REC = fftshift(IMAGE_1);
image_1_rec = ifft2(IMAGE_1_REC);
figure;
subplot(2, 2, 1);
imagesc(image_1);
colormap(gray);
axis off;
title('Original image');
subplot(2, 2, 2);
imagesc(100*log(1 + abs(IMAGE_1)));
colormap(gray);
axis off;
title('Magnitude spectrum');
subplot(2, 2, 3);
imagesc(angle(IMAGE_1));
colormap(gray);
axis off;
title('Phase spectrum');
subplot(2, 2, 4);
imagesc(image_1_rec);
colormap(gray);
axis off;
title('Imagen recuperada');
我知道如何单独生成两个图像,但不知道如何将它们组合起来以获得所需的图像以及我的代码正常工作。
谢谢大家!
【问题讨论】:
-
您想在第一张图片上显示白色图片吗?还是第二个?
-
我需要第一张图片中间的白色图片
-
那你为什么要创建第二张白色图像?
-
只做:image_1_black = double(zeros(64, 64, 3, 'uint8')); image_1_black(29:34,24:39,:) = 1;这应该这样做
-
@user2205242 只需执行
image_1_black = zeros(64,64,3);。指定uint8作为类型然后强制转换为double是多余的。它默认创建一个double精度矩阵。
标签: image matlab matrix colors fft