28 votes

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

Je me suis référé à de nombreux liens mais je n'arrive toujours pas à obtenir un point à partir duquel je peux commencer mon développement. Je veux mesurer la hauteur, la largeur et la distance de mon image en utilisant une caméra. J'ai trouvé ceci application . Je veux faire ce type d'application, pas exactement la même mais assez similaire, mais pour mon exigence, je veux mesurer la hauteur, la largeur et la distance de mon image en utilisant une caméra.

Quelqu'un peut-il me donner/suggérer le bon chemin ou un exemple pour que je puisse me faire une idée plus précise de cette exigence ?

J'ai essayé ceci :

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

17voto

KKD Points 935

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

Obtenez d'abord la taille de la personne, disons h mètres.

sample image

si vous pouvez calculer la hauteur de la caméra depuis le sol (en utilisant la hauteur de la personne, c'est-à-dire h) et obtenir les angles A et B en utilisant un gyroscope ou quelque chose d'Android, alors vous pouvez calculer la hauteur de l'objet en utilisant la formule ci-dessus.

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

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

9voto

SpeedBirdNine Points 2532

Pour mesurer des distances avec une seule caméra, vous devez connaître quelques chiffres. Pour mesurer la hauteur d'un objet, par exemple une chaise, la seule chose dont vous disposez est sa taille dans la caméra (qui est en pixels et peut être convertie en pouces en utilisant la taille de l'écran), c'est tout. Pour mesurer la hauteur et la largeur, il est possible d'utiliser une référence, par exemple une personne de 1,80 m debout à côté de la chaise.

De cette façon, vous pouvez travailler à l'envers en utilisant, par exemple, un objet de 3 mètres de haut, en utilisant sa taille telle qu'elle apparaît dans la caméra, vous pouvez calculer la taille d'objets situés à la même distance, sur une surface qui n'est pas plane, même s'assurer qu'ils sont à la même distance est un défi.

Donc, en utilisant la caméra et seulement la caméra, ce n'est pas possible. Vous devez connaître la distance d'une manière ou d'une autre, ou avoir besoin d'une référence.

Si vous utilisez l'application pour mesurer la hauteur d'objets dont vous connaissez l'emplacement, vous pouvez alors, à l'aide du GPS, trouver la distance, et le reste est mathématique.

J'ai trouvé quelques 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 en dehors de celles que la caméra peut fournir, afin que vous puissiez également réfléchir à votre application en ce qui concerne ce qui peut être fait et quelles sont les limites.

L'une des solutions consiste à utiliser plusieurs caméras, ce qui peut être compensé par plusieurs photos prises à une distance connue. L'application peut donc demander à l'utilisateur de prendre plusieurs photos, de suivre la distance à l'aide du GPS, et cela peut probablement fonctionner.

Voir aussi ces liens :

  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

6voto

Tim Gostony Points 7276

Si vous connaissez l'angle d'observation de la caméra, vous pouvez utiliser la hauteur en pixels pour déterminer l'angle entre le haut et le bas de l'objet. Ensuite, en utilisant la distance et l'arctangente, calculez la hauteur :

height = arctan(angle) * distance

Pour trouver l'angle de vue, pointez la caméra sur un objet de hauteur connue, et faites en sorte qu'il remplisse exactement l'écran. Par exemple, pointez la caméra sur une règle, et faites en sorte qu'elle soit suffisamment éloignée pour que vous puissiez à peine voir les extrémités de la règle. Mesurez la distance par rapport à la caméra, et votre angle d'observation total est le suivant

viewportAngle = tan(ruler_length / distance)

Supposons ensuite que votre caméra mesure 480 pixels (webcam bon marché) et que l'angle de vue est de 20°. Si vous avez un objet à l'écran qui mesure 240px de haut, alors son angle est de 10°. Si vous savez qu'il se trouve à un mètre de distance, vous pouvez dire 2 feet * arctan(10°) = ~4.1 inches grand. (Je pense... il est 2 heures du matin donc ça peut être un peu faux)

2voto

Peter V Points 3587

Vous ne pouvez pas. Il faudrait que tu saches :

  • A quelle distance se trouve l'objet (vous pouvez connaître votre position grâce au GPS mais la position de l'objet ?)
  • Quelle est la longueur focale de l'appareil photo

Peut-être, juste peut-être, si l'objet était marqué optiquement avec, par exemple, un code QR, et que vous disposiez d'une carte de localisation par code...

2voto

Siddharth Points 3828

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

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

Vous avez besoin d'une référence pour mesurer. Vous pouvez peut-être faire porter à votre interlocuteur une casquette sur laquelle figurent quelques cercles verts lumineux. Une fois que vous aurez reconnu la taille du cercle, vous pourrez mesurer comparativement le reste.

Ou vous pouvez créer un cercle transparent de 1 pouce qui se superposera au visage, déplacer la caméra vers/hors du visage, viser votre cercle superposé sur le cercle vert vif de la casquette. Ensuite, votre photo sera à l'échelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X