确定图像的方向

时间:2016-01-13 21:49:52

标签: python opencv scikit-learn

enter image description here enter image description here enter image description here enter image description here

我正在尝试确定以下图像的方向。给定140x140到150X150像素之间的随机图像,没有EXIF数据。有没有一种方法可以将每个图像定义为0度,90度,180度或270度,这样当我得到特定方向的图像时,我可以将其与预定义的图像相匹配?我使用以下tutorial查看了与opencv的功能匹配,并且它可以正常工作。无论方向如何,都要将图像识别为相同,但我不知道如何区分它们。

2 个答案:

答案 0 :(得分:1)

  

我使用以下教程研究了与opencv匹配的功能,并且它可以正常工作

因此,您可以在未知旋转的图像与数据库中的图像之间建立有效匹配?而后者是已知的旋转(即直立)?

在这种情况下,您可以计算转换矩阵:

  • 定义完整平面变换的单应性(使用cv::findHomography
  • 仿射变换,表示翻译,旋转和缩放,因此最适合您的需求(使用cv::estimateRigidTransform和fullAffine = true)。您可以找到有关仿射变换的更多信息here

如果您没有任何已知图像,那么此任务在数学上似乎无法解决,但您可以使用基于人工神经网络的启发式方法,这似乎是一项研究密集型项目。

答案 1 :(得分:0)

如果您在某个地方有随机图像(例如,您尝试将某个图像与您拥有的图像列表匹配),您可以尝试将随机图像和已知图像列表的差异四次用于每个图像,每次旋转已知图像90度。无论哪一个接近零应该是你想要的。

如果新图像和图像列表的图像大小相同,您也可以只比较关键点距离差异(如果图像匹配但所有关键点都顺时针旋转一个象限相互之间,然后是90度等。)

如果你不知道那个随机图像应该是什么,我真的无法想出任何方法来解决这个问题,除非你确定一团淡蓝色应该是天空。据我所知,为了确定最新情况,必须有一些你知道的东西。