Compléter la réalité: revoir le matériel


Publié par Igor Litvinenko, développeur mobile senior.

Tout le monde a probablement entendu parler de casques VR qui créent l'effet d'être dans le monde virtuel. Cependant, aujourd'hui, je voudrais parler non pas de virtuel, mais de réalité augmentée. Ces concepts sont importants à distinguer. Dans les casques de réalité virtuelle, l'image entière est générée - une telle réalité est complètement artificielle. La réalité augmentée, contrairement à la réalité virtuelle, n'implique pas la création d'une réalité complètement artificielle, mais l'ajout du flux vidéo de notre réalité aux objets et données virtuels. Ainsi, la combinaison du virtuel et du monde réel se produit.

Technologies de base de réalité augmentée



Comment se crée la réalité augmentée? Pour que l'ajout d'un objet réel spécifique se produise, il est nécessaire de détecter cet objet réel dans le flux vidéo. C'est le plus important - après la découverte d'un objet, il n'est plus difficile de terminer quelque chose et de le compléter en quelque sorte. Il existe différentes façons de détecter les objets souhaités - principalement pour cela, des marqueurs de réalité augmentée sont utilisés. Ci-dessous, dans une séquence évolutive, sont répertoriées les principales méthodes de détection d'objets complémentaires:

  • Le marqueur ou l'image le plus simple.
  • Sans marqueur - Réalité augmentée sans marqueur.
  • Marqueurs 3D simples.
  • Une combinaison de marqueurs pour le rendu d'objets complexes (cylindre, cube, boîte).
  • Marqueur de trame.
  • Basé sur l'emplacement.
  • Véritable réalité augmentée.


Marqueur d'image



Le marqueur de réalité augmentée le plus simple peut être facilement reconnu par le cadre noir épais. Un tel objet est très facile à détecter dans le flux vidéo:



  • Prérequis:
    • Un cadre noir dont la largeur est d'au moins 10%.
    • Seulement en noir et blanc.
    • Invariant aux virages - nous pouvons indiquer l'angle de rotation exact à tout moment.
    • Toujours carré.

  • Les algorithmes sont ici les plus simples: nous pouvons déterminer les bords de l'image (détection des bords), le carré et le carré blanc au milieu, en faisant ces seuils - binariser l'affichage. De cette façon, nous pouvons accéder au contenu à l'intérieur, le découper et travailler avec comme avec une image - c'est beaucoup plus facile que de numériser le cadre entier.
    • Détection de coin.
    • Détection de blob.
    • Détection des contours.
    • Seuillage.

  • Avantage:
    • L'algorithme de détection le plus simple est un grand nombre de bibliothèques ouvertes et fermées qui peuvent détecter un marqueur.
    • Le plus stable - le marqueur est toujours détecté très précisément et il n'y a pratiquement pas d'effet de gigue du modèle.



Sans marqueur



Malgré le nom, avec l'approche sans marqueur, le marqueur, en fait, est toujours là. C'est juste qu'ici ça ne ressemble pas à un marqueur, mais à une image.



  • Prérequis:
    • Un grand nombre de petites pièces.
    • Plus il y a de couleurs, mieux c'est.
    • Elle est invariante aux virages.
    • Le rapport idéal est de 1: 1, c'est-à-dire que plus le carré est proche, mieux c'est. Avec un rapport de 1: 2 ou plus, le marqueur est très mal reconnu

  • Des algorithmes Des points caractéristiques sont utilisés pour détecter de tels marqueurs: disons que c'est le point où le gradient change. Autrement dit, c'est le point où une frontière claire est visible. Un algorithme pour trouver des points géométriques peut également être utilisé: à certains endroits de l'image, il existe des marqueurs exacts qui forment des coins, par exemple, une croix peut être un point géométrique.
    • Detect interest points.
    • Fiducial markers/
    • Edge detection — .
    • Simultaneous localization and mapping (SLAM) — .

  • :
    • : — . , — . , , — , .





Cette technologie nous permet de prendre en compte la forme simple d'objets tridimensionnels: un cube, un cylindre, etc. Ici, nous pouvons créer une configuration qui aide à comprendre quel type d'objet est devant nous - par exemple, un objet d'une certaine forme avec une certaine combinaison de couleurs peut servir de marqueur (par exemple, nous a fait une application qui définit le médicament par emballage et étiquette). Nous avons également fait une application qui reconnaît les marques de vin - la bibliothèque pourrait trouver des étiquettes sous différents angles, ce qui ne fonctionne pas dans une technologie sans marqueur ou simple en raison de la transformation de marqueur non linéaire.

Marqueur de cadre



Disons que vous tenez une conférence. Vous avez un logo que vous accrochez aux murs pour montrer aux gens où aller. Il n'y a qu'un seul logo, donc toutes les images sont les mêmes; ce faisant, vous devez identifier de manière unique chaque image. Comment faire À l'aide d'un marqueur de cadre. Lors de l'utilisation du marqueur de trame, l'ID d'image est crypté dans la trame:



  • Prérequis:
    • Cadre unifié.
    • Elle est invariante aux virages.
    • Toujours carré.
    • L'image intérieure doit être en contraste avec le cadre.
    • Petite taille (3 - 10 cm).

  • Algorithmes:
    • marqueurs fiduciaux.

  • Avantage:
    • La capacité d'identifier de manière unique le même marqueur.



Réalité augmentée basée sur la localisation



Si vous vous promenez dans la ville et obtenez des informations sur les bâtiments que vous voyez, l'ajout de réalité se produit très probablement en utilisant l'emplacement.



Dans ce cas, il n'y a pas de tâche de reconnaissance d'image. Cette technologie est basée sur l'utilisation d'un récepteur GPS, d'une boussole et d'un accéléromètre présents dans l'appareil mobile. Grâce à eux, nous savons dans quelle direction nous nous tournons. Ainsi, pour compléter la réalité, il vous suffit de répondre correctement aux relevés des capteurs de l'appareil mobile. Cette tâche n'est pas si difficile - il y a suffisamment de bibliothèques pour bien y faire face.

Réalité augmentée réelle



Il n'y a pas de marqueurs ici. Ici, en déplacement, nous déterminons les formes et les caractéristiques 3D de tout objet qui tombe dans l'objectif de la caméra. Nous devons connaître la profondeur de l'objet afin de transformer une image 2D en 3D. Pour ce faire, vous pouvez utiliser, par exemple, l'algorithme SLAM déjà mentionné, qui recherche des points caractéristiques sur les objets environnants. Jusqu'à présent, sur les appareils mobiles, tout cela est très lent. Maintenant, la technologie de cette réalité augmentée met activement en œuvre Sony en collaboration avec la PlayStation.

Partage de clé - keyshare.org



Et maintenant, je vais vous dire comment nous avons écrit notre moteur de réalité augmentée dans DataArt et pourquoi nous l'avons fait.

Une startup suisse a décidé de proposer un nouveau système d'augmentation des ventes basé sur l'utilisation de la technologie de réalité augmentée, et nous avons développé ce système pour cela. Voilà comment ça fonctionne.

Nous avons un marqueur de réalité augmentée breveté sous la forme d'une image clé qui peut être placée, par exemple, dans un magazine à côté d'une description d'un produit. Des points blancs de différentes tailles à l'intérieur de cette clé vous permettent d'identifier de manière unique le contenu. Il y a un serveur - il prend le code lu sur la clé et renvoie à l'utilisateur une variété de données sur le produit, son modèle 3D, etc.



Pour développer une telle clé, nous avons essayé toutes les bibliothèques les plus populaires, mais nous n'avons pas pu trouver de marqueur qui conviendrait à n'importe quelle combinaison. Lorsque nous utilisons la réalité augmentée de marqueur, elle se trouve à des points clés. Le marqueur est en noir et blanc et les points clés sont concentrés dans des endroits changeants. Finalement, nous avons décidé de tout écrire à partir de zéro.

Nous avons utilisé l'algorithme de recherche MSER, qui ne trouve qu'une portée. Après tout, nous savons qu'il y a définitivement une clé noire et une croix blanche à l'intérieur de cette clé. Par conséquent, nous trouvons d'abord une grande région noire, et à l'intérieur de cette région, nous trouvons une région blanche. Ensuite, nous découpons l'image et examinons le rapport d'aspect - il devrait être de 2: 1. Ensuite, nous analysons le formulaire. En se concentrant sur la croix, nous pouvons trouver le début de la phrase clé. Quant aux points, ils sont toujours situés aux mêmes endroits, il est donc facile de les trouver. En conséquence, nous avons un algorithme de recherche de marqueurs pour le formulaire. Bien sûr, ce n'est pas une solution universelle, mais cela remplit très bien notre tâche.

Ainsi, sur l'iPhone 5S, nous avons obtenu une performance de plus de 25 FPS. Pour y parvenir, c'était assez difficile. Au début, comme avec tout algorithme, nous avons réduit l'image: l'algorithme de reconnaissance fonctionne beaucoup mieux sur une image réduite de faible qualité. Ensuite, ils ont introduit l'algorithme de prédiction - après avoir trouvé l'image, nous supposons que la clé ne peut pas sortir du cadre de plus d'une certaine valeur de pixel. Ensuite, nous raccourcissons l'image. Après cela, nous analysons la dynamique: si l'utilisateur tourne le téléphone vers la gauche, la touche se déplace vers la droite. Il s'agit d'un algorithme probabiliste. si nous ne trouvons pas immédiatement ce que nous recherchons, nous commençons à traiter une zone de plus en plus grande. Nous avons un excellent algorithme de rendu de modèle, qui a été écrit à partir de zéro.

Qu'avons-nous d'autre? Il y a trois rangées sur la clé, dans chacune d'elles il y a 13 points. Cela signifie que 469 combinaisons sont possibles. Étant donné qu'à une distance de plus d'un mètre, l'image est déjà quelque peu floue, nous avons créé un algorithme de décryptage probabiliste avec correction d'erreur. Nous l'utilisons conjointement avec une clé à correction automatique. Nous identifions donc avec précision les quatre faux signes, ce qui est suffisant. Nous avons également un algorithme de détection optimisé, un algorithme de suivi et de prédiction pour la position suivante.

Malgré le fait qu'une telle clé rappelle quelque peu un code QR, il existe des différences fondamentales. Vous ne pouvez pas attacher la réalité augmentée au code QR, car son contenu est en constante évolution. En d'autres termes, vous ne pouvez pas le créer comme marqueur. Vous ne pouvez pas y placer de modèle 3D et vous ne pouvez pas déterminer l'angle de rotation. De plus, une telle clé est très facilement reconnaissable.

Reconnaissance des clubs de football



Nous avons également développé une application qui aide les utilisateurs à garder une trace de leurs clubs de football préférés. Il vous permet d'ajouter de la réalité virtuelle à l'image du logo d'un club de football - lorsque vous passez la caméra sur le logo, les données du club s'affichent. 

Source: https://habr.com/ru/post/fr391055/


All Articles