Что такое интерполяция
Интерполяция — это расчёт цвета там, где в исходном снимке точки не было: при уменьшении, увеличении и повороте на угол, не кратный прямому. Новых сведений о сцене она не добавляет, а только перераспределяет имеющиеся. Разница между аккуратным результатом и кашей — в том, усредняются отброшенные точки или просто выбрасываются. Уменьшение у нас идёт ступенями с делением стороны пополам именно поэтому.
Коротко о цифрах
- Что делает
- вычисляет цвет точек, которых в исходнике не было
- Путь с 4000 до 800
- через 2000 и 1000; последний шаг точно в цель
- Правило шага
- сторона делится пополам, пока половина больше цели
- Обрезка
- интерполяции не выполняет — прямоугольник копируется как есть
- Увеличение
- не поддерживается ни одним инструментом сайта
Почему одношаговое уменьшение даёт кашу
Уменьшение с четырёх тысяч точек до восьмисот за один проход означает, что в результат попадает примерно каждая пятая точка, а четыре из пяти отбрасываются. Это выборка, а не усреднение: линия толщиной в одну точку либо попадёт в выборку целиком, либо исчезнет полностью. На мелком тексте, кирпичной кладке и ткани в полоску это видно сразу — рисунок распадается на рябь, а прямые края начинают ползти лесенкой.
Ступенчатое уменьшение работает иначе: 4000, затем 2000, затем 1000 и только потом 800. На каждом шаге сторона делится примерно пополам, и каждая новая точка получается усреднением четырёх соседних, а не выбором одной из них. Отброшенное не исчезает бесследно, а размазывается по соседям, и вместо ряби выходит плавное уменьшение. Последний шаг всегда попадает точно в запрошенный размер.
Где интерполяция включается, а где нет
- Включается при ограничении длинной стороны и при запасных проходах сжатия до размера с коэффициентами 0,7 и 0,5.
- Не включается при обрезке: вырезанный прямоугольник переносится точка в точку, и резкость не меняется.
- Не включается при повороте на 90, 180 и 270 градусов — там точки просто меняются местами.
- Не включается при переводе из формата в формат, если размер не трогали: меняется только упаковка данных.
Практические следствия
- Уменьшать один раз сразу до нужного размера лучше, чем несколько раз подряд: каждый лишний пересчёт смягчает картинку.
- Увеличение не делается вовсе — оно не восстанавливает детали, зато исправно раздувает файл.
- Мелкий текст на скане переживает уменьшение хуже всего: если документ должен читаться, уменьшайте его в последнюю очередь.
- Сглаживание при отрисовке включено в режим высокого качества, поэтому ступени не дают резких границ.
Частые вопросы
Почему после уменьшения фотография стала мыльной?
Скорее всего, она уменьшалась за один проход с большим коэффициентом. При таком шаге большая часть точек отбрасывается вместо усреднения, и мелкий рисунок распадается на рябь.
Можно ли увеличить фото без потери качества?
Нет. Любое увеличение раскладывает имеющиеся точки пореже и досчитывает промежуточные по соседям; деталей, которых не было в кадре, ни один алгоритм не восстановит.
Влияет ли интерполяция на вес файла?
Косвенно. Сама она вес не меняет, но смягчённая картинка кодируется лучше: резких переходов в ней меньше, и кодировщик тратит на неё заметно меньше байтов.
Почему поворот на девяносто градусов ничего не портит?
При прямом угле каждая точка переезжает в новое место целиком, без расчёта промежуточных значений. Портит только поворот на произвольный угол, где сетка точек не совпадает с исходной.