суббота, 21 ноября 2009 г.

Скрипт для преобразования фотографий документов в монохромные

Так как меня душит жаба отдавать по 2 рубля за лист, копируя документы на ксероксе, для копирования текстов, нужных по учёбе, я использую фотоаппарат и лазерный принтер. Чаще всего получается, что лист освещён неравномерно, поэтому хорошо распечатать полученную фотографию бывает тяжело. Поэтому я написал скрипт, который качественно преобразует фотографии в монохромные. Скрипт для манипуляций с изображениями использует Image Magic и работает по простому алгоритму: на исходное изображение накладывается его размытая копия в режиме деления, и к результату применяется фильтр "Порог".


#!/usr/bin/env bash

threshold=85%
resize=150%

help="
Использование: `basename $0` [КЛЮЧ ЗНАЧЕНИЕ]... ИСХОДНЫЙ_КАТАЛОГ КОНЕЧНЫЙ_КАТАЛОГ

-r конечное разрешение в % от исходного (чем больше, тем лучше качество и больше размер файла), по умолчанию $resize
-t порог в % (чем больше, тем больше чёрного), по умолчанию $threshold
-h эта справка

Пример:
dphoto2mono -r 200% -t 90% ~/src ~/dst
преобразовать фотографии из каталога ~/src в монохромные с порогом 90%, увеличив разрешение в 2 раза и сохранив результат в каталог ~/dst.
"

s=0
c=0

if [ $1 = -h ]
then echo "$help"; exit 0
fi

while [ $3 ]
do
case $1 in
-r) resize=$2;;
-t) threshold=$2;;
esac
shift 2
done


for i in $1/*
do
if [ -n "`echo $i | egrep -i '.*\.(jpg|jpeg|png|tif|tiff|gif)$'`" ]
then s=`expr $s + 1`
fi
done

echo В исходном каталоге $1 найдено $s фотографий. Начинается обработка. Процесс может занять дофига времени.

for i in $1/*
do
if [ -n "`echo $i | egrep -i '.*\.(jpg|jpeg|png|tif|tiff|gif)$'`" ]
then
convert "$i" -resize 25% -gaussian 20x50 -resize 400% - | composite -compose Divide "$i" - - | convert - -resize $resize -threshold $threshold -compress Group4 "$2/`basename "$i" | egrep -io '.*\.'`tiff"
c=`expr $c + 1`
echo Обработано $c из $s фотографий \(`expr $c \* 100 / $s`%\)
fi
done

echo Фотографии обработанны.


Исходный фрагмент:


С применением фильтра "Порог":


С обработкой скриптом:

1 комментарий:

Анонимный комментирует...

Ну наконец нашёл нужный скрипт а то замучался по отдельности в gimpe редактировать.