web-dev-qa-db-fra.com

Comment mesurer la hauteur, la largeur et la distance d'un objet à l'aide de la caméra?

Je me suis référé à de nombreux liens, mais je ne parviens toujours pas à obtenir un point de départ pour pouvoir commencer mon développement. Je souhaite mesurer la hauteur, la largeur et la distance de mon image à l'aide de la caméra. J'ai trouvé ceci app . Je souhaite que ce type d’application ne soit pas exactement identique mais tout à fait identique, mais je souhaite mesurer la hauteur, la largeur et la distance de l’image à l’aide de la caméra.

Est-ce que n'importe qui peut me donner/me suggérer la bonne manière ou n'importe quel exemple afin que je puisse avoir une meilleure idée de cette exigence?.

J'ai essayé ceci:

http://Android-er.blogspot.in/2012/04/gets-distances-from-camera-to-focus.html

43
anddev

Je pense que je sais ce que vous demandez. Voici ce que vous pouvez faire.

d'abord, prenez la hauteur de la personne, dites h mètres.

sample image

si vous pouvez calculer la hauteur de la caméra à partir du sol (en utilisant la hauteur si la personne, par exemple h) et obtenez les angles A et B en utilisant un gyroscope ou quelque chose de Android, vous pouvez alors calculer la hauteur de l'objet en utilisant la formule ci-dessus.

N'est-ce pas ce que vous cherchiez ???

laissez-moi savoir si vous avez besoin d'explications.

35
drulabs

Pour mesurer des distances avec une seule caméra, vous devez connaître certains chiffres. Pour mesurer la hauteur de quelque chose, disons une chaise, la seule chose que vous avez est la taille de celle-ci dans la caméra (qui est en pixels et peut être convertie en pouces en utilisant la taille de l'écran), c'est tout. La chance de mesurer la hauteur et la largeur utilise une référence, disons une personne de 6 pieds de hauteur debout à côté de la chaise.

De cette façon, vous pouvez travailler en marche arrière en utilisant un objet de 10 pieds de hauteur, en utilisant sa taille telle qu’elle apparaît dans la caméra, vous pouvez calculer la taille des objets à la même distance, sur une surface qui n’est pas plane, même en veillant à ce que sont à la même distance est un défi.

Donc, en utilisant l'appareil photo et juste l'appareil photo, ce n'est pas possible. Vous devez connaître la distance ou avoir besoin d'une référence.

Si vous utilisez l'application pour mesurer la hauteur d'éléments dont vous connaissez l'emplacement, utilisez le GPS pour déterminer la distance et vous reposer en calcul.

J'ai trouvé des liens en utilisant Google, ils peuvent aider.

  1. http://forestjohnson.blogspot.com/2010/01/how-to-measure-size-of-object-using.html
  2. http://gigaom.com/mobile/how_to_measure_/
  3. http://www.iphonelife.com/blog/5/cameasure-use-your-camera-measure-size-or-distance

Ils peuvent vous aider à déterminer quelles autres informations sont nécessaires, à part ce que la caméra peut fournir, afin que vous puissiez également réfléchir à votre application, à ce qui peut être fait et quelles sont les limitations.

L'une des méthodes consiste à utiliser plusieurs caméras, et cela peut être compensé à l'aide de plusieurs photos prises à une distance connue. Ainsi, l’application peut demander à l’utilisateur de prendre plusieurs images, de suivre la distance à l’aide du GPS et probablement de fonctionner.

Voir ces liens aussi:

  1. http://iopscience.iop.org/1742-6596/48/1/074/pdf/1742-6596_48_1_074.pdf
  2. http://www.optical-metrology-centre.com/Downloads/Papers/Photogrammetric%20Record%201994%20Automated%203-D%20measurement.pdf
14
SpeedBirdNine

Si vous connaissez l'angle de la fenêtre de la caméra, vous pouvez utiliser la hauteur en pixels pour déterminer l'angle du haut vers le bas de l'objet. Ensuite, en utilisant la distance et l’arctangent, calculez la hauteur:

height = arctan(angle) * distance

Pour trouver l'angle de la fenêtre, pointez la caméra sur quelque chose de hauteur connue et faites-la remplir l'écran de façon précise. Par exemple, pointez-le sur une règle et éloignez-vous suffisamment pour que vous puissiez à peine voir ses extrémités. Mesurer la distance de la caméra, puis votre angle de vue total est

viewportAngle = tan(ruler_length / distance)

Ensuite, supposons que votre appareil photo mesure 480 pixels (webcam bon marché) et que son angle de vue soit de 20 °. Si vous avez un objet à l'écran d'une hauteur de 240 pixels, son angle est de 10 °. Si vous savez qu'il est à 2 pieds, vous diriez 2 feet * arctan(10°) = ~4.1 inches grande. (Je pense ... il est 2h du matin donc ça risque d'être un peu en retrait)

9
Tim

Si vous y réfléchissez, un scanner de rayons X corporel (au centre médical) nécessite également ce type de mesure pour estimer la taille des tumeurs. Ils placent donc une pièce de un dollar sur le corps pour effectuer une mesure comparative.

Même le journal est imprimé avec des marques sur les coins.

Vous avez besoin d'une référence pour mesurer. Peut-être pouvez-vous obliger votre personne à porter un bonnet comportant quelques cercles verts brillants. Une fois que vous avez reconnu la taille du cercle, vous pouvez mesurer le reste.

Ou vous pouvez créer un cercle transparent de 1 pouce qui se superposera au visage, déplacez la caméra vers/loin du visage, dirigez votre cercle superposé sur ce cercle vert vif du capuchon. Ensuite, sur votre photo sera comme par échelle.

4
Siddharth

Tu ne peux pas .. Tu devrais savoir:

  • À quelle distance se trouve l'objet (vous pouvez connaître votre position à partir du GPS .. mais la position de l'objet?)
  • Quelle est la focale de la caméra

Peut-être, juste peut-être si l'objet était tagué optiquement avec par exemple un code QR, et que vous ayez une carte code-to-loc ...

2
ᆼᆺᆼ

Tout d'abord, je dirai que c'est bien d'avoir développé cette application.

Maintenant, je ne suis pas sûr de cela, mais si vous pouvez obtenir la détection de visage comme pour n'importe quel objet dans Android appareil photo, alors avec l'aide de cela, vous pouvez obtenir ce résultat.

Eh bien, je ne suis pas sûr de cela, mais je dois quand même vous donner une vue afin que vous puissiez vous en faire une idée.

Bonne chance. :))

1
Shreyash Mahajan