【发布时间】:2017-10-10 18:45:25
【问题描述】:
我有这个由下面的简单代码生成的 3D 图像。
% Input Image size
imageSizeY = 200;
imageSizeX = 120;
imageSizeZ = 100;
%# create coordinates
[rowsInImage, columnsInImage, pagesInImage] = meshgrid(1:imageSizeY, 1:imageSizeX, 1:imageSizeZ);
%# get coordinate array of vertices
vertexCoords = [rowsInImage(:), columnsInImage(:), pagesInImage(:)];
centerY = imageSizeY/2;
centerX = imageSizeX/2;
centerZ = imageSizeZ/2;
radius = 28;
%# calculate distance from center of the cube
sphereVoxels = (rowsInImage - centerY).^2 + (columnsInImage - centerX).^2 + (pagesInImage - centerZ).^2 <= radius.^2;
%# Now, display it using an isosurface and a patch
fv = isosurface(sphereVoxels,0);
patch(fv,'FaceColor',[0 0 .7],'EdgeColor',[0 0 1]); title('Binary volume of a sphere');
view(45,45);
axis equal;
grid on;
xlabel('x-axis [pixels]'); ylabel('y-axis [pixels]'); zlabel('z-axis [pixels]')
我曾尝试使用isosurface 和其他一些体积可视化工具绘制图像,但绘图中仍有不少惊喜。
- 已编写代码以符合图像坐标系(例如,请参阅:vertexCoords),我认为这是一个左手坐标系。尽管如此,图像仍以笛卡尔(右手)坐标系显示。我试图看到如下图所示,但这根本没有发生。
- 我想知道是否编写了可视化函数以按照它们的方式显示图像。
接下来,我要编写代码的其他方面,例如,如果我有一个输入图像 sphereVoxels 如上所述,除了将其可视化之外,我还想找到北、东南、西,图像中的顶部和底部位置,以及顶点坐标的编号和计数,等等。
我预见,如果我不坚持使用一个坐标系,这可能会让我感到困惑,并且考虑到可视化工具主要使用右手坐标系,我想从一开始就坚持下去。但是,我真的不知道该怎么做。
右手坐标系:
有什么建议可以解决这个问题吗?
【问题讨论】:
-
你想改变坐标轴方向吗?这段代码末尾的
set(gca,'XDir','reverse','YDir','reverse');对你有用吗? -
您好,谢谢。这实际上只会改变轴的方向,因此只会影响可视化。我想要的是永久转换,例如,如果我想在某个位置找到像素值,我会使用
P(x,y,z),而不是P(y,x,z)。