3

有谁知道任何非常快速的算法来确定图像是照片还是图画?

主要目的是决定最适合 BMP 图像的格式是 PNG 还是 JPEG。我不希望带有线条的文件被 jpeg 模糊,但同时我也不希望存储无损照片。

目前,我只是从 PNG 和高质量 JPEG 中提取出最小的文件大小。这似乎适用于 99%。但是总有一些东西,比如图画的照片和带有很多渐变的图画,这会愚弄它。

4

1 回答 1

2

您可以使用过滤器 1. 使图片变成黑白 2. 提高对比度然后计算像素,看看是否得到更多的白色像素,然后是黑色/灰色像素

也许是这样的:

if( whitePixels.Count >= ( whitePixels.Count + blackAndGreyPixels.Count ) / 100 * 70 ) {
    // is drawing
} else {
    // is photograph
}

您应该测试 70% 标记,这取决于图像大小和您要比较的图像类型。

希望这可以帮助您了解简单的算法如何工作。

如果您需要更多帮助,您应该说出您想使用什么语言(PHP 用于服务器端,或者 .NET 用于客户端),然后我可以给您一个代码示例。

如果您觉得这很有用,请投票/标记为答案。

优雅

于 2012-10-29T10:35:31.870 回答