0

J'essaie de trouver les coordonnées x, y pour le nez d'une personne dans une photo avec AWS rekognition, im en utilisant le SDK javascript et je suis retourné les valeurs comme un ratio de la taille de l'image. Ceci est clairement indiqué dans la documentation et cela ne me pose aucun problème. Ce que je suis après est une formule pour trouver exactement le x, y du nez "point de repère" de la perspective de l'image entière, pas la boîte englobante. ci-dessous est ma sortie de rekognition.AWS rekognition x, y formule

{ FaceDetails: 
    [ { BoundingBox: 
     { Width: 0.6399999856948853, 
      Height: 0.47999998927116394, 
      Left: 0.1644444465637207, 
      Top: 0.17666666209697723 }, 
     Landmarks: 
     [ { Type: 'eyeLeft', 
      X: 0.36238425970077515, 
      Y: 0.3900916874408722 }, 
      { Type: 'eyeRight', X: 0.5580493807792664, Y: 0.362303763628006 }, 
      { Type: 'nose', X: 0.4164798855781555, Y: 0.4511926472187042 }, 
      { Type: 'mouthLeft', 
      X: 0.42259901762008667, 
      Y: 0.5591621994972229 }, 
      { Type: 'mouthRight', 
      X: 0.5580134391784668, 
      Y: 0.5394133925437927 } ], 
     Pose: 
     { Roll: -9.781778335571289, 
      Yaw: -20.029239654541016, 
      Pitch: 10.893087387084961 }, 
     Quality: { Brightness: 59.32780456542969, Sharpness: 99.9980239868164 }, 
     Confidence: 99.99403381347656 } ] } 

J'ai une image qui est 2576x1932 est-il une formule qui peut être appliquée ici pour me donner x, y du nez dans l'image. Actuellement, il donne le x, y du nez de l'intérieur de la boîte de délimitation (je pense). Mes compétences en mathématiques ne sont pas vraiment à la hauteur de celui-ci.

De la documentation:

BOUNDINGBOX:

Les valeurs haut et à gauche sont retournés rapports de la taille de l'image globale. Par exemple, si l'image d'entrée est de 700x200 pixels et que la coordonnée supérieure gauche de la boîte englobante est de 350x50 pixels, l'API renvoie une valeur de gauche de 0,5 (350/700) et une valeur maximale de 0,25 (50/200).

repère:

coordonnée x de la partie supérieure gauche du site d'intérêt exprimé comme la ration de la largeur de l'image. Par exemple, si les images sont 700x200 et la coordonnée x du point de repère est à 350 pixels, cette valeur est 0,5.

Répondre

1

Les valeurs X/Y retournées par Rekognition sont simplement des pourcentages de la largeur/hauteur de l'image. Selon la documentation de l'API Rekognition, les positions du point de repère sont relatives à l'image entière et non à la zone de délimitation. Par conséquent, tout ce que vous avez à faire est de multiplier la largeur de l'image par la valeur X du point de repère pour obtenir la position X de ce repère (et ensuite multiplier la hauteur de l'image par la position Y du point de repère obtenir la position Y du point de repère en pixels).

La raison pour laquelle Rekognition le fait est que la position du nez (par exemple) est la même, peu importe la taille de pixel de l'image. Dans votre exemple ci-dessus, le nez est situé à:

{ Type: 'nose', X: 0.4164798855781555, Y: 0.4511926472187042 }, 

Ce qui signifie simplement qu'il est à 41,6% de la largeur de l'image à travers à partir de la frontière gauche, et 45,1% de la hauteur de l'image vers le bas à partir de la bordure supérieure. Multipliez ces pourcentages par votre largeur et hauteur réelles pour obtenir des coordonnées pixel.

Voir: http://docs.aws.amazon.com/rekognition/latest/dg/API_Landmark.html