22. 8
Etape 2
• Suivi du
mouvement
de la cible
• Mouvement
de la camera
PTZ
Etape 1
• Sélection
d’une cible
23. 8
Etape 3
• Recherche
de la cible
• (détection)
Etape 2
• Suivi du
mouvement
de la cible
• Mouvement
de la camera
PTZ
Etape 1
• Sélection
d’une cible
24. 8
Etape 3
• Recherche
de la cible
• (détection)
Etape 2
• Suivi du
mouvement
de la cible
• Mouvement
de la camera
PTZ
Etape 1
• Sélection
d’une cible
50. 13
Dans l’intégration des deux algorithmes
Déclanchement de la recherche qu’en cas de nécessité
Parcours plus optimisé en cas de perte de la cible
51. 13
Dans l’intégration des deux algorithmes
Déclanchement de la recherche qu’en cas de nécessité
Parcours plus optimisé en cas de perte de la cible
52. 13
Dans l’intégration des deux algorithmes
Déclanchement de la recherche qu’en cas de nécessité
Parcours plus optimisé en cas de perte de la cible
Utilisation des threads
65. Solution de suivi de personne sur camera
PTZ se basant sur le suivi et la détection
19
66. Solution de suivi de personne sur camera
PTZ se basant sur le suivi et la détection
19
Implémentation et amélioration de
l’algorithme CCH
67. Solution de suivi de personne sur camera
PTZ se basant sur le suivi et la détection
Amélioration possible : Basculer
automatiquement entre différentes cameras
19
Implémentation et amélioration de
l’algorithme CCH
68. Solution de suivi de personne sur camera
PTZ se basant sur le suivi et la détection
Amélioration possible : Basculer
automatiquement entre différentes cameras
Plusieurs domaines d’utilisation possibles
19
Implémentation et amélioration de
l’algorithme CCH
Notes de l'éditeur
Bonjour, et merci pour votre présence membres du jury ainsi que tout le monde dans la salle
ceci sera la présentation de notre projet de fin d’étude
intitulé tracking de personne sur camera PTZ
encadré par Mr Kirmene Marzouki de ISSAT sousse
Et Mme Leila ben tkaya à SPIKE-X
Ce projet à été élaboré et sera présenté par mon collegue Achref DAOUAHI et moi-même Mohamed ABAYED
commençons par présenter le plan de notre présentation qui comporte 4 grandes partie qui sont les techniques utilisables et la technique proposée, l’amélioration de cette technique, La réalisation du projet en plus de l’intro et problématique et la conclusion et perspective
>
Le travail qui sera présenté, a été effectué dans le cadre de notre PFE au sein de la société Spike-X: spécialisée dans le développement de logiciels intelligents.
>
La vision par ordinateur permet d’extraire des informations pertinentes des images, des flux vidéo, de manière à comprendre le monde observé.
>
Notre projet porte sur le suivi en temps réel d’une personne parmi d’autres dans une scène
>
Filmée par une camera PTZ
>
Et nous devons créer une application qui contrôle automatiquement la camera, pour garder la cible suivie dans son champs de vision.
>
Le travail qui sera présenté, a été effectué dans le cadre de notre PFE au sein de la société Spike-X: spécialisée dans le développement de logiciels intelligents.
>
La vision par ordinateur permet d’extraire des informations pertinentes des images, des flux vidéo, de manière à comprendre le monde observé.
>
Notre projet porte sur le suivi en temps réel d’une personne parmi d’autres dans une scène
>
Filmée par une camera PTZ
>
Et nous devons créer une application qui contrôle automatiquement la camera, pour garder la cible suivie dans son champs de vision.
>
Le travail qui sera présenté, a été effectué dans le cadre de notre PFE au sein de la société Spike-X: spécialisée dans le développement de logiciels intelligents.
>
La vision par ordinateur permet d’extraire des informations pertinentes des images, des flux vidéo, de manière à comprendre le monde observé.
>
Notre projet porte sur le suivi en temps réel d’une personne parmi d’autres dans une scène
>
Filmée par une camera PTZ
>
Et nous devons créer une application qui contrôle automatiquement la camera, pour garder la cible suivie dans son champs de vision.
>
Le travail qui sera présenté, a été effectué dans le cadre de notre PFE au sein de la société Spike-X: spécialisée dans le développement de logiciels intelligents.
>
La vision par ordinateur permet d’extraire des informations pertinentes des images, des flux vidéo, de manière à comprendre le monde observé.
>
Notre projet porte sur le suivi en temps réel d’une personne parmi d’autres dans une scène
>
Filmée par une camera PTZ
>
Et nous devons créer une application qui contrôle automatiquement la camera, pour garder la cible suivie dans son champs de vision.
>
Le travail qui sera présenté, a été effectué dans le cadre de notre PFE au sein de la société Spike-X: spécialisée dans le développement de logiciels intelligents.
>
La vision par ordinateur permet d’extraire des informations pertinentes des images, des flux vidéo, de manière à comprendre le monde observé.
>
Notre projet porte sur le suivi en temps réel d’une personne parmi d’autres dans une scène
>
Filmée par une camera PTZ
>
Et nous devons créer une application qui contrôle automatiquement la camera, pour garder la cible suivie dans son champs de vision.
>
Le travail qui sera présenté, a été effectué dans le cadre de notre PFE au sein de la société Spike-X: spécialisée dans le développement de logiciels intelligents.
>
La vision par ordinateur permet d’extraire des informations pertinentes des images, des flux vidéo, de manière à comprendre le monde observé.
>
Notre projet porte sur le suivi en temps réel d’une personne parmi d’autres dans une scène
>
Filmée par une camera PTZ
>
Et nous devons créer une application qui contrôle automatiquement la camera, pour garder la cible suivie dans son champs de vision.
Nous avons ici 3 obstacles à dépasser :
>
Nous devons trouver une solution pour faire que la cible ne soit pas perdu a cause des autres personne ou obstacles sur la scène passants entre elle est la camera.
>
La camera n’est pas fixe, ce qui va diminuer le nombre d’algorithmes de suivi utilisables.
>
La cible est déformable, ce qui va nous limiter en termes d’algorithmes utilisables pour la détection.
Nous avons ici 3 obstacles à dépasser :
>
Nous devons trouver une solution pour faire que la cible ne soit pas perdu a cause des autres personne ou obstacles sur la scène passants entre elle est la camera.
>
La camera n’est pas fixe, ce qui va diminuer le nombre d’algorithmes de suivi utilisables.
>
La cible est déformable, ce qui va nous limiter en termes d’algorithmes utilisables pour la détection.
Nous avons ici 3 obstacles à dépasser :
>
Nous devons trouver une solution pour faire que la cible ne soit pas perdu a cause des autres personne ou obstacles sur la scène passants entre elle est la camera.
>
La camera n’est pas fixe, ce qui va diminuer le nombre d’algorithmes de suivi utilisables.
>
La cible est déformable, ce qui va nous limiter en termes d’algorithmes utilisables pour la détection.
Nous avons ici 3 obstacles à dépasser :
>
Nous devons trouver une solution pour faire que la cible ne soit pas perdu a cause des autres personne ou obstacles sur la scène passants entre elle est la camera.
>
La camera n’est pas fixe, ce qui va diminuer le nombre d’algorithmes de suivi utilisables.
>
La cible est déformable, ce qui va nous limiter en termes d’algorithmes utilisables pour la détection.
Passons aux techniques utilisables
Comme algorithmes de suivi de cible, nous avons essayé les 2 suivant:
>
Camshift
>
il cherche la région qui est plus dense en couleurs semblables a celles de la cible
>
Lucas&Kanade ou LK
>
cherche le vecteur du flot du mouvement, en cherchant la correspondance entre deux images successives
>
+Ces algorithmes sont rapides pendent l’exécution et ne sont pas sensibles a la déformation de la cible
Cependant en utilisant camshift, la forme de la cible n’est pas du tout prise en compte, et le fait que ça soit basé que sur les couleurs le rend vulnérable au arrière plans chargés.
En utilisant LK, la cible sera perdu en passant derrière un obstacle
Comme algorithmes de suivi de cible, nous avons essayé les 2 suivant:
>
Camshift
>
il cherche la région qui est plus dense en couleurs semblables a celles de la cible
>
Lucas&Kanade ou LK
>
cherche le vecteur du flot du mouvement, en cherchant la correspondance entre deux images successives
>
+Ces algorithmes sont rapides pendent l’exécution et ne sont pas sensibles a la déformation de la cible
Cependant en utilisant camshift, la forme de la cible n’est pas du tout prise en compte, et le fait que ça soit basé que sur les couleurs le rend vulnérable au arrière plans chargés.
En utilisant LK, la cible sera perdu en passant derrière un obstacle
Comme algorithmes de suivi de cible, nous avons essayé les 2 suivant:
>
Camshift
>
il cherche la région qui est plus dense en couleurs semblables a celles de la cible
>
Lucas&Kanade ou LK
>
cherche le vecteur du flot du mouvement, en cherchant la correspondance entre deux images successives
>
+Ces algorithmes sont rapides pendent l’exécution et ne sont pas sensibles a la déformation de la cible
Cependant en utilisant camshift, la forme de la cible n’est pas du tout prise en compte, et le fait que ça soit basé que sur les couleurs le rend vulnérable au arrière plans chargés.
En utilisant LK, la cible sera perdu en passant derrière un obstacle
Comme algorithmes de suivi de cible, nous avons essayé les 2 suivant:
>
Camshift
>
il cherche la région qui est plus dense en couleurs semblables a celles de la cible
>
Lucas&Kanade ou LK
>
cherche le vecteur du flot du mouvement, en cherchant la correspondance entre deux images successives
>
+Ces algorithmes sont rapides pendent l’exécution et ne sont pas sensibles a la déformation de la cible
Cependant en utilisant camshift, la forme de la cible n’est pas du tout prise en compte, et le fait que ça soit basé que sur les couleurs le rend vulnérable au arrière plans chargés.
En utilisant LK, la cible sera perdu en passant derrière un obstacle
Pour les algorithmes de détection, nous avons choisi d’essayer les 3 suivants:
>
SIFT
consiste a décrire la cible selectionnée en gardant plusieurs points de référence locaux.
+L’avantage est qu’il est tolèrant aux occlusions partielles et au déformations homographiques
>
- Par contre il ne peut être utilisé qu’avec des objets plats et non déformables, les déformation non homographiques comme celle de l’image a droite, ne sont pas détecté
Pour l’utiliser nous pourrions prendre la cible sur plusieurs formes et angles mais ce serai trop lent avec les machines contemporaines.
>
HOG
>
est un algorithme de classification basé sur l’apprentissage, qui prend en entrée une image et retourne un résultat positif si la cible est dedans, on calcule d’abord les vecteurs gradients de l’images (pour obtenir ceci : l’image au centre) ensuite on les compare au cumul des vecteurs gradients obtenus grâce à l’apprentissage ( représenté dans l’image a droite).
- il nécessite donc un apprentissage pour chaque cible sélectionnée ce que nous ne pouvons pas permettre en temps réel.
>
Nous avons aussi essayé CCH
>
Pour expliquer l’idée derrière cet algorithme prenons cet exemple
Un simple histogramme de couleurs n’est pas assez pour définir un objet. Ces 4 images donnent le meme histogramme alors qu’elle sont très différentes
>
Le plus qu’offre CCH est qu’il conserve la distance entre les paires de pixels et leur couleurs respectives pour décrire l’objet.
Ceci ajoute une valeur géométrique à un simple histogramme de couleurs et défini bien leur distribution spatiale, sans être très strict quant à la forme de l’objet
Cependant il n’y a pas d’implémentation disponible pour cet algorithme, alors nous avons du l’implémenter nous même de A à Z.
Pour les algorithmes de détection, nous avons choisi d’essayer les 3 suivants:
>
SIFT
consiste a décrire la cible selectionnée en gardant plusieurs points de référence locaux.
+L’avantage est qu’il est tolèrant aux occlusions partielles et au déformations homographiques
>
- Par contre il ne peut être utilisé qu’avec des objets plats et non déformables, les déformation non homographiques comme celle de l’image a droite, ne sont pas détecté
Pour l’utiliser nous pourrions prendre la cible sur plusieurs formes et angles mais ce serai trop lent avec les machines contemporaines.
>
HOG
>
est un algorithme de classification basé sur l’apprentissage, qui prend en entrée une image et retourne un résultat positif si la cible est dedans, on calcule d’abord les vecteurs gradients de l’images (pour obtenir ceci : l’image au centre) ensuite on les compare au cumul des vecteurs gradients obtenus grâce à l’apprentissage ( représenté dans l’image a droite).
- il nécessite donc un apprentissage pour chaque cible sélectionnée ce que nous ne pouvons pas permettre en temps réel.
>
Nous avons aussi essayé CCH
>
Pour expliquer l’idée derrière cet algorithme prenons cet exemple
Un simple histogramme de couleurs n’est pas assez pour définir un objet. Ces 4 images donnent le meme histogramme alors qu’elle sont très différentes
>
Le plus qu’offre CCH est qu’il conserve la distance entre les paires de pixels et leur couleurs respectives pour décrire l’objet.
Ceci ajoute une valeur géométrique à un simple histogramme de couleurs et défini bien leur distribution spatiale, sans être très strict quant à la forme de l’objet
Cependant il n’y a pas d’implémentation disponible pour cet algorithme, alors nous avons du l’implémenter nous même de A à Z.
Passant maintenant à présenter notre technique
Pour compenser la lenteur de l’algorithme de détection et pour résoudre les probleme de perte de cible pour les algorithme de suivi, nous avons décidé de combiner ces 2 techniques comme suit:
>
Premièrement l’utilisateur va sélectionner la cible sur la scène en utilisant la souri
>
L’algorithme passera alors a l’étape de suivi
Pour laquelle Nous avons omis l’algorithme camshift, car nous voulons que notre application soit fonctionnel pour tout arrière plan possible
Nous avons donc choisi l’algorithme LK
>
Et comme algorithme de détection nous avons choisi CCH puisqu’il a une plus grande marge de tolérance quant à la déformation de la cible, sans nécessité d’apprentissage
Passant maintenant à présenter notre technique
Pour compenser la lenteur de l’algorithme de détection et pour résoudre les probleme de perte de cible pour les algorithme de suivi, nous avons décidé de combiner ces 2 techniques comme suit:
>
Premièrement l’utilisateur va sélectionner la cible sur la scène en utilisant la souri
>
L’algorithme passera alors a l’étape de suivi
Pour laquelle Nous avons omis l’algorithme camshift, car nous voulons que notre application soit fonctionnel pour tout arrière plan possible
Nous avons donc choisi l’algorithme LK
>
Et comme algorithme de détection nous avons choisi CCH puisqu’il a une plus grande marge de tolérance quant à la déformation de la cible, sans nécessité d’apprentissage
Passant maintenant à présenter notre technique
Pour compenser la lenteur de l’algorithme de détection et pour résoudre les probleme de perte de cible pour les algorithme de suivi, nous avons décidé de combiner ces 2 techniques comme suit:
>
Premièrement l’utilisateur va sélectionner la cible sur la scène en utilisant la souri
>
L’algorithme passera alors a l’étape de suivi
Pour laquelle Nous avons omis l’algorithme camshift, car nous voulons que notre application soit fonctionnel pour tout arrière plan possible
Nous avons donc choisi l’algorithme LK
>
Et comme algorithme de détection nous avons choisi CCH puisqu’il a une plus grande marge de tolérance quant à la déformation de la cible, sans nécessité d’apprentissage
Passant maintenant à présenter notre technique
Pour compenser la lenteur de l’algorithme de détection et pour résoudre les probleme de perte de cible pour les algorithme de suivi, nous avons décidé de combiner ces 2 techniques comme suit:
>
Premièrement l’utilisateur va sélectionner la cible sur la scène en utilisant la souri
>
L’algorithme passera alors a l’étape de suivi
Pour laquelle Nous avons omis l’algorithme camshift, car nous voulons que notre application soit fonctionnel pour tout arrière plan possible
Nous avons donc choisi l’algorithme LK
>
Et comme algorithme de détection nous avons choisi CCH puisqu’il a une plus grande marge de tolérance quant à la déformation de la cible, sans nécessité d’apprentissage
Passant maintenant à présenter notre technique
Pour compenser la lenteur de l’algorithme de détection et pour résoudre les probleme de perte de cible pour les algorithme de suivi, nous avons décidé de combiner ces 2 techniques comme suit:
>
Premièrement l’utilisateur va sélectionner la cible sur la scène en utilisant la souri
>
L’algorithme passera alors a l’étape de suivi
Pour laquelle Nous avons omis l’algorithme camshift, car nous voulons que notre application soit fonctionnel pour tout arrière plan possible
Nous avons donc choisi l’algorithme LK
>
Et comme algorithme de détection nous avons choisi CCH puisqu’il a une plus grande marge de tolérance quant à la déformation de la cible, sans nécessité d’apprentissage
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Nous avons implementé CCH comme suit:
>
ceci est l’image de la cible (selectionnée par l’utilisateur)
>
Et celle-ci est l’image à laquelle on va la comparer
>
La premiere etape est d’executer l’algorithme kmeans avec 4 couleurs pour cet exemple, > qui va nous trouver la palette de couleurs dominantes dans l’image selectionnée
>
Ensuite on procede a la segmentation des 2 images, > selons la meme palette. Ceci nous permettera de diminuer la taille des données a traiter et donc le temps d’exection, et aussi a ajouter a l’algorithme une tolerence aux changement de luminosité et de contras.
>•
Ensuite on calcule, pour les 2 images leurs CCH respectifs,> c’est une matrice tridimenstionnelle qui porte les distances entre les paires de couleurs
>
Et enfin on calcule le taux de correspondance entre ces 2 CCH
>
Dans ce cas il est egal à quatre-ving-un virgule soixante-dix-neuf pourcent
Pour l’integration des deux algorithme nous avons procédé ainsi:
>
L’idée était d’utiliser d’abord l’algorithme LK pour le suivie de la cible
>
Mais elle sera perdue par moment en passant par exemple derriere un obstacle et la fenetre de suivie restera bloquée
>
Pour ceci - chaque unité de temps - on fait un parcours global sur la scène en utilisant l’algorithme de detection CCH afin de chercher la position de la cible et repositionner correctement la fenêtre de suivi > et ainsi corriger la perte de la cible, puis reprendre le suivi par l’algorithme LK
>
Cependant ceci à causé un problème de performance. En déclenchant l’étape de recherche, l’interface est bloqué car le parcours global sur toute l’image prend beaucoup de temps, environs 20 secondes pour une vidéo de taille 360x240
Ce qui est inacceptable
Pour l’integration des deux algorithme nous avons procédé ainsi:
>
L’idée était d’utiliser d’abord l’algorithme LK pour le suivie de la cible
>
Mais elle sera perdue par moment en passant par exemple derriere un obstacle et la fenetre de suivie restera bloquée
>
Pour ceci - chaque unité de temps - on fait un parcours global sur la scène en utilisant l’algorithme de detection CCH afin de chercher la position de la cible et repositionner correctement la fenêtre de suivi > et ainsi corriger la perte de la cible, puis reprendre le suivi par l’algorithme LK
>
Cependant ceci à causé un problème de performance. En déclenchant l’étape de recherche, l’interface est bloqué car le parcours global sur toute l’image prend beaucoup de temps, environs 20 secondes pour une vidéo de taille 360x240
Ce qui est inacceptable
Pour l’integration des deux algorithme nous avons procédé ainsi:
>
L’idée était d’utiliser d’abord l’algorithme LK pour le suivie de la cible
>
Mais elle sera perdue par moment en passant par exemple derriere un obstacle et la fenetre de suivie restera bloquée
>
Pour ceci - chaque unité de temps - on fait un parcours global sur la scène en utilisant l’algorithme de detection CCH afin de chercher la position de la cible et repositionner correctement la fenêtre de suivi > et ainsi corriger la perte de la cible, puis reprendre le suivi par l’algorithme LK
>
Cependant ceci à causé un problème de performance. En déclenchant l’étape de recherche, l’interface est bloqué car le parcours global sur toute l’image prend beaucoup de temps, environs 20 secondes pour une vidéo de taille 360x240
Ce qui est inacceptable
Pour l’integration des deux algorithme nous avons procédé ainsi:
>
L’idée était d’utiliser d’abord l’algorithme LK pour le suivie de la cible
>
Mais elle sera perdue par moment en passant par exemple derriere un obstacle et la fenetre de suivie restera bloquée
>
Pour ceci - chaque unité de temps - on fait un parcours global sur la scène en utilisant l’algorithme de detection CCH afin de chercher la position de la cible et repositionner correctement la fenêtre de suivi > et ainsi corriger la perte de la cible, puis reprendre le suivi par l’algorithme LK
>
Cependant ceci à causé un problème de performance. En déclenchant l’étape de recherche, l’interface est bloqué car le parcours global sur toute l’image prend beaucoup de temps, environs 20 secondes pour une vidéo de taille 360x240
Ce qui est inacceptable
Pour l’integration des deux algorithme nous avons procédé ainsi:
>
L’idée était d’utiliser d’abord l’algorithme LK pour le suivie de la cible
>
Mais elle sera perdue par moment en passant par exemple derriere un obstacle et la fenetre de suivie restera bloquée
>
Pour ceci - chaque unité de temps - on fait un parcours global sur la scène en utilisant l’algorithme de detection CCH afin de chercher la position de la cible et repositionner correctement la fenêtre de suivi > et ainsi corriger la perte de la cible, puis reprendre le suivi par l’algorithme LK
>
Cependant ceci à causé un problème de performance. En déclenchant l’étape de recherche, l’interface est bloqué car le parcours global sur toute l’image prend beaucoup de temps, environs 20 secondes pour une vidéo de taille 360x240
Ce qui est inacceptable
Pour l’integration des deux algorithme nous avons procédé ainsi:
>
L’idée était d’utiliser d’abord l’algorithme LK pour le suivie de la cible
>
Mais elle sera perdue par moment en passant par exemple derriere un obstacle et la fenetre de suivie restera bloquée
>
Pour ceci - chaque unité de temps - on fait un parcours global sur la scène en utilisant l’algorithme de detection CCH afin de chercher la position de la cible et repositionner correctement la fenêtre de suivi > et ainsi corriger la perte de la cible, puis reprendre le suivi par l’algorithme LK
>
Cependant ceci à causé un problème de performance. En déclenchant l’étape de recherche, l’interface est bloqué car le parcours global sur toute l’image prend beaucoup de temps, environs 20 secondes pour une vidéo de taille 360x240
Ce qui est inacceptable
Nous avons alors pensé a optimiser l’étape de recherche de plusieurs façons:
dans notre implémentation de l’algorithme, précisemment dans le calcul des CCH, > il y a une boucle qui sert à parcourir toute les paires de pixels dans l’image, elle est schématisée dans cette animation. Il s’agit d’un très grand nombre d’itérations et c’est ce qui cause la baisse de performance.
>
Nous avons donc pensé a définir un nouveau paramètre qui va limiter cette boucle, en cherchant les paires de pixels dont la distance ne dépasse pas un rayon limite.
Ce paramètre permettra de donner le choix à l’utilisateur entre la rapidité d’exécution et la précision.
>
De plus nous avons utilisé OpenMP pour paralléliser cette boucle, ca nous a fait gagné 2/3 du temps d’exécution
>
Ce graphique montre l’amélioration de la performance par rapport au paramètre rayon, avec parallélisme (en rouge) et sans parallélisme (en bleu)
vous remarquez que le de temps d’exécution diminue avec le paramètre rayon
et avec le parallélisme
dans notre implémentation de l’algorithme, précisemment dans le calcul des CCH, > il y a une boucle qui sert à parcourir toute les paires de pixels dans l’image, elle est schématisée dans cette animation. Il s’agit d’un très grand nombre d’itérations et c’est ce qui cause la baisse de performance.
>
Nous avons donc pensé a définir un nouveau paramètre qui va limiter cette boucle, en cherchant les paires de pixels dont la distance ne dépasse pas un rayon limite.
Ce paramètre permettra de donner le choix à l’utilisateur entre la rapidité d’exécution et la précision.
>
De plus nous avons utilisé OpenMP pour paralléliser cette boucle, ca nous a fait gagné 2/3 du temps d’exécution
>
Ce graphique montre l’amélioration de la performance par rapport au paramètre rayon, avec parallélisme (en rouge) et sans parallélisme (en bleu)
vous remarquez que le de temps d’exécution diminue avec le paramètre rayon
et avec le parallélisme
dans notre implémentation de l’algorithme, précisemment dans le calcul des CCH, > il y a une boucle qui sert à parcourir toute les paires de pixels dans l’image, elle est schématisée dans cette animation. Il s’agit d’un très grand nombre d’itérations et c’est ce qui cause la baisse de performance.
>
Nous avons donc pensé a définir un nouveau paramètre qui va limiter cette boucle, en cherchant les paires de pixels dont la distance ne dépasse pas un rayon limite.
Ce paramètre permettra de donner le choix à l’utilisateur entre la rapidité d’exécution et la précision.
>
De plus nous avons utilisé OpenMP pour paralléliser cette boucle, ca nous a fait gagné 2/3 du temps d’exécution
>
Ce graphique montre l’amélioration de la performance par rapport au paramètre rayon, avec parallélisme (en rouge) et sans parallélisme (en bleu)
vous remarquez que le de temps d’exécution diminue avec le paramètre rayon
et avec le parallélisme
dans notre implémentation de l’algorithme, précisemment dans le calcul des CCH, > il y a une boucle qui sert à parcourir toute les paires de pixels dans l’image, elle est schématisée dans cette animation. Il s’agit d’un très grand nombre d’itérations et c’est ce qui cause la baisse de performance.
>
Nous avons donc pensé a définir un nouveau paramètre qui va limiter cette boucle, en cherchant les paires de pixels dont la distance ne dépasse pas un rayon limite.
Ce paramètre permettra de donner le choix à l’utilisateur entre la rapidité d’exécution et la précision.
>
De plus nous avons utilisé OpenMP pour paralléliser cette boucle, ca nous a fait gagné 2/3 du temps d’exécution
>
Ce graphique montre l’amélioration de la performance par rapport au paramètre rayon, avec parallélisme (en rouge) et sans parallélisme (en bleu)
vous remarquez que le de temps d’exécution diminue avec le paramètre rayon
et avec le parallélisme
dans notre implémentation de l’algorithme, précisemment dans le calcul des CCH, > il y a une boucle qui sert à parcourir toute les paires de pixels dans l’image, elle est schématisée dans cette animation. Il s’agit d’un très grand nombre d’itérations et c’est ce qui cause la baisse de performance.
>
Nous avons donc pensé a définir un nouveau paramètre qui va limiter cette boucle, en cherchant les paires de pixels dont la distance ne dépasse pas un rayon limite.
Ce paramètre permettra de donner le choix à l’utilisateur entre la rapidité d’exécution et la précision.
>
De plus nous avons utilisé OpenMP pour paralléliser cette boucle, ca nous a fait gagné 2/3 du temps d’exécution
>
Ce graphique montre l’amélioration de la performance par rapport au paramètre rayon, avec parallélisme (en rouge) et sans parallélisme (en bleu)
vous remarquez que le de temps d’exécution diminue avec le paramètre rayon
et avec le parallélisme
Nous avons aussi fait quelques optimisations dans l’intégration des deux algorithmes de suivi et de détection
>
d’une part nous avons fait en sorte que l’algorithme de recherche ne se déclenche, qu’en cas de necessité, càd au lieu de faire une recherche globale chaque unité de temps, la recherche est lancée seulement si la cible est perdue, > ceci est fait grâce a une vérification fréquente si la cible est toujours dans la fenêtre de suivie ou non
>
d’autre part le parcours de l’image en cas de perte de la cible se fait d’une manière plus optimisée, au lieu de parcourir toute l’image a la recherche de la cible, on commence par un périmètre de recherche local autour de sa dernière position connue, si elle est retrouvée on replace la fenêtre de suivie dessus
>
sinon on agrandi le périmètre de recherche.
>
quand cette partie de recherche est déclenchée elle tourne dans un thread en arrière plan tout en gardant l’algorithme de suivie en marche
Nous avons aussi fait quelques optimisations dans l’intégration des deux algorithmes de suivi et de détection
>
d’une part nous avons fait en sorte que l’algorithme de recherche ne se déclenche, qu’en cas de necessité, càd au lieu de faire une recherche globale chaque unité de temps, la recherche est lancée seulement si la cible est perdue, > ceci est fait grâce a une vérification fréquente si la cible est toujours dans la fenêtre de suivie ou non
>
d’autre part le parcours de l’image en cas de perte de la cible se fait d’une manière plus optimisée, au lieu de parcourir toute l’image a la recherche de la cible, on commence par un périmètre de recherche local autour de sa dernière position connue, si elle est retrouvée on replace la fenêtre de suivie dessus
>
sinon on agrandi le périmètre de recherche.
>
quand cette partie de recherche est déclenchée elle tourne dans un thread en arrière plan tout en gardant l’algorithme de suivie en marche
Nous avons aussi fait quelques optimisations dans l’intégration des deux algorithmes de suivi et de détection
>
d’une part nous avons fait en sorte que l’algorithme de recherche ne se déclenche, qu’en cas de necessité, càd au lieu de faire une recherche globale chaque unité de temps, la recherche est lancée seulement si la cible est perdue, > ceci est fait grâce a une vérification fréquente si la cible est toujours dans la fenêtre de suivie ou non
>
d’autre part le parcours de l’image en cas de perte de la cible se fait d’une manière plus optimisée, au lieu de parcourir toute l’image a la recherche de la cible, on commence par un périmètre de recherche local autour de sa dernière position connue, si elle est retrouvée on replace la fenêtre de suivie dessus
>
sinon on agrandi le périmètre de recherche.
>
quand cette partie de recherche est déclenchée elle tourne dans un thread en arrière plan tout en gardant l’algorithme de suivie en marche
Nous avons aussi fait quelques optimisations dans l’intégration des deux algorithmes de suivi et de détection
>
d’une part nous avons fait en sorte que l’algorithme de recherche ne se déclenche, qu’en cas de necessité, càd au lieu de faire une recherche globale chaque unité de temps, la recherche est lancée seulement si la cible est perdue, > ceci est fait grâce a une vérification fréquente si la cible est toujours dans la fenêtre de suivie ou non
>
d’autre part le parcours de l’image en cas de perte de la cible se fait d’une manière plus optimisée, au lieu de parcourir toute l’image a la recherche de la cible, on commence par un périmètre de recherche local autour de sa dernière position connue, si elle est retrouvée on replace la fenêtre de suivie dessus
>
sinon on agrandi le périmètre de recherche.
>
quand cette partie de recherche est déclenchée elle tourne dans un thread en arrière plan tout en gardant l’algorithme de suivie en marche
Nous avons aussi fait quelques optimisations dans l’intégration des deux algorithmes de suivi et de détection
>
d’une part nous avons fait en sorte que l’algorithme de recherche ne se déclenche, qu’en cas de necessité, càd au lieu de faire une recherche globale chaque unité de temps, la recherche est lancée seulement si la cible est perdue, > ceci est fait grâce a une vérification fréquente si la cible est toujours dans la fenêtre de suivie ou non
>
d’autre part le parcours de l’image en cas de perte de la cible se fait d’une manière plus optimisée, au lieu de parcourir toute l’image a la recherche de la cible, on commence par un périmètre de recherche local autour de sa dernière position connue, si elle est retrouvée on replace la fenêtre de suivie dessus
>
sinon on agrandi le périmètre de recherche.
>
quand cette partie de recherche est déclenchée elle tourne dans un thread en arrière plan tout en gardant l’algorithme de suivie en marche
Passons a la partie réalisation
Concernant le matériel utilisé
nous utilisons une Camera d-link ptz ip
Sans fil
Pan et tilt
Ca résolution maximale est de 640x480 pixels
Le taux de rafraichissement est de 30Hz
la camera n’offre pas de bibliothèque ou api pour les commandes de ses moteurs, nous avons donc fait une interception des requêtes de mouvement de la camera a partir de cette page provenant de son mini serveur, en utilisant l’inspecteur de réseau dans firefox. Pour pouvoir ensuite imiter ces requetes et contrôler la camera à partir de notre application
Nous avons développé notre application en C++ avec QT creator sous le système d’exploitation ubuntu en utilisant la bibliotheque libre de vision par ordinateur
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
Parlons maintenant de l’interface graphique
En lançant l’application, l’utilisateur aura une interface d’authentification, une fois les informations nécessaire introduites, l’interface principale est ouverte
>
Elle comporte l’essentiel de notre application : l’affichage du flux vidéo, les contrôles manuels de la camera avec les boutons haut, bas, gauche, droite, et le bouton recentrer, les paramètres de notre algorithme comme le rayon limite, le bouton de déconnexion en haut a droite et le bouton « A propos », un bouton pour rafraichir, un pour déconnecter la camera actuelle, et un bouton pour désélectionner la cible.
Cette zone portera l’image de la cible sélectionnée, et celle a droite affiche la zone qui est dans la fenêtre de suivie actuelle.
Ceci est la liste déroulante de choix de camera, elle peut etre modifiée en cliquant sur ce bouton
>
Dans cette fenêtre, on peut gérer les cameras qui seront affichées dans la liste déroulante pour ne pas l’encombrer
A gauche sont les cameras affichées, et a droite le reste des cameras qui ne sont pas utilisées. Et on peut ajouter ou retirer une camera en utilisant ces fleches
>
En cliquant sur le bouton configuration
>
Une autre fenetre s’affiche,
Dans l’onglet général on trouve des paramètres plus avancés de notre algorithme
Pour chaque utilisateur ses preferences sont enregistrée dans son compte.
>
Dans l’onglet camera, on peut ajouter supprimer et modifier les cameras dans la liste, que ce soit des cameras IP PTZ et autres, sans fil , filaires, USB ou webcam
>
Dans l’onglet profil, on a les informations personnelles du compte utilisé
En conclusion, nous avons présenté aujourd’hui la solution que nous avons développée, pour le suivi de personne sur une camera PTZ basée sur une intégration de deux algorithmes, de suivi, et de détection
>
que nous avons implémenté nous même et auquel nous avons apporté des améliorations afin de résoudre les problèmes de performances rencontrés
>
Une amélioration possible de notre solution est de basculer automatiquement entres plusieurs cameras, quand la cible passe du champ de vision de l’une vers celui d’une autre
>
Notre solution peut être utilisée dans plusieurs domaines tels que la vidéo conférence, la télésurveillance, le théâtre etc.
Et en plus du suivi de personne, elle peut être utilisée aussi pour le suivi de n’importe quelle cible déformable ou non. Par exemple: Véhicules, animaux et objets.
En conclusion, nous avons présenté aujourd’hui la solution que nous avons développée, pour le suivi de personne sur une camera PTZ basée sur une intégration de deux algorithmes, de suivi, et de détection
>
que nous avons implémenté nous même et auquel nous avons apporté des améliorations afin de résoudre les problèmes de performances rencontrés
>
Une amélioration possible de notre solution est de basculer automatiquement entres plusieurs cameras, quand la cible passe du champ de vision de l’une vers celui d’une autre
>
Notre solution peut être utilisée dans plusieurs domaines tels que la vidéo conférence, la télésurveillance, le théâtre etc.
Et en plus du suivi de personne, elle peut être utilisée aussi pour le suivi de n’importe quelle cible déformable ou non. Par exemple: Véhicules, animaux et objets.
En conclusion, nous avons présenté aujourd’hui la solution que nous avons développée, pour le suivi de personne sur une camera PTZ basée sur une intégration de deux algorithmes, de suivi, et de détection
>
que nous avons implémenté nous même et auquel nous avons apporté des améliorations afin de résoudre les problèmes de performances rencontrés
>
Une amélioration possible de notre solution est de basculer automatiquement entres plusieurs cameras, quand la cible passe du champ de vision de l’une vers celui d’une autre
>
Notre solution peut être utilisée dans plusieurs domaines tels que la vidéo conférence, la télésurveillance, le théâtre etc.
Et en plus du suivi de personne, elle peut être utilisée aussi pour le suivi de n’importe quelle cible déformable ou non. Par exemple: Véhicules, animaux et objets.
En conclusion, nous avons présenté aujourd’hui la solution que nous avons développée, pour le suivi de personne sur une camera PTZ basée sur une intégration de deux algorithmes, de suivi, et de détection
>
que nous avons implémenté nous même et auquel nous avons apporté des améliorations afin de résoudre les problèmes de performances rencontrés
>
Une amélioration possible de notre solution est de basculer automatiquement entres plusieurs cameras, quand la cible passe du champ de vision de l’une vers celui d’une autre
>
Notre solution peut être utilisée dans plusieurs domaines tels que la vidéo conférence, la télésurveillance, le théâtre etc.
Et en plus du suivi de personne, elle peut être utilisée aussi pour le suivi de n’importe quelle cible déformable ou non. Par exemple: Véhicules, animaux et objets.
En conclusion, nous avons présenté aujourd’hui la solution que nous avons développée, pour le suivi de personne sur une camera PTZ basée sur une intégration de deux algorithmes, de suivi, et de détection
>
que nous avons implémenté nous même et auquel nous avons apporté des améliorations afin de résoudre les problèmes de performances rencontrés
>
Une amélioration possible de notre solution est de basculer automatiquement entres plusieurs cameras, quand la cible passe du champ de vision de l’une vers celui d’une autre
>
Notre solution peut être utilisée dans plusieurs domaines tels que la vidéo conférence, la télésurveillance, le théâtre etc.
Et en plus du suivi de personne, elle peut être utilisée aussi pour le suivi de n’importe quelle cible déformable ou non. Par exemple: Véhicules, animaux et objets.
Merci pour votre attention, si vous voulez bien, nous avons une vidéo de démonstration a vous montrer.
- QThread
Un QThread représente un thread de contrôle séparé dans le programme
le thread etant séparé du processus principale, les 2 peuvent tourner en parallel
-OpenMP
OpenMP est un ensemble de directives de compilation pour paralléliser un code
openmp permettant de traiter des informations de manière simultanée
-Qt
QT est un Framework spécialement conçu pour la réalisation d’interface graphique. Il est développé en C. Qt est cross-plateforme en supportant de nombreuses plateformes comme Unix, Windows, Mac OS, Android…
-Opencv
Opencv est une bibliothèque graphique offrant l’avantage de faciliter l’utilisation d’algorithme traitement d’image qui est de plus open source.
-pq choisit sqlite
Léger
Facile à exporter/importer
Tiens en un seul fichier
Ne nécessite pas d’authentification
Ne nécessite pas de Serveur de gestion de base de données