Upsampling (увеличение) изображений - это задача увеличения размеров изображения с подавлением эффектов интерполяции (размытия) с помощью выделения особенностей в исходном изображении. Такой задачей занимаются специальные программы. В пиксельарте - scalex, sai, eagle,hqx, xbrz. Для изображений не относящихся к пиксельарту также существуют спецпрограммы, например Image Interpolation with Geometric Contour Stencils. Данные программы используют inprocess(«в процессе»)-обработку изображения. В imagemagick также возможен upsampling. Надо только учитывать следующее: postprocess(«после процесса»)-обработка неэффективна, так как использует уже увеличенное изображение, содержащее интерполяционные искажения. Поэтому надо использовать preprocess(«перед процессом»)-обработку.
Мой рецепт upsampling-а:
cat imhris2x2p.sh
#!/bin/bash
if [ -z "$1" ]
then
echo "Usage $0 <image>"
exit 1
else
src="$1"
fi
ext=${src:(-3)}
tname="${src%.$ext}"
tima="$tname.hris2x2p.a.png"
timg="$tname.hris2x2p.c.png"
TSTART=$(date +%s)
identify "$src"
if [ -f "$timg" ]
then
identify "$timg"
else
convert -verbose -resize 160% -sample 50% -resize 125% "$src" "$tima"
convert "$src" "$tima" -fx '(u[0]-u[1])+u[0]' -resize 200% "$timg"
rm -f "$tima"
fi
TEND=$(date +%s)
TDIFF=$(( $TEND - $TSTART ))
echo "It took $TDIFF seconds"