有谁知道任何非常快速的算法来确定图像是照片还是图画?
主要目的是决定最适合 BMP 图像的格式是 PNG 还是 JPEG。我不希望带有线条的文件被 jpeg 模糊,但同时我也不希望存储无损照片。
目前,我只是从 PNG 和高质量 JPEG 中提取出最小的文件大小。这似乎适用于 99%。但是总有一些东西,比如图画的照片和带有很多渐变的图画,这会愚弄它。
您可以使用过滤器 1. 使图片变成黑白 2. 提高对比度然后计算像素,看看是否得到更多的白色像素,然后是黑色/灰色像素
也许是这样的:
if( whitePixels.Count >= ( whitePixels.Count + blackAndGreyPixels.Count ) / 100 * 70 ) {
// is drawing
} else {
// is photograph
}
您应该测试 70% 标记,这取决于图像大小和您要比较的图像类型。
希望这可以帮助您了解简单的算法如何工作。
如果您需要更多帮助,您应该说出您想使用什么语言(PHP 用于服务器端,或者 .NET 用于客户端),然后我可以给您一个代码示例。
如果您觉得这很有用,请投票/标记为答案。
优雅