Есть ли способ оформировать ли фотографию в фокусе?

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

  •  05-10-2019
  •  | 
  •  

Вопрос

Если бы я создал веб-сервис, который использовал ряд фотографий для иллюстрации сервиса, было бы полезно фактически обнаруживать, являются ли фотографии в фокусе или нет.

Есть ли способ сделать это программически? (Даже лучше, есть ли реализация такой рутины с открытым исходным кодом?)

Это было полезно?

Решение

Откуда вы знаете, что это в фокусе? Вы узнаете объект, конечно, но в целом, потому что он имеет деталь. Деталь, как правило, означает резкое изменение цвета в течение короткого диапазона пикселей. Я уверен, что вы можете найти много алгоритмов обнаружения краев через Google. Не давая это много мысли:

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

Примечание. Вам, вероятно, нужно будет использовать «соседние пиксели» с некотором расстояния, а не только немедленные пиксели для краевых. Даже в фокусе высокие изображения EXES часто могут иметь градиенты.

Другие советы

Посмотрите в методы обнаружения реального края - с помощью лаплацких фильтров, гуальских фильтров, бревенчатых (лаплацганских гауссов) и т. Д. Эти методы намного более тираются, чтобы соответствовать вашим конкретным случаям, чем простая (Albee Elegant) Patrickv.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top