web-dev-qa-db-fra.com

Est-il possible de mesurer la distance d'objet avec la caméra?

Est-il possible de mesurer la distance d'objet avec la caméra du téléphone?

Je veux dire, dans mon application, je démarre la caméra, la faisant face à l'objet (disons maison), puis appuie sur le bouton, il calcule la distance et me montre à l'écran. 

S'il est possible où je peux trouver un tutoriel ou des informations à ce sujet?

36
evilone

Eh bien, vous devriez lire comment ithinkdiff.com "mesure" la distance:

Utilise l'angle de l'iPhone pour estimer la distance à un point sur le sol . Tenez l'iPhone devant vous, alignez le point dans l'appareil photo et obtenez une image directe lecture de la distance. La distance peut alors être utilisée dans l'outil de vitesse.

Donc, fondamentalement, cela prend la hauteur de l'endroit où vous tenez le téléphone (niveau des yeux), puis vous devez diriger la caméra vers l'endroit où l'objet touche le sol. Ensuite, le téléphone mesure l'inclinaison et calcule la distance à l'aide d'une trigonométrie simple.

Ce n'est bien sûr pas très précis. Plus l'objet est lointain, moins il est précis. En outre, il suppose que le sol est de niveau.

26
Peter Knego

J'accepte que la question a reçu une réponse adéquate (avec les mises en garde évidentes relatives à l'exigence d'un terrain plat et à d'éventuels problèmes de précision), mais pour ceux qui ne croient pas que cela peut être fait ou qui ont besoin d'une caméra vidéo, laissez-moi vous expliquer les calculs simples besoin de le faire ....

alt text

La photo ci-dessus me montre debout devant ma maison. L'horizontal (d) est la distance que je veux mesurer et la verticale (h) est la hauteur au-dessus du sol à laquelle je tiens la caméra. Dans ce cas, "h" est une valeur connue lorsque je tiens l'appareil photo Android à la hauteur des yeux (environ 1,7 cm). Lorsque j'incline la caméra pour la diriger directement vers le point où ma maison rencontre le sol, il suffit que le logiciel calcule l'angle (a) par rapport à la verticale et il peut calculer le 'd' ...

d = h * tan a
56
Squonk

Nan. La caméra ne peut vous donner que des données d'image et une image seule ne vous donne pas assez d'informations pour vous donner des informations sur la profondeur. Si vous aviez plusieurs images pour lesquelles vous disposiez d'informations de localisation ou même de vidéo, vous pouvez les traiter pour trianguler la distance, mais une seule image ne suffirait pas à vous donner une distance.

9
Daniel DiPaolo

Vous pouvez utiliser la technique utilisée par nos yeux pour obtenir une perspective de profondeur et de distance. 

1) Obtenez 2 images du même objet à partir de deux positions de caméra différentes. 

2) La distance ou les pixels entre l'objet sur 2 images sont inversement proportionnels à la distance entre la caméra et l'objet.

L'implémentation est disponible sur https://github.com/agnelvishal/Distance-between-camera-and-object Voici le document de recherche http://dsc.ijs.si/files/ papers/S101% 20Mrovlje.pdf

3
Agnel Vishal

Vous avez l'angle dans l'accéléromètre du téléphone. Si vous calculez la tangente de cet angle et que vous la multipliez par la hauteur de l'objectif de la caméra, vous obtenez la distance.

2
Chase

Non. Seulement avec deux caméras en mode stéréo, comme la Xbox 360 Kinect. Il faut au moins 3 points pour trianguler la distance.

0
Ricardo Teixeira

Je pense qu'en utilisant FastCV, vous pouvez calculer la distance entre la caméra et l'objet. En cela, vous n'avez pas besoin de connaître l'angle ou la position de la caméra que vous tenez au-dessus du sol. jetez un oeil à cette question ici

0
kendrelaxman

Je pense que cela pourrait être possible en utilisant la caméra du téléphone. Je sais que les téléphones modernes utilisent des objectifs pour se concentrer sur un objet. S'il est possible de connaître leur longueur focale et leur position (déplacement) pour se concentrer sur l'objet choisi, il est également possible de déterminer la distance.

0
strategaD

Je pense que cette appli utilise l’approche mentionnée par MisterSquonk (c’est gratuit). Regardez la technique "Trigonométrie".

0
intA

Une façon d'y parvenir consiste à utiliser les DPI de votre appareil. Vous pouvez prendre une photo et calculer la hauteur. Mais vous aurez besoin d'un autre objet comme référence et vous pourrez alors connaître le problème de cette méthode: la perspective entre les objets.