Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Calcul du champ de vision d'une camera



  1. #1
    alexandre974

    Calcul du champ de vision d'une camera

    Bonsoir les matheux !

    J’ai un problème mathématique que j’ai du mal à résoudre donc j’aurais besoin d’un coup de main. En gros le problème est le suivant : J’ai une camera qui est dans un plan en 2D et sur ce même plan il y a une série d’objet positionné à divers endroit. Sachant une position, un angle et un FOV (field of view – champ de vue de la camera matérialisé par un angle) j’aimerai savoir qu’elles sont les objets que ma camera voie. Je vais faire un petit dessin pour illustrer le problème:



    Donc voila comment calculer les points rouges qui sont vu par la camera. J’ai cherché une solution en utilisant des vecteurs et une matrice pour faire un changement de base mais j’ai un peu de mal à visualiser la solution ^^.
    Au final mon but est de faire un programme qui réalise cette opération, raison pour laquelle je me suis tourné vers les vecteurs et les matrices car leur manipulation est rapide pour un processeur. On pourrai utiliser une série d’operateur trigonométrique (cos, etc) mais le temps de calculs serait beaucoup plus long.
    Merci d’avance…

    -----


  2. #2
    Coincoin

    Re : Calcul du champ de vision d'une camera

    Salut,
    Si tu passes en coordonnées polaires, chaque machin rouge est défini par un rayon et un angle.
    Si tu considères que la caméra est au centre de ton repère, elle voit les objets dont l'angle est compris entre inclinaison-FOV/2 et inclinaison+FOV/2.

    Il faut donc calculer les positions des machins rouges dans le repère de la caméra (simple translation), puis calculer l'angle (calcul d'un cosinus et d'un sinus). Quelles sont tes exigences en calcul et en mémoire ?
    Encore une victoire de Canard !

  3. #3
    hterrolle

    Re : Calcul du champ de vision d'une camera

    bonjour,

    le calcul en coordonnée polaire semble bien le plus rapide (pour un calcul d'angle). Le seul probleme est qui tu ne connais pas la distance entre ta camera et l'objet observé. tu n'ura donc qu'un numero de secteur circulaire a attribuer a ton point(objet). se qui va t'obliger a decouper ton environement exterieur en secteur. Il y a un autre moyen de memoriser la position de tes point comme des vecteur. Pour cela il te sera necessaire de connaitre la distance entre ta camera et l'objet observé.

    j'ai un petit algo si tu possede la distance entre ta camera et ton point.

    a+

  4. #4
    alexandre974

    Re : Calcul du champ de vision d'une camera

    Salut et merci pour vos réponses...

    Passé par des coordonné polaire est en effet une bonne solution. Donc si j’ai bien compris j’ai deux possibilités.

    Solution 1 :

    On utilise les coordonnées polaires. Le centre du repère est la camera. Chaque points rouge est exprimée par une distance et un angle par rapport à la camera. Les points vu par la camera sont ceux qui ont un angle qui appartient à [-FOV/2 ;FOV/2].

    Si notre camera se déplace de A vers B, on appelle T la transformation qui au point A fait correspondre le point B. On applique donc T à tous les points rouges. (J'en profite en passant pour dire que je ne sais pas comment on trouve T =)

    Si on a plusieurs cameras, soit on a pour chaque points ses coordonnées polaire pour chaque camera, soit on a les coordonnées polaires pour une seul camera et on fait un changement de repères pour toutes les autres cameras (je ne sais pas si c’est possible en polaire, mais j’imagine que oui).

    Solution 2 :

    Celle que j’avais imaginé au début, mais je sais pas du tout si elle marche et je ne suis pas sur que certaine opérations soit exacte. Je l’ai pas marqué hier soir j’été un peu fatigué .

    On a des points et une camera qui sont matérialisé par des vecteurs dans un espace vectorielle fini. Pour la camera on a une information en plus qui est l’inclinaison de la camera, qui est un angle que l’on nome alpha.



    Tous mes points rouges doivent être exprimés dans le repère vert. Pour cela j’utilise une matrice de translation pour passer du repère bleu au repère rouge et ensuite une matrice de rotation pour passer du repère rouge au repère bleu.

    Soit MT la matrice de translation et MR la matrice de relation. Si je ne me trompe pas elle ressemble à ca :



    Soit la M la matrice tel que M=MT*MR

    Je multiplie tous les vecteurs représentant les points rouges par M. Ensuite pour tous les points du nouveau repère, je calcule le coefficient directeur de la droite passant par l’origine du repère et par ce point. Dans le cas ou mon FOV vaut 90 degré, la camera voit tous les points dont le coefficient directeur appartient à [-1 ;1].

    Si ma camera se déplace, il suffit d’appliquer une matrice de translation. Si j’ai plusieurs cameras j’ai une matrice M pour chaque camera.

    Est ce que pour vous cette solution fonctionne ?

Sur le même thème :

Discussions similaires

  1. [Divers] demontage zoom d'une camera VHS
    Par jolg2006 dans le forum Dépannage
    Réponses: 0
    Dernier message: 28/11/2007, 11h41
  2. Calcul du champ d'une couronne uniformement chargée
    Par The Artist dans le forum Physique
    Réponses: 2
    Dernier message: 25/11/2007, 13h41
  3. réalisation d'une camera fictive
    Par doughboy dans le forum Électronique
    Réponses: 2
    Dernier message: 20/10/2006, 13h51
  4. Réduction du champ de vision
    Par A.Einstein dans le forum Biologie
    Réponses: 6
    Dernier message: 27/08/2006, 16h02
  5. calcul du champ proche
    Par chevalier~blanc dans le forum Physique
    Réponses: 0
    Dernier message: 10/02/2005, 15h41