Comment lire l'heure à partir enregistrées de la caméra de surveillance vidéo?
J'ai un problème lorsque je dois lire le moment de l'enregistrement de la vidéo enregistrée par une caméra de surveillance.
Le temps s'affiche sur la zone en haut à gauche de la vidéo. Ci-dessous un lien vers la capture d'écran de la zone qui affiche le temps. Aussi, le chiffre de la couleur(blanc/noir) ne cesse de changer au cours de la durée de la vidéo.
http://i55.tinypic.com/2j5gca8.png
Merci de me guider dans la direction d'approche de ce problème. Je suis un programmeur Java, donc préférez une approche par le biais de Java.
EDIT:
Grâce unhillbilly pour le commentaire. J'avais regardé le Ron Cemer ROC de la bibliothèque et son rendement est nettement en dessous de nos besoins.
Depuis le roc de la performance est moins que prévu, j'avais l'intention de construire un jeu de caractères à l'aide de l'écran de gagner pour tous les chiffres, et l'utilisation de l'image/pixel comparaison de la bibliothèque de comparer l'image du temps avec le jeu de caractères pour afficher un résultat probabiliste après comparaison.
Alors que je cherchais une bonne comparaison d'images de la bibliothèque(je serais OK avec un non-bibliothèque java qui je peux courir à l'aide de la ligne de commande). Également des conseils sur l'approche ci-dessus serait vraiment utile.
OriginalL'auteur stressed_geek | 2010-12-21
Vous devez vous connecter pour publier un commentaire.
Il ne semble pas comme vous avez besoin d'une véritable ROC ici.
Je suppose que les nombres sont toujours dans la même position dans l'image. Vous n'attendez chiffres de 0 à 9 à chacun de connaître les positions (en noir ou en blanc).
Un simple modèle correspondant à chaque position de chacun des chiffres (vous aurez 20 modèles pour les 10 chiffres à chaque couleur) est très rapide (en temps réel) et devrait vous donner des résultats très précis.
Vous pouvez consulter ce lien:stackoverflow.com/questions/2407113/...
Si vous avez l'image, vous devriez pouvoir assez facilement écrire vous-même un modèle d'appariement solution en soustrayant chaque modèle d'image de l'image source. Vous pouvez utiliser votre modèle sous un masque de ne considérer que les différences qui sont valables dans le modèle de ce qui serait effectivement ignorer l'arrière-plan.
OriginalL'auteur Adi Shavit
Quel est le format de la source (vhs, dvd, photos)? Il est possible que l'horodatage est codée dans les données.
Mise à jour avec plus de détails
Alors je comprends parfaitement le désir d'avoir un système automatisé de bout en bout du processus (surtout si vous faites de la vente de cette application, par opposition à la création d'une maison de l'outil), il serait plus efficace d'avoir quelqu'un entrer manuellement l'heure de début de chaque vidéo (même si il y a des centaines d'entre eux ), puis à passer des semaines de codage se présente au travail automatiquement.
Ce que je ferais (à défaut d'un simple, très rapide à mettre en œuvre, super-précision de l'OCR solution à laquelle je ne crois pas qu'il existe):
Créer un couple de tables de base de données, comme
video_group
peut contenirvideo
serait déjà renseigné avec la vidéo, les noms de fichier par un script d'importation. D'abord affecter tout ungroup_id
de 1 (non affecté)Créer un simple Winforms ou WPF application (pardon pour mon ASCII art):
Un utilisateur (n'importe qui pourrait le faire - secrétaire, concierge, même une récente CS d'études supérieures). Tout ce qu'ils ont à faire est de lire l'heure à partir de l'aperçu de l'image, tapez-la dans la
Start Time
domaine, et Cliquez sur "mettre à jour" ou "Suivant" pour mettre à jour la base de données et de passer à la suivante. Garder la sélection de Groupe à partir d'une vidéo à l'autre à moins que l'utilisateur change de.En supposant qu'il prend de l'utilisateur 30 secondes pour lire, le type et cliquez sur suivant, Ils pouvaient terminer 100-150 vidéos en une heure (l'Appeler 75 pour une estimation plus réaliste). Et, les stagiaires sont beaucoup moins cher que le temps du développeur.
Si vous avez vraiment des "centaines" de vidéos, ça va encore être plus rapide pour faire de cette façon que de glander avec OCR. Si l'OCR fonctionne pour la plupart, vous aurez probablement besoin d'avoir quelqu'un inspecter manuellement tout pour voir si les résultats sont corrects. ce qui pose la question, pourquoi s'embêter avec le ROC?
Dans ce cas, vous avez seulement besoin de lire l'heure à partir de la première image, puis ajouter le nombre d'images*1/fps pour obtenir le temps à n'importe quel moment de la vidéo. Peut-être plus efficace, il suffit de lire la première image horodatage manuellement et calculer le reste.
C'est ce que nous faisons en ce moment, mais depuis que nous avons des centaines de vidéos, nous voulons automatiser le processus.
En outre, nous sommes fusionner des vidéos à partir de 4 appareils différents qui tous commencent à légèrement différentes fois pour former une seule vidéo, il est donc important pour nous d'être en mesure de lire l'heure de chaque vidéo avant de relancer la vidéo de la fusion de script.
OriginalL'auteur 3Dave
Java OCR fonctionne parfaitement à votre situation (Ron Cemer ici). Tout ce que vous devez faire est de supprimer l'image de fond, ou de les rendre toujours moins de 50% de blanc, de sorte que les caractères blancs seront en blanc sur fond noir lorsque l'image est convertie en monochrome.
Train JavaOCR de la police, de l'extrait de zone rectangulaire de l'image, supprimez l'arrière-plan et vous êtes opérationnel.
Je suggère un algorithme qui ressemble à r,g,b et met tout de noir où r,g,b ne sont pas exactement les mêmes valeurs. Qui laissera seuls les pixels qui sont parfaits nuances de gris. Depuis que l'image est en couleur et les chiffres sont monochromes, qui laissera les chiffres et quelques poussières.
JavaOCR veut voir des caractères noirs sur fond blanc, donc une fois que vous avez fait ci-dessus, vous aurez également besoin d'inverser l'image monochrome (blanc = noir et vice-versa). Exécutez ensuite que, grâce à la JavaOCR bibliothèque, passant d'échantillons de référence de tous les personnages, vous vous attendez à reconnaître, et votre problème devrait être (au moins pour la plupart) résolu.
OriginalL'auteur Ron Cemer
Essayer Tesseract de Google, il y sont un couple de la JNI wrappers disponibles. S'assurer de lire la FAQ de tirer seulement les chiffres.
OriginalL'auteur Steve-o