我有一个包含图像、照片、网页图形、 Logo 等的目录......这些都是从网络上提取的。有 .jpg、.gif 和 .png 文件。
我想提取真实事物的图像(保留照片并删除图形)。我并不是想获得实际/原始照片,只是现实生活中的图像与计算机制作的图形的对比(我不知道如何更清楚地表达这一点)。几乎所有这些图像都已被操纵,exif 信息将不可用。
较大(甚至非常大)的误差范围是可以接受的。
我已经:
- 使用
imagecolorstotal() 删除了颜色数较低的图像
- 删除了高宽比较大的图像,反之亦然(3+ 的比例效果非常好)。
- 删除了小于特定尺寸的图片(50-75 像素即可)
我正在考虑删除直方图值集中在某些颜色周围的图像,而不是平滑或分布的曲线。我还没有尝试过。
我还能如何改进图像过滤以提取(大部分)真实照片?我更喜欢使用 PHP,但这不是必需的。
更新:事实证明,对于我的应用程序,我已经尝试过的前三件事是一个可靠的 80% 解决方案。可以使用下面的一些答案来完成进一步的过滤。
最佳答案
函数exif_read_data可以提供所使用相机的信息,每个相机的信息差异很大。这不是完美的解决方案,但它应该可以添加到您已经使用的解决方案中。
关于php - 如何区分图形和照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994875/