Table des matières:
- Étape 1: Évaluer la complexité de la tâche
- Étape 2: Trouvez la bonne approche
- Étape 3: Calculer l'histogramme thêta
- Étape 4: Calculer l'histogramme Rho
- Étape 5: Trouvez le nœud central
- Étape 6: choisissez parmi 2 alternatives
- Étape 7: Déterminez les coins externes
- Étape 8: essayez-le en pratique
Vidéo: Reconstruction 3D à partir d'une seule photo : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
La tâche de reconstruction 3D est généralement associée à la vision binoculaire. Alternativement, vous pouvez déplacer une seule caméra autour de l'objet. Pendant ce temps, si la forme de l'objet est connue, la tâche peut être résolue à partir d'une seule photo. C'est-à-dire que vous n'avez qu'une seule caméra et qu'elle ne bouge pas. Voyons comment procéder étape par étape. Nous utiliserons Rubik's Cube car il est bien standardisé et possède un ensemble riche de fonctionnalités. Il peut être considéré comme un objet très simple et simultanément une construction compliquée. La vision industrielle doit donc surmonter des obstacles substantiels pour accomplir la tâche.
Étape 1: Évaluer la complexité de la tâche
À première vue, la tâche est simple. Trouvez le nœud central où 3 arêtes du cube se rejoignent et dessinez ces arêtes. A partir de leurs coordonnées, il est possible de calculer la distance à la caméra et les angles de rotation. Le problème est que ces lignes n'existent pas. Sur l'image de gauche, vous voyez que chaque bord est représenté par 2 lignes parallèles. De plus, l'image en haut à droite montre que chacun d'eux est divisé en 3 segments. De plus, si nous appliquons une variante de la populaire transformée de Hough qui peut détecter des segments de ligne, elle effectue la tâche avec quelques erreurs qui rendent impossible la détection du nœud central. Si les extrémités ne se rejoignent pas, il n'y a pas de point unique. Si la détection dépasse la fin, cela ressemblera au nœud au milieu du bord comme vous le voyez sur les 2 images restantes.
Étape 2: Trouvez la bonne approche
Lorsque trop de détails rendent les algorithmes déterministes impraticables, il est temps d'envisager une approche probabiliste. Si l'on calcule les paramètres moyennés de l'image, leurs erreurs seront sensiblement diminuées et paradoxalement la méthode s'avérera plus fiable. La transformation de Hough standard ne produit pas de segments de ligne. Seulement sa pente theta et la distance rho de l'origine des coordonnées. Ils forment l'espace de Hough dont la partie est illustrée ci-dessus. Ici thêta correspond à l'axe horizontal. Des points lumineux marquent des lignes possibles sur l'image. Notez que plusieurs de ces spots sont situés les uns au-dessus des autres. Pas étonnant, sur notre image il y a beaucoup de lignes parallèles. Ils ont le même thêta et un rho différent.
Étape 3: Calculer l'histogramme thêta
Détectons de tels clusters. À cette fin, nous résumerons les lectures de tous les points dans l'espace de Hough avec le même thêta. Vous voyez l'histogramme correspondant sur l'illustration. Quelques notes sur les mesures. Lorsque vous travaillez avec des images en coordonnées de pixels, l'axe X se déroule comme d'habitude, mais Y pointe vers le bas de sorte que l'origine des coordonnées est le coin supérieur gauche et le thêta doit être mesuré à partir de l'axe X dans le sens des aiguilles d'une montre. En gardant à l'esprit que tout le balayage de thêta sur l'image est de 180 degrés, vous pouvez vérifier approximativement que 3 pics majeurs représentent 3 pentes prédominantes sur l'image.
Étape 4: Calculer l'histogramme Rho
Maintenant que nous connaissons 3 groupes principaux de lignes parallèles, séparons les lignes à l'intérieur de chacun d'eux. Nous pouvons répéter la même approche. Prenons une colonne de l'espace de Hough qui correspond à un pic sur l'histogramme thêta. Ensuite, nous allons calculer un autre histogramme où l'axe X représente la valeur rho et Y - les lectures résumées pour ce rho. Évidemment, la somme sera moindre donc ce graphique n'est pas si lisse. Néanmoins, les pics sont bien visibles et leur nombre (7) correspond exactement au nombre de lignes parallèles sur l'image source. Malheureusement, tous les graphiques ne sont pas aussi parfaits, mais le principe est clair.
Étape 5: Trouvez le nœud central
Si nous prenons le pic central sur l'histogramme rho pour chaque thêta, nous obtiendrons 3 lignes qui sont rouges sur l'image. Leur intersection marque le point nécessaire.
Étape 6: choisissez parmi 2 alternatives
Vous voyez que chaque ligne part du point central dans les deux sens. Comment déterminer la bonne moitié? Prenons theta3. Supposons que nous prenions la partie inférieure de cette ligne. Calculons encore un autre espace de Hough uniquement pour la partie de l'image entre 2 lignes vertes et le coin supérieur droit de l'image. Créez ensuite un histogramme thêta pour cela. Vous voyez que le troisième pic a complètement disparu donc nous avons fait le bon choix.
Étape 7: Déterminez les coins externes
Maintenant, nous pouvons utiliser le premier et le dernier pic sur les histogrammes rho afin de tracer des lignes bleues qui coupent les bords rouges et marquent les coins restants. La tâche est résolue.
Étape 8: essayez-le en pratique
Les illustrations de ce Instructable ont été créées à l'aide de Perception 1.0. Il s'agit d'un logiciel gratuit qui utilise OpenCV - une puissante bibliothèque de vision par ordinateur. Il peut également être lié à WinNB qui a été utilisé dans mon autre Instructable, offrant ainsi une capacité de vision pour la robotique. Vous pouvez télécharger les deux programmes à partir de nbsite. Pour l'installation, exécutez simplement le fichier exe téléchargé. Plus tard, vous pouvez le supprimer à l'aide de l'outil standard de Windows. Le site contient également des ressources sur la vision par ordinateur et des sujets connexes. Dans Perception, vous trouverez la méthode décrite de reconstruction 3D ainsi que bien d'autres. L'avantage de ce programme est qu'il génère le résultat final avec des données intermédiaires. Vous êtes capable de faire des recherches sur le fonctionnement de la vision par ordinateur sans être un programmeur. En ce qui concerne l'entrée, chaque méthode a des échantillons typiques spécialement sélectionnés. Bien sûr, vous pouvez également utiliser le vôtre. Il est possible de saisir des images à partir d'un fichier ou de l'appareil photo de l'ordinateur. N'hésitez pas à me contacter pour toutes questions ou suggestions.
Conseillé:
Jeux à 4 boutons utilisant une seule entrée analogique : 6 étapes (avec photos)
Jeux à 4 boutons utilisant une entrée analogique : cette instructable se concentre sur l'utilisation d'une ligne d'entrée analogique pour plusieurs boutons qui peuvent être détectés indépendamment les uns des autres. Tous les jeux (8 en t
Faites défiler une seule ligne LCD : 4 étapes (avec images)
Faites défiler une seule ligne LCD : la bibliothèque de cristaux liquides a deux fonctions utiles scrollDisplayLeft() et scrollDisplayRight(). Ces fonctions font défiler tout l'affichage. C'est-à-dire qu'ils font défiler les deux lignes sur un écran LCD 1602 et les quatre lignes sur un écran LCD 2004. Ce dont nous avons souvent besoin, c'est de l'abi
Comment lire plusieurs valeurs analogiques à l'aide d'une seule broche analogique : 6 étapes (avec images)
Comment lire plusieurs valeurs analogiques à l'aide d'une seule broche analogique : Dans ce didacticiel, je vais vous montrer comment lire plusieurs valeurs analogiques à l'aide d'une seule broche d'entrée analogique
Comment : attacher vos chaussures d'une seule main : 10 étapes
Comment : attacher vos chaussures d'une seule main : le guide sur la façon d'attacher vos chaussures d'une seule main
Affichage à deux chiffres utilisant une seule matrice LED 8x8 : 3 étapes
Affichage à deux chiffres utilisant une seule matrice de LED 8x8 : Ici, je voudrais construire un indicateur de température et d'humidité pour ma pièce. J'ai utilisé une seule matrice LED 8x8 pour afficher des nombres à deux chiffres, et je pense que cette partie du projet est devenue plus utile. J'ai emballé le final construit à l'aide d'une boîte en carton, la douleur