Je souhaite utiliser mon téléphone comme système de vidéosurveillance pour contrôler une pièce de ma maison et afficher une alerte lorsque quelque chose bouge.
Pour l'instant, ce que j'ai réussi à faire, c'est de prendre une photo toutes les minutes et de la télécharger via un script PHP sur mon serveur. Maintenant, je voudrais comparer l'image actuelle et l'image il y a 1 minute et détecter si quelqu'un est entré dans la pièce. Donc, fondamentalement, je devrais comparer les différences de pixels sur l'image (mais aussi en tenant compte du fait qu'un nuage peut juste dire bonjour et changer la luminosité pendant une minute)
Quelqu'un at-il une idée sur la façon d'y parvenir ou un document à lire?
Réponses:
Il me semble que ce que vous recherchez est une technique de soustraction d'arrière-plan. Avec des images bruyantes et des conditions d'éclairage changeantes, cela pourrait ne pas être trivial. La technique de pointe actuelle est la représentation matricielle de bas rang, mais elle nécessite non pas deux mais beaucoup (~ une douzaine) d'images. Voici quelques calculs intensifs: chaque image considérée comme un vecteur de pixels, des vecteurs combinés en matrice et cette matrice est décomposée en matrice de bas rang et en restes. Les colonnes matricielles de bas rang sont des arrière-plans et les restes sont des objets en mouvement. Il existe des implémentations open source, mais uniquement pour la factorisation elle-même, pas un pipeline d'images complet IIRC
Voici un article et un code pour la factorisation matricielle http://www.ece.rice.edu/~aew2/sparcs.html
Voici un aperçu du blog CS et un lien vers un autre code:
https://sites.google.com/site/igorcarron2/matrixfactorizations
http://nuit-blanche.blogspot.com/search/label/MF
Aperçu de quelques autres techniques: http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf
la source
N'oubliez pas: il y a des ombres (pas seulement la luminosité).
Je n'aime pas vraiment l'idée de James Webster, car elle consiste essentiellement à réduire la résolution dans chaque dimension et à comparer les images réduites (je n'aime pas non plus les seuils - ils sont arbitraires, vous devez les tester et les ajuster) jusqu'à ce que vous obteniez une bonne valeur et le lendemain, ces valeurs pourraient être obsolètes en raison de conditions météorologiques différentes ou d'autres effets environnementaux)
Mais pour être juste, je n'ai pas non plus de très bonne solution. Ma première idée a été de comparer chaque image à une image de référence de la pièce vide et d'exécuter une détection de bord sur l'image diff. Mais cela détecterait également les ombres. Mais je suppose que vous ne pouvez pas faire de différence entre les ombres et les autres objets ... au moins, je ne sais pas comment. Mais vous pouvez peut-être comparer le résultat après la détection de bord entre 2 images, car les ombres se déplacent généralement lentement (il y aura toujours des problèmes lorsque les voitures se déplaceront ou lorsqu'un nuage se déplacera)
la source
La technique de «factorisation matricielle» ne vous aidera PAS à faire votre travail! Le document référencé par @ mirror2image concerne la soustraction d'arrière-plan mais PAS basé sur la "factorisation matricielle".
L'utilisation de la vidéo en cours d'exécution pour détecter des objets en mouvement (humains ou véhicules) est un domaine de recherche actif.
En tant que principe de base, le système estime un arrière-plan statique typique en échantillonnant plusieurs images et prend une différence d'énergie entre l'image entrante et l'arrière-plan. Si l'énergie est importante, le pixel est classé au premier plan. Un tel ensemble de premier plan vous indique s'il existe une entrée de l'objet dans le système.
La meilleure référence à votre document de recherche (et également relativement plus simple si vous voulez vraiment l'implémenter) serait - W4 System le trouver ici et voir le document de Picardi ici comme une enquête plus détaillée pour d'autres techniques du système.
Il existe de nombreux défis qui s'appliquent au problème:
La présence de bruit crée des problèmes d'ambiguïté majeure. L'approche ici consiste à appliquer un filtrage temporel efficace et à considérer la variance du bruit pour le rendre insensible au seuil.
La présence de l'ombre crée l'ambiguïté de ne pas être un premier plan ni. Il existe des articles qui modélisent la distinction couleur / intensité pour distinguer l'ombre du réel au premier plan.
Le fond peut être complexe comme agiter des arbres ou de la mer, etc.
L'arrière-plan peut avoir une variation d'éclairage lente ou soudaine où un arrière-plan "appris" antérieur est ensuite adapté au nouveau.
L'un des papiers de référence les plus référencés, appelé algorithme de fleur de mur, montre la meilleure façon de combiner divers scénarios de ce type pour produire une détection robuste d'objets en mouvement.
la source
Je ne connais pas la solution exacte, mais vous devriez faire une sorte de hachage de l'image; un ensemble de données plus petit extrait de l'image, qui est mieux comparable que l'image entière.
Je pense que l' histogramme des couleurs est un bon choix pour cela.
Si vous divisez votre image en zones et créez des histogrammes séparés pour ces zones, vous pouvez déterminer la position / le chemin de l'intrus.
la source
Prendre la différence deux fois, c'est-à-dire que la différence des différences peut aider .. donc si la dérivée double des pixels est supérieure à un seuil dans certaines régions, vous pouvez donc l'appeler comme quelqu'un est entré dans la pièce. Un changement de luminosité donnera un gradient approximativement constant dans toute l'image, mais la prise de la dérive de Hesse ou double donnera une bonne indication du mouvement ou des changements majeurs dans la pièce.
la source