什么方面起来了? - 自动图像旋转算法

Tho*_*aaf 24 imagemagick image-processing

像Google Picasa这样的软件很好地证明了软件可以找出没有Exif-Data拍摄照片的方式,因为它并非在每台相机中都可用.

是否有记录的算法输出图像是否必须旋转?我想在不使用EXIF数据的情况下找出轮换.如果可能的话,我会想用ImageMagick来做这件事.

Ste*_*pel 28

这是一个复杂的问题,因此需要进行持续的研究.Yann的回答基本上是指向通常的方法(+1),mfrellum模式识别主题的暗示也同样适用(+1) - 对于更深入的分析,您可能希望阅读以下几篇论文(从我过去研究的主观选择):

[请注意:下面的大多数PDF链接都是从Google学术搜索中推断出来的- Google自然善于在其他地方找到匹配的PDF文件,以获取公开发布的论文摘要,其中实际内容通常隐藏在付费墙之后.当然,这种合法性受到热烈的讨论,因此首先要定期屏蔽公共资助的科学研究 - 做出自己的判断!

不幸的是,我不知道任何现成的实现/库,但是如果至少没有几个位可用,我会感到惊讶.

玩得开心 :)


Chr*_*isF 15

当可用时,它可能会读取存储在jpg头中的exif信息.这样可以在拍摄照片时显示相机的方向.这比尝试分析照片以查看哪种方式更简单.

八种可能的方向.标志告诉你哪个方向:

EXIF Orientation Value  Row #0 is:  Column #0 is:
1                       Top         Left side
2*                      Top         Right side
3                       Bottom      Right side
4*                      Bottom      Left side
5*                      Left side   Top
6                       Right side  Top
7*                      Right side  Bottom
8                       Left side   Bottom

NOTE: Values with "*" are uncommon since they represent "flipped" orientations.
Run Code Online (Sandbox Code Playgroud)

这将减少必须使用图像识别的照片数量.

  • 注意:我在更新问题之前添加了此答案**,以指定EXIF信息并非始终可用. (4认同)

Yan*_*min 7

我不知道具体的实现,但这里有一些想法:

  1. 天是蓝的.沿着边缘寻找蓝色.更多蓝色=更有可能上升.
  2. 图像的上部区域比下部区域具有更少的细节(天空,云).
  3. 进行边缘检测并查找长水平线.如果它们不是水平的,那么图像可能就在它的侧面.结合#1和#2,看看你是否180度.

请注意,EXIF数据中有一个旋转字段,来自摄像机的方向传感器.始终首先使用此数据,其余的是图像处理猜测.


小智 5

我不知道这个问题的现成解决方案,但它是一个分类问题,并且有许多经典算法可以使用. BD Ripley的模式识别和神经网络是一个很好的读物.

openCV有一个可用于此的机器学习模块.

该解决方案可能涉及到Yann Ramin的答案中的1-3启发式算法,但量化为0到1之间的数字并放入向量中.您可以将imags与有关方向的exif数据一起使用,以便为分类器创建训练集.