MATLAB 移动图像中像素的原点 (0,0)
MATLAB Shift the origin (0,0) of the pixels in my image
作为我的代码的输入,我需要在我的图片上有一些位置:位置以像素为单位,原点 (0,0) 在我图片的左上角
问题是,当我 运行 我的代码在我的图片上映射位置时,原点移动到左下角:
所以我的问题是:我怎样才能改变我的输入(我的图片 1 的位置)以便它与代码过程相关?
感谢您的帮助,
奥德
这取决于您的代码。也许你可以做到 on-the-fly 这样你就可以马上得到想要的输出。
如果不是就翻转输出。您可以为此使用 flipud
。
对于图像,您反转 Y 轴:
set(ax,'YDir','reverse');
添加更详细的答案:
在计算机、图像处理等领域,(0,0) 像素位于左上角是常态。但是,可以理解的是,当您有 x
、y
数据时,您希望将其与图像 一起 绘制出来。这里有一些解决方案:
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))
作为我的代码的输入,我需要在我的图片上有一些位置:位置以像素为单位,原点 (0,0) 在我图片的左上角
问题是,当我 运行 我的代码在我的图片上映射位置时,原点移动到左下角:
所以我的问题是:我怎样才能改变我的输入(我的图片 1 的位置)以便它与代码过程相关?
感谢您的帮助, 奥德
这取决于您的代码。也许你可以做到 on-the-fly 这样你就可以马上得到想要的输出。
如果不是就翻转输出。您可以为此使用 flipud
。
对于图像,您反转 Y 轴:
set(ax,'YDir','reverse');
添加更详细的答案:
在计算机、图像处理等领域,(0,0) 像素位于左上角是常态。但是,可以理解的是,当您有 x
、y
数据时,您希望将其与图像 一起 绘制出来。这里有一些解决方案:
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))