是否有一种方法可以从编程中检测照片是否处于焦点为重点?
-
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;
}
注意:您可能需要使用一定距离的“相邻像素”,而不仅仅是立即的边缘像素。即使是焦点,高RES图像通常也可能具有梯度。
其他提示
研究真实的边缘检测方法 - 使用Laplacian过滤器,Guassian过滤器,日志(Gaussian的Laplacian)等。这些方法比Patrickv的简单(尽管优雅)方法更适合您的特定案例。
不隶属于 StackOverflow