我开始着手我认为可能有点像实验......
提出(或发现,因为它可能已经存在)一种方法来确定给定的图像文件,无论格式如何,都是照片或图形。
" Photo" 意味着像风景,人物等.V.S。 " Graphic" 表示图标,插图,图表,UI屏幕截图等。
我在过去一周提出了一个很好的PHP / ImageMagick脚本,它从图像文件中提取统计数据,并很好地将修正应用于白平衡,色调,振动,清晰度,阴影/高光。
现在我想更进一步:自动检测照片内容,然后应用上述处理。
到目前为止,一种有效一致的方法是确定图像是否具有EXIF数据,但这仅适用于JPEG。当然,这并非万无一失。
是否有任何已知的方法可通过ImageMagick,GD或其他方式检测照片" vs a" graphic"?
除了ImageMagick& amp;之外,我还有能力安装/运行应用程序。如果需要,我们的网络服务器上的GD。
谢谢!
答案 0 :(得分:3)
照片中往往有不同颜色的 LOT (数千,数万和数十万)。其他图形倾向于使用有限数量的独特颜色(几十到几百)。
因此,ImageMagick命令可能能够帮助对大量文件进行分类:
identify -format '%k\n' file
identify -format '%f : %k\n' file1 file2 file3 file4
特殊%k
IM identify
百分比转义宏会导致计算并返回identify
ed文件中唯一颜色的数量。以下是我自己的本地文件的一些示例:
identify -format '%k' logo.png
257
identify -format '%k' testimage.png
20913
在本地目录中对一组15张4032x3024
大小的照片运行它会产生这样的结果(每张照片花费超过2秒来计算颜色):
time identify -format '%f : %k\n' *.JPG
P4061782.JPG : 285127
P4061783.JPG : 304247
P4061784.JPG : 230241
P4061785.JPG : 277545
P4061786.JPG : 300632
P4061787.JPG : 325916
P4061788.JPG : 301766
P4061789.JPG : 300821
P4061790.JPG : 265080
P4061791.JPG : 348247
P4101941.JPG : 323714
P4101942.JPG : 359688
P4101943.JPG : 338563
P4101944.JPG : 308578
P4101945.JPG : 291853
real 0m34.257s
user 0m33.301s
sys 0m0.678s
警告:使用矢量绘图应用程序(如inkscape)生成的复杂渐变也可能会产生许多独特的颜色......