11
votes

Existe-t-il un algorithme ou une bibliothèque capable de détecter le mouvement flou dans des images?

Quelqu'un peut-il connaître un algorithme qui peut retourner FUZZY VRAI / FALSE à si une image a une image flou / caméra secoue dans une image?

Idéalement, il serait particulier à mouvement flou, car de nombreuses images dans l'ensemble pourraient avoir floues ( bokeh ) arrière-plans.

Une préférence linguistique serait C, Perl, Utilitaire Shell ou Python, mais je suis ouvert à tout ce qui est vraiment.

Avec mes connaissances actuelles de mathématiques / de programmation, je ne pense pas avoir vraiment d'espoir d'écrire un tel algorithme, qu'utilisez seulement une personne qui prend des paramètres ...


1 commentaires

Si possible, veuillez noter une certaine réponse comme acceptée. Au moment, il n'est pas clair s'ils conviennent à des fins ou non.


4 Réponses :


2
votes

Il existe de multiples façons de faire cela, peut-être que l'une des gourous d'imagerie ici a une meilleure réponse. Quoi qu'il en soit ...

Mon premier coup serait d'avoir une analyse de fréquence de l'image (en lecture: 2D Fourier Transform). Définissez ensuite un seuil pour les hautes fréquences (c'est-à-dire des changements rapides d'un pixel à la suivante) pour vrai / faux. Motion Flou filtre les hautes fréquences. Votre kilométrage peut varier, par ex. Une image entièrement noire n'aura pas de hautes fréquences bien qu'elle ne soit pas floue. Selon la lentille et l'ouverture utilisées, des parties de l'image peuvent être floues car elles sont en arrière-plan. Je ne pense pas qu'il y ait une solution à une taille unique.


1 commentaires

Comment cela distinguerait-il entre Bokeh Flou et Motion Flou?



4
votes

Le Transformation en ondelettes discrète est un outil utile dans une telle détection. ici est un papier de Carnegie Mellon School of Computer Science sur la détection et quantifier flou dans des images en utilisant le DWT. Pour une décision binaire, vous seules le montant au niveau souhaité et tout ce qui précède est flou.


2 commentaires

Ceci est pratique, mais le document dit explicitement «il est efficace pour le flou de flou et de mouvement linéaire non concentré», ce qui signifie qu'il n'est pas très utile de détecter le flou de mouvement en particulier ...


@JOSHBLECHERSNYER SUPER-FOCUS BLUR n'est pas directionnel, alors que le flou de mouvement linéaire est. Vous pouvez exécuter une analyse de composants principaux pour obtenir les valeurs propres des vecteurs de direction des points de pointe de Flou et évaluez la force de la prédominante. Si cela dépasse un certain seuil, vous pouvez conclure que le flou est directionnel, ainsi que le mouvement linéaire flou.



0
votes

Vous pouvez également utiliser l'algorithme Richardson-Lucy. Il est principalement utilisé pour la convolution aveugle, mais comme vous savez que la motion est floue, vous devez supprimer, les algorithmes RL devraient prendre moins d'itérations pour calculer une reconstruction viable.


0 commentaires

1
votes

Pour détecter la flagrance, vous pouvez convoller une image en niveaux de gris avec le noyau de laplacie et calculer la variance. Les images ciblées doivent avoir une variance élevée et des images floues doivent avoir une variance plus faible. Vous trouverez ci-dessous le code pour le faire: xxx

Cette fonction prend une image en niveaux de gris comme entrée et il devrait s'agir d'un tenseur de 4 dim. Vous trouverez ci-dessous le code pour charger l'image: xxx

Le thréresold doit être défini très soigneusement. Si vous êtes trop bas, il peut déclarer une image floue telle que ciblée et si elle est trop élevée, il ne fera que classer une image ciblée comme floue. Un meilleur moyen est de calculer la flammes de chaque image, puis de décider en traçant un displot.

espère que cela aide :)


0 commentaires