[PYTHON] Photogrammétrie vue d'OpenCV. (Pourquoi les piliers ont tendance à disparaître)

À propos de ce document

Photogrammétrie permettant de créer des données 3D à partir de plusieurs photos. C'est bien de pouvoir générer des données sans avoir besoin d'équipement spécial ...

Lorsque la photogrammétrie est effectuée avec 3DF Zephyr, elle peut être prise proprement comme un tronc d'arbre, ou elle peut être horrible comme un pilier. J'ai lu un livre OpenCV et j'ai résumé en quelque sorte le contenu du traitement de la photogrammétrie sur la cause. (Comme il y a beaucoup d'images, elles sont affichées en taille réduite. Cliquez pour afficher la taille réelle)

Tout d'abord, un exemple qui fonctionne et un exemple qui ne fonctionne pas

La figure ci-dessous montre un maillage texturé créé à partir de 4 photos dans 3DZF. (Créé avec les paramètres par défaut)

↓ Un boîtier qui peut être magnifiquement tridimensionnel ↓ 木の幹2.jpg

↓ Cas où le pilier est décevant ↓ ルーセントの柱.jpg

Présentation du traitement de photogrammétrie

Tout d'abord, comprenez en quelque sorte ce que fait la photogrammétrie. Pour créer des données 3D, le traitement suivant doit être effectué. (Peut-être.) ** 1. Détectez les caractéristiques de la photo. ** ** ** 2. Liez les points caractéristiques de plusieurs photos. ** ** ** 3. Estimez la position de la caméra. ** ** ** 4. Mesurer pour chaque point caractéristique. ** ** ** 5. Le groupe de points obtenu par le levé est regroupé pour générer des données 3D. ** **

1. 1. Traitement de détection des fonctionnalités

Trouvez les points caractéristiques de l'image. Avec Python-OpenCV, vous pouvez envoyer l'image à la fonction Akaze.detectAndCompute. La figure ci-dessous montre le résultat du traitement de la photo avec Akaze.detectAndCompute. Image1b.jpg

2. Lier des points caractéristiques

À partir de plusieurs images, des points avec des caractéristiques correspondantes sont liés. Avec Python-OpenCV, vous pouvez alimenter la fonction matchar avec une image. La figure ci-dessous montre le résultat de la liaison des deux photos prises en les déplaçant latéralement avec la fonction matchar.

3, 4. Estimation de la position de la caméra, levé des points caractéristiques

Comme le montre la figure ci-dessus, dans les deux photos prises en se déplaçant latéralement, les points caractéristiques au premier plan se déplacent considérablement et les points caractéristiques au loin ne bougent pas beaucoup. Si vous le comparez à l'angle mémorisé par la fonction triangulaire du collège, il ressemble à la figure ci-dessous. sankakusokuryou.jpg À partir de la quantité de mouvement des points caractéristiques, estimez d'abord la position de la caméra (la position à laquelle le tsuji correspond), puis estimez la position de chaque point caractéristique à partir de la position de la caméra.

↓ Lorsque le groupe de points a été obtenu à partir des coordonnées des points caractéristiques avec 3DF Zephyr ↓ 3dz1.jpg

5. Regroupement de points caractéristiques, génération de polygones

Ensuite, regroupez les points caractéristiques et rendez-les polygonaux. ↓ Regrouper des points pour générer des polygones ↓ 3dz2.jpg

↓ Peinture de texture ↓ 3dz3.jpg

Détails de O'REILLY OpenCV3 a l'explication suivante dans l'explication du regroupement. Envie d'étiqueter l'apprentissage automatique? (Je ne suis pas sûr parce que je suis déçu> <) opencva.jpg

Alors, quelle est la différence entre ce qui fonctionne et ce qui ne fonctionne pas?

Appliquons le processus d'extraction des points caractéristiques d'OpenCV à l'image du tronc et du pilier de l'arbre au début.

Résultat de l'extraction de points caractéristiques sur l'image du tronc d'arbre

↓ Un agrandi. Je détecte toujours les irrégularités de la surface du coffre.

Résultat de l'extraction de points caractéristiques sur l'image du pilier

Par rapport au cas réussi, la détection des points caractéristiques est biaisée. En particulier, les piliers présentent peu de points caractéristiques pour leur grande taille.

Où est le point caractéristique?

Essayez d'extraire les points caractéristiques de la figure

Traitons des formes droites et circulaires avec Akaze.detectAndCompute. ↓ Résultat de l'extraction des points caractéristiques ↓ Il y a des points caractéristiques sur les courbes et les coins, mais la partie droite est traversante. Je ne peux pas le croire.

Détails de O'REILLY OpenCV3 a l'explication suivante pour les fonctionnalités. Il semble que le point caractéristique est un point qui est en échelle de gris et a une grande différence par rapport aux points environnants.

Les lignes droites ne deviennent pas des points caractéristiques

↓ Une version agrandie de l'image précédente. L'intérieur du coin est un point caractéristique. ↓ Par rapport aux points au voisinage de 8 autour du point A (noir) comme référence, noir 3: blanc 5 (fonction de correspondance à 38%) Par rapport aux points au voisinage de 8 autour du point B (blanc) comme référence, noir 5: blanc 3 (fonction de correspondance à 38%) Et, il y a de nombreux points avec des valeurs différentes du centre.

Au contraire, les lignes droites qui ne sont pas des points caractéristiques Par rapport aux points au voisinage de 8 autour du point C (blanc) comme référence, noir 3: blanc 5 (62% de correspondance) Par rapport aux points au voisinage de 8 autour du point D (noir), noir 5: blanc 3 (62% de correspondance) Et, il y a de nombreux points avec la même valeur que le centre. À l'extérieur du coin (en haut à gauche du point A, etc.), le blanc est le point de départ et le noir 1: le blanc 7. (88% de correspondance)

Si un point d'entité a une grande différence par rapport aux points environnants, l'intérieur du coin est fort en tant qu'entité et la ligne droite est faible en tant qu'entité. C'est la raison pour laquelle les points caractéristiques ne se produisent pas sur les colonnes et les plans.

Par exemple, dans le cas de l'image du muffin au début マフィン.gif

Lorsque les points caractéristiques sont extraits, les données tridimensionnelles autour du muffin deviennent les points caractéristiques de la poudre de muffin, ce qui lui donne une belle apparence. (Suge en poudre)

D'un autre côté, le gobelet en papier était émietté. Si vous regardez les points caractéristiques, vous ne pouvez pas obtenir les points caractéristiques. Est-ce parce que la teinte et la luminosité sont proches de celles du plateau de fond?

Je ne sais pas quel est le traitement interne de 3DFZephyr, mais je pense que ce sera utile car la tendance est similaire à la détection des points caractéristiques d'Akaze.

Résultats obtenus

Les lignes droites et les plans ont tendance à être ignorés en raison des conditions d'évaluation des points caractéristiques. Parce que c'est un tel processus, je n'ai pas d'autre choix que de le boire. Suivez en réduisant le flou et le flou et en capturant les petites rayures et la poudre comme points caractéristiques.

Alors saupoudrez de poudre à muffins inutile!

J'ai écrit cela, mais quand une personne délicieuse le fait, la ligne droite de la boîte à lunch est prise. Une personne formidable à enseigner.

Recommended Posts

Photogrammétrie vue d'OpenCV. (Pourquoi les piliers ont tendance à disparaître)
Pourquoi je suis passé de Java à Dart