Введение
графический редактор GIMP предоставляет достаточно мощную поддержку скриптового выполнения команд. это нужно в основном для пакетной обработки большого количества изображений, либо, к примеру, для циклического подбора оптимальных параметров для улучшения изображения: подбор наилучшей цветности или других свойств для различных объектов и уровней картинки.
также с помощью скриптов можно проделыватъ такую нудную работу, как уменьшение размеров фотографий для последующего отправления по электронной почте, установка подписи на изображения и прочее.
Данный пример достаточно прост. Мне потребовалось улучшить качество книги, которая была засканирована в достаточно плохом качестве, с большим количеством "серости" на страницах.
В книге нужно было подкрутить яркость с контрастностью и уменьшить зернистость картинок.
Расположение скриптов в GIMP
В редакторе GIMP скрипты устанавливаются в директории пользователя, поддиректорий
/.gimp-2.4/scripts
для версии 2.4.
там можно найти уже установленные скрипты, или установить их, перед этим скачав из интернета.
При установке скриптов следует учитывать версию самой программы GIMP. иногда скрипты несовместимы и приходится их переделывать под используемую версию.
Подготовка
Разбор книги на отдельные страницы
Я загрузил книжку и её пришлось для начала "разобрать" на отдельные странички:
Код:
pdfimages paint_rapair_car_body_fin.pdf img
выделяет из pdf-файла картинки. т.к. книженция состоит только из картинок, то и опасаться нечего - они будут извлечены без потерь информации.
img в данном случае - начало названия файлов картинок. они будут все пронумерованы автоматически:
img-000.jpg
img-001.jpg и так далее.
Подбор параметров
после этого нужно открыть файл с изображением и подобрать вручную параметры для подавления шумов. Эту операцию можно также проделать автоматически во временном директории с несколькими файлами, используя вызов скрипта из консоли, добиваясь подбором двух параметров для функции plug-in-sel-gauss. Это параметры радиус и дельта. Если вы подбиаете параметры из самого редактора, то функцию преобразования можно найти под опцией
Filters->Blur->Selective Gaussian Blur
Пакетная обработка изображений
Подавление шумов
скрипт для GIMP выглядит таким образом:
файл batch-noise-reduction.scm
Код:
(define (batch-noise-reduction pattern
radii
delta)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE
filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(plug-in-sel-gauss RUN-NONINTERACTIVE
image drawable radii delta)
(gimp-file-save RUN-NONINTERACTIVE
image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
Этот файл должен находиться в директории для скриптов GIMP
Вызываем из консоли в директории с файлами изображений команду:
Код:
gimp -i -b '(batch-noise-reduction "*.jpg" 3.0 176)' -b '(gimp-quit 0)'
Эта строчка вызывает скрипт batch-noise-reduction с параметрами редукции шумов: диаметр 3.0 пикселя и дельтой 176. После подтвержения команды скрипт обрабатывает автоматически все *.jpg файлы.
Изменения контраста и насыщенности
После "шумодава" необходимо настроить контраст и насыщенность:
файл brightness-contrast.scm
Код:
(define (brightness-contrast pattern
brigthness contrast)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE
filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(gimp-brightness-contrast drawable brigthness contrast)
(gimp-file-save RUN-NONINTERACTIVE
image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
Вызываем также из консоли пакетную обработку для всех *.jpg файлов:
Код:
gimp -i -b '(brightness-contrast "*.jpg" -19 33)' -b '(gimp-quit 0)'
Изменение резкости
С повышением уровня контрастности и понижением яркоcти. Эти параметры можно также оптимально подобрать в самом редакторе GIMP.
файл batch-sharpen.scm
Код:
(define (batch-sharpen pattern
percent)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE
filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(plug-in-sharpen RUN-NONINTERACTIVE
image drawable percent)
(gimp-file-save RUN-NONINTERACTIVE
image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
после изменения уровня остроты картинки можно проверить их качество и собрать в один PDF файл, при помощи команды convert:
Код:
convert *.jpg new_book.pdf
Заключение
в процессе шагов конвертирования и улучшения качества картинок можно несколько улучшить и ускорить время обработки, заменив используемые скрипты на один, универсальный.
В общем, возможны варианты.
Успехов!
автор исходной статьи: Карбофос
Исходная статья взята с сайта: http://www.ruforum.de/thread.php?postid=196077
Статья была доработана (разбита на разделы для улучшения читаемости)