我有一张热图

并希望将此2D矩阵转换为三维体积/形状/表面数据点,以便进一步处理。而不仅仅是使用surf在3D中显示它。
做这件事的好方法是什么?
有了这个社区的大量帮助,我可以走得更近:
为了简单起见,我将尺寸缩小到45x45px。
I = (imread("TESTGREYPLASTIC.bmp"))./2+125;
Iinv = 255-(imread("TESTGREYPLASTIC.bmp"))./2-80;%
for i = 1:45
for j = 1:45
A(i, j, I(i,j) ) = 1;
A(i, j, Iinv(i,j) ) = 1;
end
end
volshow(A)这并不理想,但矩阵是我现在想要的。也许,当处理1200x1200点时,循环可以得到改进,以运行得更快。

我现在如何创建一个真正的封闭曲面?
发布于 2020-10-07 07:50:55
在您与@BoilermakerRV对话之后,我想您正在寻找以下两个结果之一:
m*n by 3矩阵.0和1的
请看一下生成这两种结果的以下示例:
close all; clc; clear variables;
I = rgb2gray(imread('data2.png'));
imshow(I), title('Data as image')
% generating mesh grid
[m, n] = size(I);
[X, Y] = meshgrid(1:n, 1:m);
% converting image to list of 3-d points
P = [Y(:), X(:), I(:)];
figure
scatter3(P(:, 1), P(:, 2), P(:, 3), 3, P(:, 3), '.')
colormap jet
title('Same data as a list of points in R^3')
% converting image to 256 layers of voxels
ind = sub2ind([m n 256], Y(:), X(:), I(:));
V = zeros(m, n, 256);
V(ind) = 1.0;
figure
h = slice(V, [250], [250], [71]) ;
[h.EdgeColor] = deal('none');
colormap winter
camlight
title('And finally, as a matrix of 0/1 voxels')



发布于 2020-10-07 00:23:24
所显示的等高线图不能用"2D“数据生成。它需要以下三项投入:
[XGrid,YGrid] = meshgrid(-4:.1:4,-4:.1:4);
C = peaks(XGrid,YGrid);
contourf(XGrid,YGrid,C,'LevelStep',0.1,'LineStyle','none')
colormap('gray')
axis equal其中,XGrid、YGrid和C都是定义每个点的X值、Y值和Z值的NxN矩阵。

如果您希望这是"3D",只需使用surf
surf(XGrid,YGrid,C)

https://stackoverflow.com/questions/64235246
复制相似问题