Yat-il un moyen de détecter si une photographie programatically est mise au point?

StackOverflow https://stackoverflow.com/questions/3793519

  •  05-10-2019
  •  | 
  •  

Question

Si je devais construire un service Web qui a utilisé un certain nombre de photos pour illustrer un service, il serait utile de détecter si les photos sont en fait la mise au point ou non.

Est-il possible de le faire programatically? (Mieux encore, est-il une implémentation open source de routine un tel?)

Était-ce utile?

La solution

Comment savez-vous qu'il est mis au point? Vous reconnaissez l'objet, bien sûr, mais plus généralement, parce qu'il a le détail. Détail, généralement, des moyens de changement radical de couleur sur une courte plage de pixels. Je suis sûr que vous pouvez trouver beaucoup d'algorithmes de détection de pointe là par google. Sans donner beaucoup de pensée:

edgePixelCount = 0;

for each pixel in image
{
    mixed = pixel.red + pixel.blue + pixel.green;
    for each adjacentPixel in image.adjacentPixels(pixel)
    {
        adjacentMixed = 
           adjacentPixel.red + 
           adjacentPixel.blue + 
           adjacentPixel.green;
        if ( abs ( adjacentMixed - mixed ) > EDGE_DETECTION_THRESHOLD )
        {
             edgePixelCount++;
             break;
        }
    }
}

if (edgePixelCount > NUMBER_OF_EDGE_PIXELS_THRESHOLD)
{
     focused = true;
}

Remarque: vous auriez probablement besoin d'utiliser des « pixels adjacents » avec une certaine distance, et pas seulement des pixels de bord immédiats. Même la mise au point, des images haute résolution pourraient avoir souvent des gradients.

Autres conseils

Regardez dans les méthodes de détection de bord réel -. En utilisant des filtres laplacien, filtres gaussienne, méthode Log (laplacien de gaussienne), etc. Ces méthodes sont beaucoup plus tweakable pour répondre à vos cas spécifiques que le simple, de PatrickV (quoique élégant)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top