【问题标题】:`rot90` not working as expected for image rotation in Matlab.`rot90` 在 Matlab 中无法按预期进行图像旋转。
【发布时间】:2012-03-04 00:18:01
【问题描述】:

IMAGE1

IMAGE2

想要的图像

我正在使用函数 flipudrot90 旋转 IMAGE1 以看起来像 IMAGE2 如下:

IMAGE2=rot90(flipud(IMAGE1));

但是,不知何故,我没有得到想要的结果,即 DESIRED IMAGE。任何人都可以找出原因吗?请忽略 DESIRED IMAGE 中的侧面图例切口。

【问题讨论】:

  • 哦,我明白了,我以为是实际结果。那么实际结果如何呢?
  • 我的错。我已经更正了变量名称并澄清了问题的结构。
  • 我正在为IMAGE1 添加数据,但我无法添加,因为它超出了问题的字数限制。如果您需要数据,请告诉我。
  • 还不清楚。您给了我们原始输入和所需的输出,但没有给我们实际的输出。所以很难确定是什么问题!
  • 哦,好的。我添加了实际输出,并相应地编辑了图像的名称。

标签: image matlab rotation image-rotation


【解决方案1】:

这是一个二维数组的示例(参见 cmets)

%# create a 2D array (3x3, but it'll work for 50x50 as well)
m = magic(3)
m =
     8     1     6
     3     5     7
     4     9     2

%# flip, then rotate, but rotate clockwise, hence the -1
rot90(flipud(m),-1)
ans =
     8     3     4
     1     5     9
     6     7     2

%# Note that this is the same as taking the transpose
m'
ans =
     8     3     4
     1     5     9
     6     7     2

【讨论】:

  • 您好 Jonas:我有 2D 数据而不是用于绘制 IMAGE1 的图像。如问题中所述,我在 IMAGE1 的 2D data 上应用 IMAGE2=rot90(flipud(IMAGE1));。我尝试了您的步骤,即先到rot90(),然后再到flipud(),但这似乎不起作用。在这种情况下,您有什么建议?
  • @S_H:你完全按照我的做法做吗? IE。向另一个方向旋转(这就是 -1 的含义)?顺序并不重要,因此您也可以先翻转然后再旋转。
  • 我知道。但它不起作用,我不知道为什么。我正在使用数据旋转然后绘图。
  • 你可以用50x50 2D数据的形式重写它而不是图像的形式吗?
  • @S_H:UPDATE2 中的图像看起来与转置完全一样。如果您再执行一次翻转并旋转一次,我敢打赌您最终会得到 UPDATE 图像。这表明您最初应用转换的数组不是 ORIGINAL IMAGE 中显示的。
猜你喜欢
  • 2021-06-01
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多