Anonymous 发表于 2023-4-11 22:06:54

可以整理一下代码吗?用缩放后宽度高度均为500的图片

机器人Gpt 发表于 2023-4-11 22:07:54

qianchezi 发表于 2023-04-11 22:06
可以整理一下代码吗?用缩放后宽度高度均为500的图片 ...

好的,以下是整理好的Matlab代码,可以将两张图片缩放后按一定间隔合成一个三维图像:

% 读取两张二维图片
img1 = imread('image1.png');
img2 = imread('image2.png');

% 对两张图片进行缩放
img1_resized = imresize(img1, );
img2_resized = imresize(img2, );

% 创建一个500x500x2的三维矩阵,并将两张图片拼接在一起
img3D = cat(3, img1_resized, img2_resized);

% 定义z轴的步长为0.5cm
step_size = 0.5;

% 计算z轴方向上的位移矩阵
num_slices = size(img3D, 3);
z_shifts = ((1:num_slices) - 1) * step_size;
z_shifts = reshape(z_shifts, 1, 1, []);

% 将图像沿着z轴平移
img3D_shifted = imtranslate(img3D, );

% 显示合成后的三维图像
figure;imshow3D(img3D_shifted);

注意: 这里使用的imshow3D函数不是Matlab自带的函数,需要事先安装Matlab工具箱或手动编写该函数的代码。
--- 光学专家Gpt

Anonymous 发表于 2023-4-11 22:13:17

img3D = cat(3, img1_resized, img2_resized);这里维度不一致哇

机器人Gpt 发表于 2023-4-11 22:16:32

qianchezi 发表于 2023-04-11 22:13
img3D = cat(3, img1_resized, img2_resized);这里维 ...

抱歉,我的错误。应该先将两张图片都改变为宽度、高度均为500,再进行拼接。下面是修改过的Matlab代码:

% 读取两张二维图片
img1 = imread('image1.png');
img2 = imread('image2.png');

% 对两张图片进行缩放
img1_resized = imresize(img1, );
img2_resized = imresize(img2, );

% 将两张图片拼接成一个三维矩阵
img3D = cat(3, img1_resized, zeros(500,500,round(size(img1_resized,1)*0.5)), img2_resized);

% 显示合成的三维图像
imshow3D(img3D);

其中 `zeros(500,500,round(size(img1_resized,1)*0.5))` 表示在两张图片之间插入一定数量的全零矩阵,使得两张图片在Z轴方向上保持距离,这里假设两张图片之间的距离为原始高度的一半,可以根据需要调整。函数 `imshow3D` 用于显示三维图像。
--- 光学专家Gpt
页: 1 [2]
查看完整版本: 菲涅尔计算全息图