【问题标题】:How to convert from the image coordinates to Cartesian coordinates如何将图像坐标转换为笛卡尔坐标
【发布时间】: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 和其他一些体积可视化工具绘制图像,但绘图中仍有不少惊喜。

  1. 已编写代码以符合图像坐标系(例如,请参阅:vertexCoords),我认为这是一个左手坐标系。尽管如此,图像仍以笛卡尔(右手)坐标系显示。我试图看到如下图所示,但这根本没有发生。
  2. 我想知道是否编写了可视化函数以按照它们的方式显示图像。

图像坐标系:

接下来,我要编写代码的其他方面,例如,如果我有一个输入图像 sphereVoxels 如上所述,除了将其可视化之外,我还想找到北、东南、西,图像中的顶部和底部位置,以及顶点坐标的编号和计数,等等。

我预见,如果我不坚持使用一个坐标系,这可能会让我感到困惑,并且考虑到可视化工具主要使用右手坐标系,我想从一开始就坚持下去。但是,我真的不知道该怎么做。

右手坐标系:

有什么建议可以解决这个问题吗?

【问题讨论】:

  • 你想改变坐标轴方向吗?这段代码末尾的set(gca,'XDir','reverse','YDir','reverse'); 对你有用吗?
  • 您好,谢谢。这实际上只会改变轴的方向,因此只会影响可视化。我想要的是永久转换,例如,如果我想在某个位置找到像素值,我会使用P(x,y,z),而不是P(y,x,z)

标签: matlab image-processing


【解决方案1】:

当您调用meshgrid 时,尺寸xy 会切换(与ndgrid 相反)。例如,在您的情况下,这意味着 rowsInImage[120x100x200] = [x,y,z] 数组而不是 [100x120x200] = [y,x,z] 数组,即使 meshgrid 是使用 y,x,z 顺序中的参数调用的。我会将这两行更改为经典的x,y,z 顺序:

[columnsInImage, rowsInImage, pagesInImage] = meshgrid(1:imageSizeX, 1:imageSizeY, 1:imageSizeZ);
vertexCoords = [columnsInImage(:), rowsInImage(:), pagesInImage(:)];

【讨论】:

  • 谢谢@G.J.我以前试过这个,但它仍然没有给我想要的东西。我需要从一开始就转换坐标系的东西。
猜你喜欢
  • 1970-01-01
  • 2020-07-05
  • 2016-04-14
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多