php - 如何区分图形和照片?

标签 php image-processing

我有一个包含图像、照片、网页图形、 Logo 等的目录......这些都是从网络上提取的。有 .jpg、.gif 和 .png 文件。

我想提取真实事物的图像(保留照片并删除图形)。我并不是想获得实际/原始照片,只是现实生活中的图像与计算机制作的图形的对比(我不知道如何更清楚地表达这一点)。几乎所有这些图像都已被操纵,exif 信息将不可用。

较大(甚至非常大)的误差范围是可以接受的。

我已经:

  • 使用 imagecolorstotal() 删除了颜色数较低的图像
  • 删除了高宽比较大的图像,反之亦然(3+ 的比例效果非常好)。
  • 删除了小于特定尺寸的图片(50-75 像素即可)

我正在考虑删除直方图值集中在某些颜色周围的图像,而不是平滑或分布的曲线。我还没有尝试过。

我还能如何改进图像过滤以提取(大部分)真实照片?我更喜欢使用 PHP,但这不是必需的。

更新:事实证明,对于我的应用程序,我已经尝试过的前三件事是一个可靠的 80% 解决方案。可以使用下面的一些答案来完成进一步的过滤。

最佳答案

函数exif_read_data可以提供所使用相机的信息,每个相机的信息差异很大。这不是完美的解决方案,但它应该可以添加到您已经使用的解决方案中。

关于php - 如何区分图形和照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994875/

相关文章:

php - 如何在 php 包含文件中设置变量?

php - 如何使用php在电子商务网站中滚动相关项目

javascript - Jquery - 具有相同类但不同 ID 的多个元素使用相同的函数但结果不同

php - 问题 : X-Content-Type-Options header missing

image-processing - 边缘检测和脊检测有什么区别?

php - Docker PHP - PECL 安装在使用 Heredoc 和 bash 时无法检测系统类型,但可以使用 SHELL 命令处理 shell 设置

python - 通过opencv Python检测图像中是否存在灰色

python - 如何确保使用OpenCV读取和处理所有帧

c - 延迟/保留 opencv 连续帧中的文本

matlab - Matlab:单独的连接组件