IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Détection de synchronisation sur un signal video


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Détection de synchronisation sur un signal video
    Bonjour a tous,

    Ceci est mon premier message sur votre forum! oui on peut sortir le champagne!

    Mais avant toute réjouissance j ai besoin de votre aide

    Je cherche a capter un signal vidéo puis de le traiter avec un convertisseur analogique numérique!
    La partie de conversion est déjà faite et fonctionne parfaitement!

    Le seul problème qu'il me manque est la synchronisation du signal vidéo.
    J'ai penser a détecter les front montant , passant de 0V a 0.3V.
    Bien entendu je programme en C.

    Si vous avez quelques idées pour détecter se front je vous serais reconnaissant de me partager votre savoir =)

    Merci d'avoir pris le temps de lire!
    J'attend vos réponses!

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    Juste une idée :
    Je pense qu'il est plus facile de détecter le front descendant : dès que le signal échantillonné passe en dessous du seuil (0.15V) par exemple.
    Pour synchroniser sur le front montant : rajouter la durée du top de synchro.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour et bienvenue,

    Citation Envoyé par ulyse Voir le message
    Ceci est mon premier message sur votre forum! oui on peut sortir le champagne!

    Le seul problème qu'il me manque est la synchronisation du signal vidéo.
    J'ai penser a détecter les front montant , passant de 0V a 0.3V.
    Bien entendu je programme en C.
    Tu développes sur quel matériel ?

  4. #4
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Sur le front descendant pourquoi pas, je vais essayer mais je ne vois pas trop la fonction a entrer

    Je travaille sur un Psoc 4! avec une interface en C préprogrammée dessus.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Je cherche a capter un signal vidéo puis de le traiter avec un convertisseur analogique numérique!
    Quelle est la fréquence d’échantillonnage du convertisseur ?
    Tu envisages de faire des traitements numériques en temps réel ? des traitements de quel type ?

  6. #6
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    mon taux échantillonnage est relativement élevé, 1M samples par secs en 8bits

    Je fais un traitement par ligne video, je prends 51 valeurs qui sont stockée dans un tableau, mon microcontrôleur a alors un peu prés 50ms pour faire le traitement de la ligne!

    En fait ce que je fais plus précisément c'est de prendre un ligne de l'image (une ligne centrale : la numéro 321 par exemple)
    je stock ces valeurs dans un tableau, et je détecte ma ligne noire
    pour détecter cette ligne je fais un test avec un IF pour détecter une tranche de tension (0.3V jusqu'a 0.4V) ou( 0x34 juqu'a 0x46) et je stock la position où ces valeurs se trouvent dans mon tableau
    Je fais une moyenne et je bouge ma voiture avec un certain angle sur les pneus qui font tourner la voiture!

    donc ce qu'il ne manque c est synchroniser mon convertisseur avec une ligne de la video!

    ai-je ete clair ? ^^

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    mon microcontrôleur a alors un peu prés 50ms pour faire le traitement
    Si c'est sur une ligne : je pense que tu voulais dire 50us !

    Le top synchro de la ligne fait 5us , pour le détecter tu pourrais compter le nombre d'échantillons consécutifs inférieurs à 0.15V :
    Dés que tu en as 4 voir 5 consécutifs (en échantillonnant à 1MHz) tu es au front montant.
    C'est à 1 ou 2us près mais je ne vois pas comment tu pourrais être plus précis.

    Je fais une moyenne et je bouge ma voiture avec un certain angle sur les pneus qui font tourner la voiture!
    Je ne vois pas encore bien le lien, mais cela à l'air passionnant !

  8. #8
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Si c'est sur une ligne : je pense que tu voulais dire 50us !
    plus ou moins, en fait je parlais du retour en haut de l’écran! je l ai toujours pas vu a l'oscilloscope mais je sais qu'il existe. et il dure environ 50ms il me semble ^^

    sinon ton idée est pas bête du tout vu que j’échantillonne a la microseconde =)
    je vais essayer =)
    je posterai le code des que je l aurais =)

    sinon pour l'histoire de récupéré le chiffre du tableau c est plutôt simple
    imaginons a tableau a 10cases. Le 1 représente un noir ( que je recherche) un 0 une autre couleur
    0-0-1-1-1-0-0-0-0-0
    je récupère les case 2,3 et 4 ce qui si j'additionne donne 9, si je moyenne cette valeur sur le nb totale de valeur prise on a Val=3, donc le "milieu" de la ligne se trouve a la case 3! ce qui est 2case sur un coté donc on commande notre voiture pour qu'elle aille a droite d'un certain angle! =)

    je suis tellement mauvais pédagogue... xD

  9. #9
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Hello,

    Je ne sais pas comment sont organisés ton programme et ton système vidéo, mais il y a de fortes chances que ce soit une machine d'état s'il n'y a pas d'OS et disons du PAL ou du SECAM. Je verrais donc bien quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Répéter:
            Attente synchro verticale
            Comptage synchros horizontales jusqu au bon numéro de ligne
            Echantillonnage de la ligne
            Traitement
    J'attire ton attention sur le fait que s'il s'agit d'une vraie image (genre télévision du siècle dernier), il faut tenir compte du fait qu'on génère des demie-images, un coup les trames paires, un coup les trames impaires. Un système télévision standard fonctionne à 50 demi-images par secondes, donc 20msec par demi-image et 64µsec pour une ligne. Du coup, ta ligne 300 est tout en bas de l'écran et non pas au milieu.

    A+

    Pfeuh

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Salut,

    plus ou moins,

    Ce n'est pas plus ou moins, cela fait une sacrée différence !
    Tu cherches à faire la synchro ligne ou la synchro trame (ou les deux) ?
    en fait je parlais du retour en haut de l’écran!
    J'en déduis que c'est la synchro trame, cela me parait plus réaliste en temps de traitement.

    La récupération de la synchronisation de trame exploite l'inversion du top de synchro pendant 2,5 lignes : l'impulsion des tops synchro (5us) négative devient positive. (Lignes 1,2,3 et 313,314,315 car en effet il y a les trames paires et les trames impaires).

    Mais il n'y a aucun top qui fait 50ms !!
    Les tops de synchro se déroulent toujours à la fréquence ligne, simplement pendant la synchro trame : ils sont beaucoup plus larges.
    Tu peux donc détecter cette synchro lorsque tu as plus de 10 échantillons consécutifs inférieurs à 0.15V.

  11. #11
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nanosoft Voir le message

    Ce n'est pas plus ou moins, cela fait une sacrée différence !
    oui c'est vrai c'est juste que je connais pas encore la valeur exacte

    Citation Envoyé par nanosoft Voir le message
    Tu cherches à faire la synchro ligne ou la synchro trame (ou les deux) ?
    Oui les deux ^^
    La récupération de la synchronisation de trame exploite l'inversion du top de synchro pendant 2,5 lignes : l'impulsion des tops synchro (5us) négative devient positive. (Lignes 1,2,3 et 313,314,315 car en effet il y a les trames paires et les trames impaires).
    Citation Envoyé par nanosoft Voir le message
    Mais il n'y a aucun top qui fait 50ms !!
    Je parlais du temps que met la ligne a remonter en haut de l’écran

    Citation Envoyé par nanosoft Voir le message
    Les tops de synchro se déroulent toujours à la fréquence ligne, simplement pendant la synchro trame : ils sont beaucoup plus larges.
    Tu peux donc détecter cette synchro lorsque tu as plus de 10 échantillons consécutifs inférieurs à 0.15V.
    Donc si j'ai bien compris je laisse tourner mon convertisseur tout le temps, il me récupère des valeurs toutes les microsecondes et si je détecte 10 valeurs consécutives a moins de 0.15V (ou plutot 0.3V non?) c'est que je suis en haut de mon écran?


    Pour en revenir au message de pfeuh,
    Le petit organigramme que tu as donner dans ton message est exactement ce que je prévois de faire =)

    le seul point que je saisis pas c'est les trames paires et impaires, du moins ce qu'elles représentent!
    si je veux le milieu de l'ecran je dois capter le 150eme top de synchro?

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Donc si j'ai bien compris je laisse tourner mon convertisseur tout le temps, il me récupère des valeurs toutes les microsecondes et si je détecte 10 valeurs consécutives a moins de 0.15V (ou plutot 0.3V non?) c'est que je suis en haut de mon écran?
    Oui, comme tu récupères une valeur toutes les microsecondes il faut faire un traitement très rapide.
    Je te propose de juste comparer toutes les valeurs à un seuil (0.15V c'est le milieu des tops de synchro c'est là que tu as la plus grande marge vis à vis du bruit éventuel) :
    Si tu es inférieur au seuil : tu incrémentes un compteur,
    Si tu es supérieur : tu reset le compteur,
    Quand le compteur atteint 4 : tu es sur un top ligne
    Quand le compteur atteint 10 : tu es sur un top trame

    En fait, si tu fais ainsi, tu obtiendra plusieurs plusieurs tops trame consécutifs à la suite (sur 2 à 3 lignes), reste à te caler sur le premier ou le dernier.

    Quel est le traitement que tu veux faire ensuite ? une "reconnaissance d'image" basique ?
    Les trames sont entrelacées : en quelque sorte une trame balaie toutes les lignes impaires de l'écran puis ensuite l'autre toutes les lignes paires.
    Mais par convention les lignes sont numérotées dans l'ordre chronologique : le milieu de l'écran se situe :
    vers les lignes 150 pour la trame A
    vers les lignes 450 pour la trame B

  13. #13
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Oui, comme tu récupères une valeur toutes les microsecondes il faut faire un traitement très rapide.
    Je te propose de juste comparer toutes les valeurs à un seuil (0.15V c'est le milieu des tops de synchro c'est là que tu as la plus grande marge vis à vis du bruit éventuel) :
    Si tu es inférieur au seuil : tu incrémentes un compteur,
    Si tu es supérieur : tu reset le compteur,
    Quand le compteur atteint 4 : tu es sur un top ligne
    Quand le compteur atteint 10 : tu es sur un top trame
    Nom : Sans titre.png
Affichages : 529
Taille : 17,5 Ko

    j'ai penser a ca de facon tres rapide
    je pense que ca peu marcher si je peux traiter l'image en moins d'une microseconde
    a moins que je cherche la ligne 150 (milieu de l'ecran si je me trompe pas)

    Citation Envoyé par nanosoft Voir le message
    En fait, si tu fais ainsi, tu obtiendra plusieurs plusieurs tops trame consécutifs à la suite (sur 2 à 3 lignes), reste à te caler sur le premier ou le dernier.
    c'est a dire? On est dans le case de la remontée de ligne en haut de l’écran?

    Citation Envoyé par nanosoft Voir le message
    Quel est le traitement que tu veux faire ensuite ? une "reconnaissance d'image" basique ?
    Je pense que le terme "reconnaissance d'image basique" est le bon terme!
    en fait mon convertisseur va me sortir des valeurs entre 0x00 et 0xFF (en hexa)(le 0xFF correspond à 1V) et je vais detecter dans ces valeurs, contenues dans un tableau) les valeurs les plus faibles ( supérieur a 0x3D (0.3V)et inférieures a 0x6A (0.4V)
    Puis je garde la case du tableau dans laquelle cette valeur etait stockée. a ce moment la je fais la moyenne des indices des cases et j'ai le "milieu" de ma ligne. Puis je pondère l'angle de mes roues grâce a cette valeur!
    Par exemple voici mon tableau: (0 le noir 1 le blanc) 1-1-0-0-0-0-0-1-1-1 (Tableau de 10 cases)
    on a du noir aux cases 2 3 4 5 et 6, je fais la somme et la moyenne (2+3+4+5+6/5)[5 nombres de cases totales prises) ce qui me donne 4! Le milieu de ma ligne est a la case 4, je dois donc tourner mes roues de 10° (par exemple)

    Citation Envoyé par nanosoft Voir le message
    Les trames sont entrelacées : en quelque sorte une trame balaie toutes les lignes impaires de l'écran puis ensuite l'autre toutes les lignes paires.
    Mais par convention les lignes sont numérotées dans l'ordre chronologique : le milieu de l'écran se situe :
    vers les lignes 150 pour la trame A
    vers les lignes 450 pour la trame B
    il faudrai que je fasse deux traitement? un a la ligne 150 et un a la ligne 450?
    a ce moment la je pourrais laisser tourner mon convertisseur en interruption, et il me detecte les lignes tout seul comme un grand et il traite les valeurs des qu'il tombe sur 150 et 450 ? ca te semble correct ?

    en tout ca merci beaucoup de ton aide! tu peux meme pas imaginer comment tu et vous m'avez fait avancer =)

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    je pense que ca peu marcher si je peux traiter l'image en moins d'une microseconde
    Cela risque quand même d'être "chaud" !
    Et cela dépend de ce que tu appelles "traiter l'image".
    Avant toute chose, étudie la faisabilité, quelle est la vitesse d'horloge CPU pour le Psoc 4 ?

    c'est a dire? On est dans le case de la remontée de ligne en haut de l’écran?
    Regarde ce lien :
    http://www.rennes.supelec.fr/ren/per...nal/tv_opt.pdf
    Page 21 tu as le détail de la synchro trame avec les numéros de lignes (la durée d'une ligne est de 64us et donc le "top" trame dure un certain temps).

    Sinon je n'ai toujours pas compris ce que tu veux faire :
    Est-ce suivre une ligne blanche sur la route ou quelque chose comme cela ?
    Je ne comprends pas pourquoi tu t'attaches à une ligne en particulier (une ligne représente une hauteur vraiment très fine de l'image) si tu cherches à reconnaitre un motif simple : il doit y avoir beaucoup de lignes identiques.
    Donnes plutôt un pseudo code qu'un organigramme : c'est plus facile à faire évoluer dans la discussion.
    en tout ca merci beaucoup de ton aide! tu peux meme pas imaginer comment tu et vous m'avez fait avancer =)
    De rien, si des messages t'ont été utiles fait le savoir en cliquant sur le pouce levé !

  15. #15
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Cela risque quand même d'être "chaud" !
    Et cela dépend de ce que tu appelles "traiter l'image".
    Avant toute chose, étudie la faisabilité, quelle est la vitesse d'horloge CPU pour le Psoc 4 ?
    Effectivement il tourne a seulement 48MHz, je peux faire que 48 actions entre deux traitement d'image.
    mais je pense que si je met la detection de trame en interruption ca pourrait marcher un peu plus rapidement et facilement, je vais tester =)

    Citation Envoyé par nanosoft Voir le message
    Regarde ce lien :
    http://www.rennes.supelec.fr/ren/per...nal/tv_opt.pdf
    Page 21 tu as le détail de la synchro trame avec les numéros de lignes (la durée d'une ligne est de 64us et donc le "top" trame dure un certain temps).
    Ca m' a ete tres utile je comprend un peu plus =), mais une petite question encore ^^, il faut que je traite les deux lignes de la trame paire et impaire?

    Citation Envoyé par nanosoft Voir le message
    Sinon je n'ai toujours pas compris ce que tu veux faire :
    Est-ce suivre une ligne blanche sur la route ou quelque chose comme cela ?
    En fait je crée un module qui sera branchable sur un robot Lego,
    ce type exactement

    ma camera sera donc très près du sol environ a 10cm. Et en faisant des test j'ai remarquer que la ligne noire prenait environ 30% de la ligne.

    Citation Envoyé par nanosoft Voir le message
    Donnes plutôt un pseudo code qu'un organigramme : c'est plus facile à faire évoluer dans la discussion.
    je ferais un copié collé de mon avancement quand je serai sur mon pc perso (je suis chez mes parents pour le week end)

    Citation Envoyé par nanosoft Voir le message
    De rien, si des messages t'ont été utiles fait le savoir en cliquant sur le pouce levé !
    je vous met tous des pouces !! ^^

  16. #16
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Effectivement il tourne a seulement 48MHz, je peux faire que 48 actions entre deux traitement d'image.
    mais je pense que si je met la detection de trame en interruption ca pourrait marcher un peu plus rapidement et facilement, je vais tester =)
    Oui je te conseille de "dérisquer" la chose : Programme une routine bidon à peu près représentative de ton traitement et fais la tourner en boucle; dans la boucle tu fais bagotter un I/O de ton microcontrôleur et tu regardes au scope combien de temps cela prend.

    mais une petite question encore ^^, il faut que je traite les deux lignes de la trame paire et impaire?
    Si tu as comme image un motif vertical comme un ligne blanche (ou noire) par exemple : toutes les lignes vont être identiques, tu pourrais n'en traiter qu'une (et n'importe laquelle).
    D'ailleurs à ce propos je te soumets une idée, à toi de voir si elle est intéressante : si tu essais de faire suivre une ligne à un robot, il peut être intéressant de tourner la caméra de 90° !
    Au lieu de surveiller la ligne de droite à gauche, tu la surveilles de haut en bas. L'intérêt ?
    Au lieu de faire le traitement DANS la ligne : tu peux traiter des lignes (tu auras des lignes entièrement blanches et d'autres entièrement noires), tu as beaucoup plus de temps pour le faire.

    Bonne continuation

  17. #17
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Oui je te conseille de "dérisquer" la chose : Programme une routine bidon à peu près représentative de ton traitement et fais la tourner en boucle; dans la boucle tu fais bagotter un I/O de ton microcontrôleur et tu regardes au scope combien de temps cela prend.
    J ai pas accès a mon microcontrôleur, seulement le mercredi, le matériel est soit disant "trop cher" ... 4€ sur le net.. mais bon je testerai mercredi =)


    Citation Envoyé par nanosoft Voir le message
    Si tu as comme image un motif vertical comme un ligne blanche (ou noire) par exemple : toutes les lignes vont être identiques, tu pourrais n'en traiter qu'une (et n'importe laquelle).
    D'ailleurs à ce propos je te soumets une idée, à toi de voir si elle est intéressante : si tu essais de faire suivre une ligne à un robot, il peut être intéressant de tourner la caméra de 90° !
    Au lieu de surveiller la ligne de droite à gauche, tu la surveilles de haut en bas. L'intérêt ?
    Au lieu de faire le traitement DANS la ligne : tu peux traiter des lignes (tu auras des lignes entièrement blanches et d'autres entièrement noires), tu as beaucoup plus de temps pour le faire.
    c'est exactement ce que je fais je surveille la ligne comme l'indique cet oscillogramme fait maison ^^
    Nom : Sans titre.png
Affichages : 570
Taille : 7,2 Ko
    je suis un pro de paint je sais =)

    voici mon code pour la détection de ligne +récupération de la donnée (les variables globales sont initialisées)!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <project.h>
     
    int8 FlagRes=0,FlagConvert=0;//variables globales
    int16 Retour;
     
    int main()
    {
        int16 Resultat;
        uint8 Tableau[52];
        signed short cpt;
        CyGlobalIntEnable; // permet les interruptions 
        ADC_1_Start(); // lance le convertisseur
        ADC_1_IRQ_Enable(); // debloque les interruptions du convertisseur 
        ADC_1_StartConvert();// lance la conversion
     
     
        for(;;)
        {               if(FlagConvert==1)// lance la recuperation des valeurs
                        {
                            while(cpt!=52)// while pour remplir 52cases du tableau 
                            {
                                    Tableau[cpt]=Retour; //remplit le tableau avec la valeur du convertisseur
                                    cpt++;//incremente la case du tableau
                            }
                            FlagConvert=0;//remet le flag a 0 quand le traitement est fini
                        }else{}
                        FlagRes=1;              
        }
    }
        CY_ISR( ADC_ISR ) //programme de sous interruption
        {
            int8 TopTrame=1,TopLigne=0,CompteurLigne=0;
            if(FlagRes==1) //reset des valeurs
            {
                TopTrame=1;
                CompteurLigne=0;
     
            }else{}
            TopTrame++;
     
            if(TopTrame>=10)//detection d'une trame
            {
                TopLigne++;
                if(TopLigne==4)//detection d'une ligne
                {
                    CompteurLigne++; //incrémentation du numero de ligne
                    if(CompteurLigne==150) //environ le milieu de l'image
                    {
                        FlagConvert=1; //envoie un signal pour commencer la recuperation des valeurs dans un tableau
                        Retour=ADC_1_GetResult16(0); //reception du resultat
     
                    }else{}
                }else{}
            }else{}
     
     
        }
    je suis pas sur que ma cascade de if soit le mieux qu'il vaille faire , mais ça m'a paru clair de la faire comme ça! =)

  18. #18
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    D'après ton image pièce jointe : tu cherches à connaitre la position sur l'écran d'une ligne(sur la route) noire.
    C'est bien cela ?

    Je ne sais pas si tu as saisi l'histoire de tourner la caméra de 90° ?
    Si la ligne(de la route) n'apparait plus verticale mais au contraire horizontale : tu n'as plus besoin de faire le traitement dans la ligne(vidéo).
    Il "te suffit" de compter les lignes(video) blanches depuis le top trame pour connaitre la position : les lignes(vidéo) de la ligne(route) seront ensuite noires.

    Cela pourrait te permettre de baisser la fréquence d’échantillonnage : tu n'as pas besoin de 50 points pour savoir si une ligne(vidéo) est noire ou blanche.
    Tu pourrais passer à 4us ce qui est la limite pour pouvoir détecter les tops de synchro (de 5us).
    Et le traitement est plus simple.

    Je te laisse réfléchir, je n'ai pas encore étudié le code proposé, mais avant de coder : il faut savoir ce qu'on va faire

  19. #19
    Candidat au Club
    Homme Profil pro
    IUT Lyon
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : IUT Lyon

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    D'après ton image pièce jointe : tu cherches à connaitre la position sur l'écran d'une ligne(sur la route) noire.
    C'est bien cela ?
    Oui, c est cela! C'est l'idee proposée par mon professeur!
    Citation Envoyé par nanosoft Voir le message
    Je ne sais pas si tu as saisi l'histoire de tourner la caméra de 90° ?
    Si la ligne(de la route) n'apparait plus verticale mais au contraire horizontale : tu n'as plus besoin de faire le traitement dans la ligne(vidéo).
    Il "te suffit" de compter les lignes(video) blanches depuis le top trame pour connaitre la position : les lignes(vidéo) de la ligne(route) seront ensuite noires.
    Je viens de comprendre ^^, le souci c est que dans les virages ta technique ne marchera peu etre pas )=

    le souci des virages est encore un point que je n ai pas traité )=
    mais j ai une idee avec une histoire de coefficient directeur qui me donnerais un angle pour faire tourner les pneus ^^

    Citation Envoyé par nanosoft Voir le message
    Je te laisse réfléchir, je n'ai pas encore étudié le code proposé, mais avant de coder : il faut savoir ce qu'on va faire
    [/QUOTE]
    Dac mais je pense le changer dans pas longtemps, du moins pas de beaucoup, mais histoire de lui donner un peu plus de sens =)

  20. #20
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Salut,

    le souci des virages est encore un point que je n ai pas traité )=
    C'est sur qu'il faut s'en préoccuper ! Si c'est toujours en ligne droite c'est un peu trop facile

    Tout dépend du champ de vision de la caméra et du rayon des virages les plus serrés.
    Fais des petits dessins de ce que tu es susceptible d'obtenir dans le rectangle de ton écran pour étudier la chose.

    C'est demain que tu peux tester les timings d'instructions ?

Discussions similaires

  1. Détection de variation sur un signal 1D
    Par b_reda31 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 03/04/2015, 16h08
  2. Détection d'un palier sur un signal
    Par MottetCCSF dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 12/06/2007, 11h41
  3. [3D] Poser des textes 3D sur une sequence Vidéo???
    Par pointer dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 11/03/2006, 09h59
  4. Faire a un script executer une action sur un signal
    Par vodevil dans le forum Langage
    Réponses: 1
    Dernier message: 13/12/2005, 11h14
  5. [TMS320C6416] FFT et IFFT sur un signal audio...
    Par 0x4e84 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 18/04/2005, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo