2010-08-12 9 views
4

J'ai un certain nombre d'images où je connais la distance focale, le nombre de pixels, les dimensions et la position (à partir du GPS). Ils sont tous de haute oblique, pris sur le sol avec des caméras disponibles dans le commerce.Algorithme de mesure de la distance euclidienne entre les pixels d'une image

alt text http://desmond.yfrog.com/Himg411/scaled.php?tn=0&server=411&filename=mjbm.jpg&xsize=640&ysize=640

Quelle serait la meilleure méthode pour le calcul des distances euclidiennes entre certains pixels dans une image? Si c'est effectivement possible.

+2

Si vous voulez la distance réelle entre deux points de votre photo, vous aurez également besoin de la hauteur de l'appareil, je crois. Mais que se passe-t-il si vous voulez la largeur de ce lac, par rapport à la largeur d'une petite "baie"? – MPelletier

Répondre

2

En supposant que vous ne recherchiez pas la modélisation complète du paysage, mais une approximation simple, cela ne devrait pas être trop difficile. Fondamentalement, une première approximation de votre image se réduit à une caméra avec une distance focale connue en regardant dans un plan. Nous pouvons donc créer très facilement un modèle du système en 3D - ce n'est pas trop loin de l'observateur classique qui regarde une démo en damier.

Normalement, notre problème graphique serait de projeter le modèle 3D en 2D afin que nous puissions rendre l'image. Bien que la plupart des programmes utilisent aujourd'hui une API (comme OpenGL) pour ce faire, les équations ne sont pas particulièrement complexes ou difficiles à comprendre. J'ai écrit mon premier code en utilisant les exemples de 3D Graphics In Pascal qui est un bon traité clair, mais il y aura beaucoup d'autres sources similaires (bien que probablement moins de nos jours comme une API matérielle est invariablement utilisée). Ce qui est utile à ce sujet est que les équations de projection sont commutatives, en ce que si vous avez un point sur l'image et le modèle, vous pouvez retourner les données à travers la projection pour récupérer les coordonnées 3D originales - ce que vous souhaitez faire. Donc, quelques approches suggèrent: soit écrire le code pour faire soi-même le directement ci-dessus, ou probablement utiliser plus simplement OpenGL (je recommanderais le GLUT toolkit pour cela). Si vos maths sont bons et que la manipulation de matrices ne vous pose aucun problème, je vous recommande la première car la solution sera plus serrée et intéressante. Sinon, adoptez l'approche OpenGL. Vous voudrez probablement transformer l'approximation caméra/plan en caméra/sphère assez tôt aussi.

Si cela n'est pas suffisant pour vos besoins, alors en théorie aller à la modélisation du paysage réel serait réalisable. Les données SRTM sont disponibles gratuitement (mais pas sous la forme la plus conviviale). Ainsi, en combinaison avec votre position GPS, il devrait être possible de créer un modèle de maillage avec lequel vous appliquez les mêmes algorithmes que ci-dessus.

Questions connexes