MATLAB 移动图像中像素的原点 (0,0)

MATLAB Shift the origin (0,0) of the pixels in my image

作为我的代码的输入,我需要在我的图片上有一些位置:位置以像素为单位,原点 (0,0) 在我图片的左上角

问题是,当我 运行 我的代码在我的图片上映射位置时,原点移动到左下角:

所以我的问题是:我怎样才能改变我的输入(我的图片 1 的位置)以便它与代码过程相关?

感谢您的帮助, 奥德

这取决于您的代码。也许你可以做到 on-the-fly 这样你就可以马上得到想要的输出。

如果不是就翻转输出。您可以为此使用 flipud

https://de.mathworks.com/help/matlab/ref/flipud.html

对于图像,您反转 Y 轴:

set(ax,'YDir','reverse');

添加更详细的答案:

在计算机、图像处理等领域,(0,0) 像素位于左上角是常态。但是,可以理解的是,当您有 xy 数据时,您希望将其与图像 一起 绘制出来。这里有一些解决方案:

imshow(image);
axis xy; % This line sets up the axis in a standard coordinate system

您可以使用 axis ij

还原它

通常,这还不够。由于 imshow 假设每个像素都处于整数索引位置,而您可能没有。也许您的数据以毫米为单位,或以任何其他任意单位为单位。一个解决方案是使用 imagesc

imagesc(img); 

等同于imashow(img);axis xy。此外,您可以为像素位置选择任意矩阵,如 imagesc(x,y,img);


最后,您可以 flipud 绘制您的数据,但我建议您将其与绘图内联,这样您就不会修改数据本身。

imshow(flipud(img))