【问题标题】:Check image visible quality [PHP]检查图像可见质量 [PHP]
【发布时间】:2015-04-30 07:17:35
【问题描述】:

我想进行图像质量检查。或许可以计算出某种质量指标。

例如,假设用户 A 上传了类似 http://www.hyperconectados.com/wp-content/uploads/2014/03/Selfie.jpg 的内容

和用户 B 上传类似http://www.privatewifi.com/wp-content/uploads/2014/02/selfie.jpg

很明显,B 照片很专业,质量很好。还有一件事,使用图像大小和重量(?)是不好的,因为 B 图像可以调整大小、photoshoped 或其他东西(丢失一些图像数据)。

有没有办法检测到这种差异? :) 有什么想法吗?

【问题讨论】:

    标签: php image imagemagick gd


    【解决方案1】:

    我仍在考虑进一步的指标,但目前......

    IPTC 个人资料和/或版权

    我想说,大多数专业摄影师不会在没有 IPTC 个人资料和版权通知的情况下将图片带出家门。

    你可以像这样使用 ImageMagick 找到它:

    identify -verbose image.jpg | grep -i profile
    

    你的第二张图片出现了

    Profile-8bim: 104 bytes
    Profile-iptc: 92 bytes
    

    您实际上可以像这样阅读个人资料:

    convert b.jpg 8BIMTEXT:-
    
    8BIM#1028="IPTC"
    2#103#Original Transmission Reference="53616c7465645f5fb085443d8e4c5898afc929fa83c3cc27d7bf6da5d5f63efdf47888b1a19ac93e"
    2#0="�"
    

    convert b.jpg IPTCTEXT:-
    
    2#103#Original Transmission Reference="53616c7465645f5fb085443d8e4c5898afc929fa83c3cc27d7bf6da5d5f63efdf47888b1a19ac93e"
    2#0="�"
    

    分辨率 (dpi)

    另一个判别式可能是分辨率。大多数手机、业余爱好者和基于网络的图像的分辨率为 72dpi 或 96dpi。大多数专业摄影师倾向于使用 300dpi 进行高质量打印,所以我可能会选择 150dpi 左右的阈值。你可以得到这样的分辨率:

    identify -verbose image.jpg | grep -i resolution
    

    或者更快更简洁

    identify -format %x image.jpg
    300
    

    我注意到你的第一张图片有 72dpi,第二张有 300dpi。

    改进范围

    我正在考虑的另一个想法是,如果您尝试以数字方式增强图像,然后查看增强后的图像与原始图像之间的差异并尝试从中推断出一些东西,会发生什么。据推测,经过专业编辑的图像不会因为它应该已经“好”而容易受到增强。因此,假设我们选择 ImageMagick 的 -enhance 选项,并增强您的两个图像,然后查看原始图像和增强图像之间的差异。我将切换到无损PNG 格式以避免JPEG 量化效应。

    # Make PNG
    convert a.jpg a.png
    
    # Enhance "a.png" and save as "ae.png"
    convert a.png -enhance ae.png
    
    # Compare "a.png" with "ae.png"
    compare -metric rmse a.png ae.png -format "%[distortion]" resa.png
    360.479 (0.00550055)0.00550055
    

    现在对第二个专业图像执行相同的过程:

    # Make a comparably sized PNG
    convert b.jpg -resize 1200x1200 b.png
    
    convert b.png -enhance be.png
    compare -metric rmse b.png be.png -format "%[distortion]" resb.png
    421.08 (0.00642527)0.00642527
    

    我还在想这个……

    【讨论】:

      【解决方案2】:

      Imagemagick 读取质量

      $ identify -verbose tornado_ok.jpg | grep Quality
      

      更多信息请关注identify

      从这个question得到信息

      【讨论】:

      • 我认为 OP 指的是摄影的质量(即是否清晰、曝光良好、没有剪裁高光、遮挡阴影或后处理),而不是照片的质量您的答案所识别的JPEG压缩。如果你运行convert http://www.privatewifi.com/wp-content/uploads/2014/02/selfie.jpg -quality 100 a.jpg,然后通过你的方法检查a.jpg的质量,你会看到它是100%,但这并没有让照片变得更好......
      • 好吧,也许我弄错了。等待任何反馈。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 2011-03-11
      • 2014-04-03
      • 2020-06-28
      • 2013-07-18
      • 2013-04-17
      相关资源
      最近更新 更多