Domanda

Se fossi costruendo un servizio web che ha utilizzato un numero di foto per illustrare un servizio, sarebbe utile per rilevare in realtà se le foto sono a fuoco o meno.

C'è un modo di fare questo programatically? (Ancora meglio, c'è un'implementazione open source di tale routine di un?)

È stato utile?

Soluzione

Come fai a sapere che è a fuoco? È riconoscere l'oggetto, naturalmente, ma più in generale, perché ha dettaglio. Dettaglio, tipicamente, significa drastico cambiamento di colore in un breve intervallo di pixel. Sono sicuro che si può trovare un sacco di algoritmi di rilevamento bordo là fuori tramite google. Senza dare molto pensiero:

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;
}

Nota: si sarebbe probabilmente bisogno di usare "pixel adiacenti" con una certa distanza, non solo pixel del bordo immediati. Anche a fuoco, le immagini ad alta risoluzione possono spesso avere pendenze.

Altri suggerimenti

Se vuoi in metodi di rilevamento vantaggio reale -. Utilizzando filtri Laplaciane, filtri Guassian, log (Laplaciano della gaussiana), ecc Questi metodi sono molto più tweakable base alle proprie casi specifici di semplice di PatrickV (anche se elegante) Metodo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top