1

Как я могу преобразовать изображение, используя пользовательскую математическую матрицу 2x2? Чтобы было ясно, математика не является проблемой; У меня уже есть матрица, которую я хочу. Я просто хочу знать, как я могу использовать программное обеспечение для применения преобразования к изображению.

Я искал в Google плагины GIMP (поскольку я знаю, что он использует матрицу 3x3 для перспективы, хотя он не позволит мне ввести матрицу 3x3). Был один под названием "Mathmap", однако он не будет работать для меня, потому что он поддерживает более старую версию GIMP. Я также искал программы, способные сделать это, но ни одна не пришла.

Преобразование - это геометрическое преобразование, а не преобразование фильтра.

Если кто-нибудь может мне помочь, я очень ценю это.

3 ответа3

1

Существует вызов процедуры GIMP, предназначенный для использования из скриптов и плагинов, который можно вызывать непосредственно из интерактивных подсказок.

Вот пример сеанса Python, который извлекает ссылку на последнее изображение, открытое в GIMP, и применяет к нему преобразование [2, 0, 0, 0, 2, 0, 0, 0, 1].

Вы можете получить доступ к консоли Python в GIMP в filters->python-fu->console

GIMP 2.8.14 Python Console
Python 2.7.5 (default, Jun 25 2014, 10:19:55) 
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)]
>>> img = gimp.image_list()[0]
>>> img
<gimp.Image '[Untitled]'>
>>> matrix = [2,0,0, 0,2,0, 0,0,1]
>>> more_parms = [True, TRANSFORM_RESIZE_ADJUST]
>>> drawable = pdb.gimp_drawable_transform_matrix_default(img.layers[0], *(matrix + more_parms))

Я мог бы найти процедуру `gimp_drawable_transform_matrix_default, щелкнув по кнопке" Обзор "в нижней части диалога с сеансом Python, выполнив поиск" матрицы ", а когда я нашел подходящий вызов, нажав" Применить ": вставьте функцию вызов сеанса Python с фиктивными параметрами, который я хотел заменить.

Затем я воспользовался "синтаксическим сахаром" Python для передачи элементов последовательности в виде отдельных параметров в вызов функции - для этого и используется «*». Чтобы это работало, мне пришлось добавить 2 дополнительных параметра (интерполяция и режим обрезки) к матричным коэффициентам.

Это фактически тот же вызов, что и

pdb.gimp_drawable_transform_matrix_default(img.layers[0], matrix[0], matrix[1], matrix[2], ...., matrix[9], True, TRANSFORM_SIZE_ADJUST) будет.

0

Если вы не возражаете против рекламы, есть хорошее приложение, которое я использую для всех видов задач обработки изображений: Batch Image Resizer (хотя это гораздо больше, чем resizer)

Он имеет специальное действие именно для задачи, которую вы описали:

Вы можете запустить его из командной строки, в виде графического интерфейса пользователя, по расписанию или постоянно в фоновом режиме, поэтому он достаточно гибкий.

Похоже, по какой-то причине они не предлагают скачивание на своей главной странице, но мне удалось спасти ссылку на бесплатную версию из другого места на их сайте, надеюсь, это будет работать: BIR Download

0

Для чего это стоит, я использую GEGL v2.9 с GIMP, установленным и обновленным через Ubuntu

sudo add-apt-repository ppa:otto-kesselgulasch/gimp-edge
sudo apt-get update
sudo apt-get install gimp gimp-resynthesizer

Интересно, если нет:
Menu: Filters > Generic > Convolution Matrix
... может быть, что вы после?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .