我的本地驱动器上有许多从不同来源获得的产品图像,其中一些有点混乱。我说的是分辨率很大的图像,但很明显,这个分辨率是通过从一个非常小的源调整图像大小来实现的。
是否有软件或其他东西可以找到这些通常的高分辨率但质量低的图像?感谢您的任何想法。
我的本地驱动器上有许多从不同来源获得的产品图像,其中一些有点混乱。我说的是分辨率很大的图像,但很明显,这个分辨率是通过从一个非常小的源调整图像大小来实现的。
是否有软件或其他东西可以找到这些通常的高分辨率但质量低的图像?感谢您的任何想法。
我有一些想法,我将展示我对ImageMagick的理解,它安装在大多数 Linux 发行版上,并且可(免费)用于 macOS 和 Windows。
只是为了澄清我在说什么,当图像从较小的图像放大(up-rezzed)时,图像中缺乏高频信息(细节)。这是一个例子:
技术是这样的。拍摄一张图像,复制它,将其缩小到原始尺寸的一定百分比,然后将其放大并测量它与原始尺寸的差异。这是一个例子:
magick start.jpg -set option:geom "%G" \( +clone -resize 50% -resize "%[geom]"\! \) -metric MSE -compare -format "%[distortion]" info:
0.00220709
如果我现在循环执行此操作,我可以获得 MSE(“均方误差”),用于将图像大小调整为 10% 并向上调整、向下调整为 20% 并向上调整、向下调整为 30% 并像这样备份:
for ((size=10;size<100;size+=10)); do
distortion=$(magick start.jpg -set option:geom "%G" \( +clone -resize "${size}%" -resize "%[geom]"\! \) -metric MSE -compare -format "%[distortion]" info: 2>&1)
echo $size $distortion
done
样本输出
10 0.00641669
20 0.00461728
30 0.00351362
40 0.0027639
50 0.00220709
60 0.00173019
70 0.00130171
80 0.000935031
90 0.000637741
如果您再次运行它,但将输出重定向到一个名为 的文件"data"
,您可以使用以下命令绘制它gnuplot
:
gnuplot --persist -e "set yrange [0:0.01];set title '10: MSE vs Resize Percentage';plot 'data'"
现在,我们来到了真正的重点。如果我为一个从其原始大小的 75% 上调的文件运行绘图,然后再为一个从其原始大小的 50% 上调的文件运行绘图,再为 25% 和 15% 运行绘图,我可以把它们放在一个像这样的动画中:
希望您可以看到紫色点在对应于图像被放大的原始大小百分比的点处立即离开 x 轴(MSE 误差较低的位置)。
因此,我建议您查看图像并找到与可能存在的上调程度相对应的错误阈值,然后针对该阈值测试任何单个图像的错误。
如果您在 Windows 上,这将是相同的,上面的所有代码仅用于生成绘图和数字以制作动画。你只需要用一行来获得 MSE:
magick YOURIMAGE -set option:geom "%G" \( +clone -resize "${size}%" -resize "%[geom]"\! \) -metric MSE -compare -format "%[distortion]" info: