我试图将我的图像逐点映射到三维空间。
例如,如果原始图像在位置X
的强度为100,我想在强度为100的3D位置Y
中绘制此点。我想为每个点重复此步骤/像素,并获得最终图像。我最大的问题是我想逐点做。
我感谢任何意见或建议。谢谢。
=======================
P.S。
当我写这个问题时,我想出了一个主意。我知道如何使用warp()
功能将“整个”图像打印到3D中的某个位置/形状。如果我给出一个点强度值和一个3D点作为扭曲函数的参数,而不是使用我的整个图像作为扭曲函数的参数,并且对每个图像点重复这个步骤,我是否会在3D中看到最终图像的下降?如果有更好的功能使用,请告诉我。
答案 0 :(得分:1)
听起来像是在寻找scatter3
:
I = imread('cameraman.tif');
[x y]=meshgrid(1:size(I,1), 1:size(I,2));
scatter3(x(:),y(:),I(:),15,I(:),'filled');
axis tight; colormap gray
这就是你得到的(在对观点进行一些修改之后):
PS,
我使用单个scatter3
命令一次绘制所有点。你可能(我不知道你为什么要这样做)逐一做到这一点
figure;
for ii=1:numel(x)
scatter( x(ii), y(ii), I(ii), 15, I(ii), 'filled');
hold on; % need this!
end
axis tight; colormap gray;