如果我要构建一个使用许多照片来说明服务的Web服务,则实际检测照片是否在焦点上将很有用。

有什么办法以编程方式执行此操作吗? (更好的是,是否有这种例程的开源实现?)

最佳答案

您怎么知道它是重点?当然,您会识别出该对象,但更笼统地说是因为它具有细节。通常,细节意味着在短像素范围内颜色发生急剧变化。我相信您可以通过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;
}

注意:您可能需要使用一定距离的“相邻像素”,而不仅仅是立即边缘像素。即使在焦点上,高分辨率图像也可能经常具有渐变。

关于image-processing - 有没有办法以编程方式检测照片是否清晰对焦?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3793519/

10-09 14:19