2009-07-17 10 views
27

Je souhaite faire pivoter les photos automatiquement, même si les métadonnées EXIF ​​concernant l'orientation de l'image ne sont pas disponibles.Algorithme de détection de l'orientation de la photo

Y a-t-il de bons algorithmes pour détecter l'orientation d'une photo? Les images sont des photographies d'un appareil photo numérique. L'algorithme n'a pas besoin de fonctionner parfaitement, mais toute réduction de la quantité d'interaction humaine nécessaire pour faire pivoter correctement les photos serait un avantage.

J'ai trouvé ces deux documents sur le sujet:

Pointeurs à d'autres recherches et mises en œuvre en particulier sont appréciés.

+0

Il ne semble pas être un algorithme pour l'orientation verticale/horizontale automatique, mais c'est l'algorithme le plus proche que j'ai pu trouver avec quelques implémentations là-bas: deskew. Vérifiez ImageMagick deskew, ou: http://www.google.com/codesearch/p?ct=rc#f0yt7jaEG7A/raster/deskewer.cpp –

+3

Vous pourriez également être intéressé par le fait que les gens envisagent l'astuce de la rotation des images comme une nouvelle style de CAPTCHA. Une petite image circulaire est présentée avec un objet évident (pour nous), mais pas d'horizon clair. Je réalise que cela ne vous aide pas, mais cela souligne la profondeur du problème. http://www.richgossweiler.com/projects/rotcaptcha/rotcaptcha.pdf – Omniwombat

+0

@Luke Francl, je veux faire une chose similaire, alors qu'est-ce qui a finalement fonctionné pour vous? – Lazer

Répondre

9

De nombreuses photographies d'appareils photo numériques grand public sont des personnes, qui pourraient être utilisées pour l'orientation. La détection de visage est un domaine de recherche bien étudié. La détection de visage de base vous donnerait un rectangle dont le côté le plus long devrait être la dimension verticale. En outre, si vous pouvez détecter les yeux/bouche, vous devriez être en mesure de choisir l'orientation correcte du rectangle.

Beaucoup d'autres photos sont des clichés touristiques, où le ciel est haut et bleu, et le sol est en panne et vert.

+3

De nombreux algorithmes de détection de visage ne trouveront pas les visages à l'envers, vous devrez donc rechercher les visages dans les quatre directions possibles. – Janusz

+2

C'est quelque chose que j'ai considéré depuis l'examen des documents que j'ai liés à ci-dessus, car au moins l'un d'eux utilise la reconnaissance du visage dans le cadre de l'algorithme. Étant donné que la grande majorité de mes corpus photo comprendra des visages, je pense que cela pourrait bien fonctionner (en supposant que je puisse trouver un programme de reconnaissance faciale qui puisse reconnaître l'orientation, par Janusz). –

-2

Si les images ne sont pas carrées, vous pouvez faire l'hypothèse que les images par défaut sont plus larges qu'elles ne le sont. Si c'est le cas, déterminer si vous avez besoin de pivoter est juste une question de comparaison du rapport d'aspect et de rotation pour réorienter à défaut. Bien que vous pouvez vous retrouver avec des images à l'envers.

+2

Cela n'est vrai que pour les images par défaut. – Janusz

+0

Il est vrai que lorsque les gens tournent l'appareil photo pour prendre de telles photos, à moins que les visages ne soient latéraux ou à l'envers, vous pouvez utiliser le format d'image pour au moins un soupçon. – bdbaddog

3

Je n'ai trouvé que http://sourceforge.net/projects/rotator/.

J'ai utilisé un ensemble de test de photos de vacances comprenant 70 photos avec environ 18 nécessitant une rotation. Après le traitement avec les paramètres par défaut, il y en avait 20 qui ont été tournés ou non pivotés par erreur.

Pas si génial.