【问题标题】:Algorithm to detect photo orientation检测照片方向的算法
【发布时间】:2010-11-11 15:10:41
【问题描述】:

我想自动旋转照片,即使关于图像方向的 EXIF 元数据不可用。

有没有什么好的算法可以检测照片的方向?这些图像是来自数码相机的照片。该算法不必完美运行,但减少正确旋转照片所需的人工交互量将是一个好处。

我找到了关于该主题的这两篇论文:

对其他研究特别是实现的指针表示赞赏。

【问题讨论】:

  • 它似乎不是自动垂直/水平方向的算法,但它是我在一些实现中找到的最接近的算法:去偏斜。检查 ImageMagick 偏移,或:google.com/codesearch/p?ct=rc#f0yt7jaEG7A/raster/deskewer.cpp
  • 您可能还感兴趣的是,人们正在考虑将旋转图像的技巧作为一种新的 CAPTCHA 样式。一个小的圆形图像呈现出一个明显的(对我们而言)物体,但没有清晰的地平线。我意识到这对你没有帮助,但它确实强调了问题的深度。 richgossweiler.com/projects/rotcaptcha/rotcaptcha.pdf
  • @Luke Francl,我想做类似的事情,那么你最终做了什么?
  • @eSKay - 还没有。我把这个问题留了下来,以防万一有什么好东西。 @smackfu 有我认为最好的建议,但没有现成的可以实现它。你必须自己写。我现在对这个功能的需求不是很大,所以我没有进一步按下。
  • 您是否只想检测图像的四个边缘中的哪一个作为顶部?或者您是否希望能够在 360 度范围内选择任意旋转?我可以想象这两种情况会有不同的方法/算法。

标签: image image-processing orientation heuristics


【解决方案1】:

许多消费类数码相机拍摄的照片都是人物,可用于定位。人脸检测是一个经过充分研究的研究领域。基本的人脸检测会给你一个矩形,它的长边应该是垂直尺寸。此外,如果您可以检测到眼睛/嘴巴,您应该能够选择矩形的正确方向。

许多其他照片都是游客拍的,天空是蓝色的,地面是绿色的。

【讨论】:

  • 许多人脸检测算法无法找到倒置的人脸,因此您必须在所有四个可能的方向上寻找人脸。
  • 这是我在检查我上面链接的论文后一直在考虑的问题,因为其中至少有一篇使用人脸识别作为算法的一部分。由于我的绝大多数照片语料库都包含人脸,我认为它可能会很好用(假设我可以找到一个可以识别方向的人脸识别程序,根据 Janusz)。
  • 许多(大多数?)带有天空的旅游照片都有一个白色的天空,因为天空过度曝光需要正确曝光更暗的主体。
  • 好主意,但很多照片都没有人物!
【解决方案2】:

如果图像不是方形的,您可以假设默认图像的宽度大于高度。 如果是这种情况,确定是否需要旋转只是比较纵横比并旋转以重新定向为默认值的问题。尽管您最终可能会得到颠倒的图像。

【讨论】:

  • 这仅适用于默认图像。经常拍人脸或人的照片会转动相机...
  • 没错,但是当人们转动相机拍摄此类照片时,除非脸部侧向或上下颠倒,否则您至少可以使用纵横比作为提示。
  • 这不是真的。每个物体都可以纵向或横向拍摄。根据我的图像,比例是 60:40(横向到纵向)。如果我有方形图像,那将是因为后处理,而不是相机。
  • @Janusz,这取决于很多。您会在横向中找到令人惊叹的肖像
【解决方案3】:

我只能找到http://sourceforge.net/projects/rotator/

我使用了一组假日照片的测试集,其中包含 70 张图片,其中大约 18 张需要旋转。

使用默认设置处理后,有 20 个错误旋转或未旋转。

结果不是很好。

【讨论】:

  • 感谢用户报告!
猜你喜欢
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2011-10-29
  • 2011-07-06
  • 2012-04-10
  • 2018-03-02
相关资源
最近更新 更多