какое качество лучше бикубическое или билинейное

Интерполяция (Resample Image) в Фотошопе

В этом уроке Фотошопа мы рассмотрим интерполяцию в Фотошопе.

какое качество лучше бикубическое или билинейное

Сложность: Низкая

Дата: 17.10.2011

Обновлено: 24.08.2017

какое качество лучше бикубическое или билинейное

Для увеличения или уменьшения размера изображения Фотошоп использует метод Интерполяции. Так, например, при увеличении изображения, Фотошоп создает дополнительные пиксели на основе значений соседних. Грубо говоря, если один пиксель черный, а другой белый, то Фотошоп вычислит среднее значение и создаст новый пиксель серого цвета.
Некоторые виды интерполяции быстрые и некачественные, другие более сложные, но с помощью них достигаются хорошие результаты.

какое качество лучше бикубическое или билинейное

1. «Nearest Neighbor» (По соседним)

Этот способ редко используется для работы с фото, так как результат оставляет желать лучшего.

Здесь пиксели грубо копируются, переходы цветов получаются неровные.

2. «Bilinear» (Билинейная)

Результат от применения этого способа будет лучше.

Здесь значение новых пикселей вычисляется путем нахождения средней величины, а не просто копируется. Качество получается среднее.

3. «Bicubic» (Бикубическая)

Этот способ интерполяции работает с большим количеством смежных пикселей, производит серьезные вычисления значений этих элементов и создает новые пиксели, которые должны быть на этом месте. При небольших увеличениях фото этот способ вполне подойдет.

Версии Photoshop CS и выше предлагают два новых алгоритма интерполяции: «Bicubic Smoother» (Бикубическая глаже) и «Bicubic Sharper» (Бикубическая четче). Они видоизменяют вычисления стандартного «Бикубического» способа в зависимости от эффекта, который вы хотите получить.

4. «Bicubic Smoother» (Бикубическая глаже)

Прекрасно сделает свою работу, если вы хотите увеличить фото.

5. «Bicubic Sharper» (Бикубическая четче)

Подойдет в том случае, если вы уменьшаете фото.

Пример использования «Bicubic Sharper» (Бикубическая четче).

Есть фото, размеры 448 х 336 px разрешение 96 dpi.

какое качество лучше бикубическое или билинейное

Нам нужно его увеличить.

какое качество лучше бикубическое или билинейное

Размеры документа сразу установятся на значения 100%.

Будем постепенно увеличивать изображение.

Измените значение 100% на 110%.

Когда вы измените ширину, высота автоматически подгонится сама.

какое качество лучше бикубическое или билинейное

Нажмите ОК. Посмотрите на изображение.

Теперь его размеры уже 493 х 370 px.

Повторяя данные действия можно добиться хороших результатов.

какое качество лучше бикубическое или билинейное какое качество лучше бикубическое или билинейное

Конечно, идеальной четкости нам добиться будет достаточно сложно, так как фото было маленькое и низкого разрешения.

Но посмотрите, какие изменения произошли в пикселях.

какое качество лучше бикубическое или билинейное

Насколько большими мы можем делать фотографии благодаря методу интерполяции?

Все зависит от качества фотографии, как оно было сделано и для каких целей вы его увеличиваете. Лучший ответ: возьмите и проверьте сами.

Источник

ИНТЕРПОЛЯЦИЯ ЦИФРОВОГО ИЗОБРАЖЕНИЯ

Интерполяция изображений происходит во всех цифровых фотографиях на определённом этапе, будь то дематризация или масштабирование. Она происходит всякий раз, когда вы изменяете размер или развёртку изображения из одной сетки пикселей в другую. Изменение размера изображения необходимо,когда вам нужно увеличить или уменьшить число пикселей, тогда как изменение положения может происходить в самых различных случаях: исправление искажений объектива, смена перспективы или поворот изображения.

какое качество лучше бикубическое или билинейное

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Даже если изменению размера или развёртки подвергается одно и то же изображение, результаты могут значительно отличаться в зависимости от алгоритма интерполяции. Поскольку любая интерполяция является всего лишь приближением, изображение будет несколько терять в качестве всякий раз, когда подвергается интерполяции. Данная глава призвана обеспечить лучшее понимание того, что оказывает влияние на результат, — и тем самым помочь вам минимизировать любые потери качества изображения, вызванные интерполяцией.

Концепция

Суть интерполяции заключается в использовании имеющихся данных для получения ожидаемых значений в неизвестных точках. Например, если вам захотелось знать, какова была температура в полдень, но измеряли её в 11 и в час, можно предположить её значение, применив линейную интерполяцию:

какое качество лучше бикубическое или билинейное

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

какое качество лучше бикубическое или билинейное

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

Пример изменения размера изображения

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

какое качество лучше бикубическое или билинейное

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

оригинал до после без интерполяции

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

Пример вращения изображения

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

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

оригинал поворот на 45 поворот на 90 (без потерь) 2 поворота на 45° 6 поворотов на 15°

Поворот на 90° не вносит потерь, поскольку ни один пиксель не требуется поместить на границу между двумя (и как следствие разделить). Заметьте, как большая часть деталей теряется при первом же повороте, и как качество продолжает падать при последующих. Это означает, что следует избегать вращений, насколько возможно; если неровно выставленный кадр требует поворота, не следует вращать его более одного раза.

Вышеприведенные результаты используют так называемый «бикубический» алгоритм и показывают существенное ухудшение качества. Обратите внимание, как снижается общий контраст в связи со снижением интенсивности цвета, как вокруг светло-синего возникают тёмные гало. Результаты могут быть значительно лучше в зависимости от алгоритма интерполяции и изображаемого предмета.

Типы алгоритмов интерполяции

Общепринятые алгоритмы интерполяции можно поделить на две категории: адаптивные и неадаптивные. Адаптивные методы изменяются в зависимости от предмета интерполяции (резкие границы, гладкая текстура), тогда как неадаптивные методы обрабатывают все пиксели одинаково.

Неадаптивные алгоритмы включают: метод ближайшего соседа, билинейный, бикубический, сплайны, функция кардинального синуса (sinc), метод Ла́нцоша и другие. В зависимости от сложности, они используют от 0 до 256 (или более) смежных пикселей для интерполяции. Чем более смежных пикселей они включают, тем более точными могут оказаться, но это достигается за счёт значительного прироста времени обработки. Эти алгоритмы могут использоваться как для развёртки, так и для масштабирования изображения.

какое качество лучше бикубическое или билинейное какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Адаптивные алгоритмы включают в себя многие коммерческие алгоритмы в лицензированных программах, таких как Qimage, PhotoZoom Pro, Genuine Fractals и другие. Многие из них применяют различные версии своих алгоритмов (на основе попиксельного анализа), когда обнаруживают наличие границы — с целью минимизировать неприглядные дефекты интерполяции в местах, где они наиболее видны. Эти алгоритмы в первую очередь разработаны для максимизации бездефектной детальности увеличенных изображений, так что некоторые из них для вращения или изменения перспективы изображения непригодны.

Метод ближайшего соседа

Это наиболее базовый из всех алгоритмов интерполяции, который требует наименьшего времени обработки, поскольку учитывает только один пиксель — ближайший к точке интерполяции. В результате каждый пиксель просто становится больше.

Билинейная интерполяция

какое качество лучше бикубическое или билинейноеБилинейная интерполяция рассматривает квадрат 2×2 известных пикселя, окружающих неизвестный. В качестве интерполированного значения используется взвешенное усреднение этих четырёх пикселей. В результате изображения выглядят значительно более гладко, чем результат работы метода ближайшего соседа.

Диаграмма слева относится к случаю, когда все известные пиксели равны, так что интерполированное значение просто является их суммой, поделенной на 4.

Бикубическая интерполяция

какое качество лучше бикубическое или билинейноеБикубическая интерполяция идёт на один шаг дальше билинейной, рассматривая массив из 4×4 окружающих пикселей — всего 16. Поскольку они находятся на разных расстояниях от неизвестногопикселя, ближайшие пиксели получают при расчёте больший вес. Бикубическая интерполяция производит значительно более резкие изображения, чем предыдущие два метода, и возможно, является оптимальной по соотношению времени обработки и качества на выходе. По этой причине она стала стандартной для многих программ редактирования изображений (включая Adobe Photoshop), драйверов принтеров и встроенной интерполяции камер.

Интерполяция высшего порядка: сплайны и sinc

Есть много других интерполяторов, которые принимают во внимание больше окружающих пикселей и таким образом требуют более интенсивных вычислений. Эти алгоритмы включают в себя сплайны и кардинальный синус (sinc), и они сохраняют большинство информации об изображении после интерполяции. Как следствие, они являются исключительно полезными, когда изображение требует нескольких поворотов или изменений перспективы за отдельные шаги. Однако, для однократных увеличений или поворотов такие алгоритмы высшего порядка дают незначительное визуальное улучшение при существенном увеличении времени обработки. Более того, в некоторых случаях алгоритм кардинального синуса на гладком участке отрабатывает хуже, чем бикубическая интерполяция.

Наблюдаемые дефекты интерполяции

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

какое качество лучше бикубическое или билинейное какое качество лучше бикубическое или билинейное какое качество лучше бикубическое или билинейное какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

оригинал ступенчатость размытие гало

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

Адаптивные интерполяторы могут создавать или не создавать вышеописанные дефекты, но они тоже могут породить несвойственные исходному изображению текстуры или одиночные пиксели на крупных масштабах:

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Материал с малоразмерной текстурой Участок при увеличении 220%

С другой стороны, некоторые «дефекты» адаптивных интерполяторов тоже могут рассматриваться как преимущества. Поскольку глаз ожидает увидеть в областях с мелкой текстурой, таких как листва, детали вплоть до мельчайших подробностей, подобные рисунки могут обмануть глаз на расстоянии (для определённых видов материала).

Сглаживание

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

какое качество лучше бикубическое или билинейное какое качество лучше бикубическое или билинейное300% какое качество лучше бикубическое или билинейное

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Сглаживание удаляет эти ступеньки и создаёт впечатление более мягких границ и высокого разрешения. Оно принимает во внимание, насколько идеальная граница перекрывает смежные пиксели. Ступенчатая граница просто округлена вверх или вниз без промежуточного значения, тогда как сглаженная граница выдаёт значение, пропорциональное тому, насколько много от границы попало в каждый пиксель:

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Важным соображением при увеличении изображений является предотвращение чрезмерной ступенчатости в результате интерполяции. Многие адаптивные интерполяторы определяют наличие границ и корректируются с целью минимизировать ступенчатость, сохранив при этом резкость границы. Поскольку сглаженная граница содержит информацию о своём положении при более высоком разрешении, вполне возможно, мощный адаптивный (определяющий границы) интерполятор сможет хотя бы частично реконструировать границу при увеличении.

Оптический и цифровой зум

Многие компактные цифровые камеры могут осуществлять как оптическое, так и цифровое увеличение (зум). Оптический зум осуществляется движением вариобъектива, так чтобы свет усиливался до попадания на цифровой сенсор. На контрасте, цифровой зум понижает качество, поскольку осуществляет простую интерполяцию изображения — уже после получения его сенсором.

какое качество лучше бикубическое или билинейное

Оптический зум (х10) Цифровой зум (х10)

какое качество лучше бикубическое или билинейное

какое качество лучше бикубическое или билинейное

Даже несмотря на то, что фото с использованием цифрового зума содержит то же число пикселей, его детальность отчётливо меньше, чем при использовании оптического зума.Цифровой зум следует практически полностью исключить, за вычетом случаев, когда он помогает отобразить удалённый объект на ЖК-экране вашей камеры. С другой стороны, если вы обычно снимаете в JPEG и хотите впоследствии обрезать и увеличить снимок, цифровой зум имеет преимущество в том, что его интерполяция осуществляется до внесения дефектов компрессии. Если вы обнаруживаете, что цифровой зум вам нужен слишком часто, купите телеконвертор, а ещё лучше объектив с большим фокусным расстоянием.

Источник

Pillow 2.7 — Существенное улучшение качества и производительности

какое качество лучше бикубическое или билинейноеПервого января 2015 года по расписанию вышла новая версия библиотеки для работы с изображениями Pillow 2.7. Так как многие изменения в ней были сделаны командой Uploadcare, мы рады представить вам расширенную версию заметок о релизе этой версии.

Для начала вспомним, с чего все началось. Pillow — дружественный форк (как называют его авторы) популярной библиотеки PIL, Python Imaging Library. Последняя версия PIL 1.1.7 вышла в 2009 году и в основном содержала исправления ошибок. Изначально Pillow задумывался как проект только по приведению в порядок сборки PIL, и разработчики рекомендовали отправлять все баги, не связанные со сборкой, в оригинальный PIL. Но время шло, PIL стремительно устаревала, багов не уменьшалось, тут еще Python 3 маячил на горизонте. Поэтому с версией Pillow 2.0 все изменилось. «Pillow 2.0.0 добавляет поддержку Python 3 и включает много багфиксов со всего интернета» гласит описание проекта на PyPI. И с тех пор понеслось. Каждые три месяца выходили версии с огромным количеством багфиксов и другими улучшениями от различных разработчиков. Самым значительным нововведением за это время было, пожалуй, поддержка форматов WebP и JPEG2000. Теперь пришло время следующего большого шага.

Фильтры ресайза изображений

Уменьшение изображения с билинейным и бикубическим фильтрами

Одной из проблем в PIL, а потом и в Pillow, было то, что для ресайза с помощью билинейного и бикубического фильтра использовался метод аффинных преобразований, который использует одно и то же количество пикселей исходного изображения для формирования одного пикселя конечного (2×2 пикселя для билинейного, 4×4 для бикубического) и фиксированный размер фильтра. Это приводило к неудовлетворительным результатам для уменьшения изображения, практически не отличавшимся от метода ближайшего соседа.

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное
какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Слева метод ближайшего соседа, справа бикубический фильтр аффинных преобразований. Первый образец — уменьшение в 5,8 раз, различий практически нет. Второй — в 1,8 раз, отличия минимальные, на резких диагональных линиях видна лесенка.

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

Начиная с Pillow 2.7.0, высококачественный алгоритм на основе сверток используется для всех трех фильтров.

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное
какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Слева бикубический фильтр на основе аффинных преобразований, справа — свертки. Свертки определенно выигрывают.

Если до того вы использовали какие-то ухищрения для улучшения качества при использовании билинейного или бикубического фильтра (например, уменьшение изображения за несколько шагов или предварительное размытие), теперь в них нет необходимости.

Antialias переименован в Lanczos

Когда метод ANTIALIAS был впервые представлен, он был единственным высококачественным методом, основанным на свертках. И его имя отражало этот факт. Теперь, когда все методы основаны на свертках, они все стали «сглаживающими». А настоящее название фильтра, которое использовалось раньше для этой константы — фильтр Ланцоша.

Само собой, старая константа оставлена для обратной совместимости и является псевдонимом для новой. Шутка для лингвистов: Antialias is alias now.

Качество фильтра Ланцоша при увеличении

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное
какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Слева результат увеличения в 4,3 раза предыдущей версии, справа — Pillow 2.7.0. Картинки слева одновременно более размытые и пикселизованные.

Качество бикубического фильтра при увеличении

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

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное
какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Слева результат увеличения в 4,3 раза предыдущей версии, справа — Pillow 2.7.0. Картинки слева более пикселизованные (имеют более ощутимые границы пикселей). В то же время диагональные линии на первом примере более четкие и менее подвержены эффекту лесенки. И то и другое — влияние параметра «a» в бикубическом уравнении. Избежать обоих эффектов можно только с помощью более качественного фильтра Ланцоша.

Производительность ресайза

В общем случае свертки — более затратный алгоритм для уменьшения, потому что в отличие от аффинных преобразований, он учитывает все пиксели исходного изображения. Из-за этого чистая производительность билинейного и бикубического фильтров может быть ниже, чем раньше. С другой стороны, если вы до этого были удовлетворены качеством билинейного и бикубического фильтров для уменьшения, возможно вам стоит подумать над использованием NEAREST фильтра, который давал практически такой же результат. Это существенно увеличит производительность.

В то же время одно из существенных улучшений Pillow 2.7.0 в том, что производительность сверток для уменьшения была увеличена в среднем в 2 раза по сравнению с предыдущей версией и даже по сравнению с ImageMagick. Производительность увеличения свертками для фильтра BILINEAR оказалась быстрее в полтора раза, для BICUBIC — в четыре, а для LANCZOS осталась на том же уровне.

Т.к. скорее всего вы не использовали в своем приложении ничего, кроме LANCZOS (бывший ANTIALIAS ), то производительность при уменьшении для вас должна увеличиться в среднем в два раза. Если использование Ланцоша для вас было вынужденной мерой из-за низкого качества остальных фильтров, то теперь вы можете перейти, например, на билинейный фильтр. Это увеличит производительность еще примерно в 2 раза для уменьшения и примерно на 30% для увеличения.

Фильтр по умолчанию для Image.thumbnail()

Транспонирование изображений

Эти три метода объединяет то, что в них пиксели берутся из строк, а помещаются в столбцы. Такой шаблон доступа к памяти оказывается очень не эффективным для больших изображений, потому что данные успевают вытесниться из кэша процессора за один проход и их приходится заново загружать из памяти для следующего прохода.

В новой версии изображение разбивается на логические квадраты размером в 128×128 пикселей, и операции над пикселями производятся последовательно внутри каждого квадрата. Это позволяет существенно сократить дистанцию, которую проходит процессор на каждой строке, в результате чего данные не успевают вытесниться из кэша (память, необходимая для одного квадрата, равна 64Кб).

Гауссово размытие и контурная резкость

Реализация ImageFilter.GaussianBlur была заменена на последовательное применение бокс-фильтров. Новая реализация основана на статье Theoretical foundations of Gaussian convolution by extended box filtering от Mathematical Image Analysis Group. Так как реализация ImageFilter.UnsharpMask базируется на Гауссовом размытии, все, что описано в этой секции, также применимо и к ней.

Радиус размытия

В предыдущих версиях Pillow была ошибка, из-за которой радиус размытия (стандартное отклонение Гауссианы) на самом деле задавал его диаметр. Поэтому, например, чтобы размыть изображение на радиус 5, нужно было указывать значение 10. Ошибка была исправлена, и теперь значение радиуса интерпретируется так же, как во всем остальном программном обеспечении.

Если до этого вы использовали Гауссово размытие с определенным радиусом, вам нужно поделить его значение на два.

Производительность размытия

Время вычисления бокс-фильтра постоянно относительно его радиуса и зависит только от размеров входного изображения. Т.к. новая реализация Гауссового размытия основана на бокс-фильтре, её вычисление также не зависит от радиуса размытия.

Для радиуса в 1 пиксель новая реализация работает 5 раз быстрее, для радиуса 10 — в 18 раз, для радиуса 50 — уже в 85 раз. Ваш дизайнер, рисующий интерфейсы в стиле iOS 8, должен быть доволен.

Качество размытия

Теоретически при Гауссовом размытии в вычислении каждой точки конечного изображения должны участвовать все точки исходного с определенными коэффициентами. На практике коэффициенты точек дальше 3×стандартное отклонение настолько малы, что учитывать их нет смысла.

Предыдущая реализация учитывала только пиксели в радиусе 2×стандартное отклонение для каждого конечного пикселя. Этого было недостаточно, поэтому качество было хуже в сравнении с другими реализациями Гауссова размытия.

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

какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное
какое качество лучше бикубическое или билинейноекакое качество лучше бикубическое или билинейное

Слева результат размытия с радиусом 5 в предыдущей версии (с учетом бага с удвоением радиуса), справа — в новой. Слева видны резкие границы объектов.

Все эти изменения уже работают на наших серверах. Благодаря им мы повысили качество и скорость API для обработки картинок на лету. Также мы реализовали операцию быстрого блюра. Но это еще не все. Мы готовим следующий большой шаг для Pillow, о котором объявим чуть позже.

Источник

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

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