Pull to refresh

GIMP: устранение дефекта масштабирования

Level of difficultyEasy
Reading time2 min
Views1K

В "GIMP: изменение размера изображения с соблюдением правил RIS" был рассмотрен рецепт масштабирования изображений с устранением "дефекта" (размытия смешением цветов). Но в основном дело приходится иметь с изображениями, полученными из сети. То есть изображения получаем "как есть". Они могут быть многократно масштабированы каким то образом и без соблюдения каких то правил.

Можно ли использовать ту же концепцию, что заложена в RIS, для постфильтрации изображения?

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

А как "угадать" то характеристики?

Угадывать метод интерполяции особой нужды нет. Для изображений в сети вероятность кубической интерполяции близка к единице.

Для угадывания масштабного фактора могла бы помочь утилита resdet. Но её сборок под Windows я не видел, а альтернатив не знаю. Возможно существуют онлайн сервисы для определения/оценки исходных размеров масштабированных изображений.

Реализация?

Чтобы не производить муторные однотипные операции к скрипту "resize-ris.scm" был добавлен скрипт "ris-undefect.scm" в последнем релизе "gimp-plugin-resize-ris 0.20250518". После копирования данного файла в папку со скриптами GIMP, в меню "Изображения" -> "Преобразования" рядом с пунктом "Resize RIS" появится пункт "RIS undefect".

Для тестирования будем традиционно использовать изображение "Лена".

Изображение "Лена".
Изображение "Лена".

В GIMP используя инструмент "Изображение" -> "Размер изображения..." увеличим данное изображение в 8 раз (800%), используя "Кубическую" интерполяцию.

Центральный участок увеличенного изображения.
Центральный участок увеличенного изображения.

На данном изображении явным образом видно размытие (тот самый дефект, который и вызывает недовольство пользователей ко всем видам цифрового масштабирования изображений).

Каким то образом (скорее всего интуицией) удалось "угадать" (допустим), что данное изображение является результатом 8-ми кратного увеличения. Тогда обратный фактор будет:

factor = 1.0 / 8 = 0.125

Применим новый скрипт с данными параметрами к изображению.

Диалог скрипта "RIS undefect".
Диалог скрипта "RIS undefect".

Этот скрипт в отдельном слое проведёт масштабирование на указанную величину, возврат к размеру исходного слоя и обращение "дефекта".

Результат "RIS undefect"
Результат "RIS undefect"

Как минимум частично концепция сработала. Изображение стало не просто менее размытым, а размытие перестало бить по глазам. Вполне рабочий вариант. Остался только вопрос, как «угадывать» характеристики изображения. Пока ответ один: именно «угадывать» методом перебора множества различных значений масштабного фактора.

Сравнение?

Как и скрипт «Resize RIS», данный скрипт формирует новый слой. Сравнение производится визуально отключением/включением видимости верхнего слоя.

Tags:
Hubs:
+2
Comments8

Articles