【问题标题】:How to deduce angle an image was rotated through?如何推断图像旋转的角度?
【发布时间】:2013-10-30 03:17:47
【问题描述】:

我有一张旋转到未知角度的图像,但我没有原始图像。如何使用 matlab 命令确定旋转角度?

我需要将图像旋转回这个角度才能到达原始图像。

【问题讨论】:

  • 如果没有原始图像,当你找到它时,你将如何识别正确的未旋转?
  • 顺便说一句,标签已被分解。 “图像处理”不是“图像”“处理”。

标签: matlab image-processing


【解决方案1】:

正如@High Performance Mark 在他的评论中提到的那样,当您不清楚如何识别图像已旋转,或者您无法确定旋转已正确纠正时,很难给出答案。

换句话说,您首先必须找到一种方法来确定旋转角度,方法是分析图像中的特定特征,告知您可能的旋转。例如,如果您的图像包含人脸,您将进行人脸检测(File Exchange 上有大量代码,然后旋转以使眼睛朝上,嘴巴朝下。如果您的图像包含应该在未旋转的图像中是垂直和/或水平的,您可以将Hough-transform 应用于您的图像并使用houghpeaks 找到最可能的旋转角度。

最后,要旋转图像,您可以使用imrotate

【讨论】:

  • @mohammad:如果您觉得我的回答有帮助,请考虑接受。
  • 请问我不知道如何接受?它被接受了,只有在最后一步我不知道如何提取角度旋转。请再帮我一次?非常感谢乔纳斯。
  • @mohammad:为了正式接受答案,您可以单击问题旁边的复选标记。至于提取角度:如果您使用霍夫变换,则结果中的 y 轴是线的方向。最常见的方向导致霍夫变换结果中的最高值。因此,如果您在霍夫变换结果中识别出最大值的坐标,则 y 值就是旋转角度。
  • @mohammad:点击我个人资料中的链接,您可以与我联系。但是,如果您有具体问题,最好在此站点上创建新问题,那里有许多其他优秀的程序员可以帮助您。
【解决方案2】:

没有示例或更详细的描述,很难给出好的建议。但一般来说,这可以用于某些类型的图像。

例如,假设图像显示建筑物、电线杆、家具或应该有垂直边缘的东西。运行边缘检测器,然后进行傅里叶变换。对于未旋转的图像,沿 Y 轴应该有峰值或功率谱中的一些可见图案。功率谱的旋转方式与图像相同。如果您可以设计一种算法来查找指示垂直边缘的光谱特征,则可以测量其角度 w.r.t。原点(零频率)。那就是图像旋转的角度。

但您必须将该特定特征与功率谱中显示的所有其他图像特征区分开来。玩得开心——这种细节会占用你大部分的创造力和时间。

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 2021-04-12
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多