检查图像可见质量 [PHP]
Check image visible quality [PHP]
我想做画质检查。或许可以计算出该质量的一些指标。
例如,假设用户 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 图像可以调整大小、photoshop 或其他(丢失一些图像数据)。
有没有办法检测出这种差异? :) 有什么想法吗?
Imagemagick 读取质量
$ identify -verbose tornado_ok.jpg | grep Quality
有关identify
的更多信息
从这里得到信息question
我还在考虑进一步的指标,但目前...
IPTC 简介and/or 版权所有
我想说,如果没有 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。
增强空间
我正在考虑的另一个想法是,如果您尝试以数字方式增强图像,然后查看增强图像与原始图像之间的差异并尝试从中推断出一些东西,会发生什么情况。据推测,经过专业编辑的图像在应该已经 "good" 的基础上不会那么容易受到增强的影响。因此,假设我们选择 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
我还在考虑这个...
我想做画质检查。或许可以计算出该质量的一些指标。
例如,假设用户 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 图像可以调整大小、photoshop 或其他(丢失一些图像数据)。
有没有办法检测出这种差异? :) 有什么想法吗?
Imagemagick 读取质量
$ identify -verbose tornado_ok.jpg | grep Quality
有关identify
的更多信息从这里得到信息question
我还在考虑进一步的指标,但目前...
IPTC 简介and/or 版权所有
我想说,如果没有 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。
增强空间
我正在考虑的另一个想法是,如果您尝试以数字方式增强图像,然后查看增强图像与原始图像之间的差异并尝试从中推断出一些东西,会发生什么情况。据推测,经过专业编辑的图像在应该已经 "good" 的基础上不会那么容易受到增强的影响。因此,假设我们选择 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
我还在考虑这个...