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

от автора

В «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», данный скрипт формирует новый слой. Сравнение производится визуально отключением/включением видимости верхнего слоя.


ссылка на оригинал статьи https://habr.com/ru/articles/910412/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *