Поиск больших изображений с низким разрешением
У меня есть много изображений продуктов на моем локальном диске, которые я получил из разных источников, и некоторые из них немного запутались. Я говорю об изображениях с большим разрешением, но очевидно, что это разрешение было достигнуто путем изменения размера изображения из очень маленького источника.
Есть ли программное обеспечение или что-то, что могло бы найти эти обычные изображения высокого разрешения, но низкого качества? Спасибо за любые идеи.
1 ответ
У меня есть несколько идей, и я покажу, чего я добиваюсь с ImageMagick, который установлен на большинстве дистрибутивов Linux и доступен (бесплатно) для macOS и Windows.
Просто чтобы прояснить то, о чем я говорю, это отсутствие высокочастотной информации (деталей) на изображениях, когда они увеличиваются (увеличиваются в размерах) от меньших изображений. Вот пример:
Техника идет так. Возьмите изображение, скопируйте его, уменьшите его в процентном соотношении к оригинальному размеру, а затем увеличьте его и измерьте, насколько оно отличается от оригинала. Вот пример:
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: