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

В старые недобрые времена многие продавцы предпочли бы называть в качестве спецификации интерполированное значение разрешающей способности, если бы они его знали. В то время разрешающая способность была ниже (до появления доступных пленочных сканеров), поэтому искушение было очень велико. Так у планшетных сканеров, которые используются для получения изображений фотографий и подобных продуктов, реальное оптическое разрешение могло быть 300x300 выборок на дюйм. С помощью магии интерполяции тот же самый сканер мог выдавать поддельное разрешение в 600x600 выборок на дюйм или даже 1200x1200 выборок на дюйм. И именно это рекламировали бы продавцы. Доверчивые покупатели могли бы думать, что они покупают сканер с разрешением 1200x1200 выборок на дюйм, тогда как большая часть дополнительной четкости была бы математическим "шаманством".

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

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

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

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

Интерполяция - процесс намного более сложный. Вместо простого копирования пикселей используются интерполяционные алгоритмы, изучающие соседние пиксели и рассчитывающие новые, которые подгоняются так, чтобы переход между ними был как можно незаметнее, в идеальном случае формируя непрерывный переход от старых пикселей к новым. Упрощенно этот процесс можно описать следующим образом. Если на изображении был черный пиксель, а рядом с ним - белый, то при увеличении масштаба в два раза получилось бы два черных пикселя и два белых пикселя. При интерполяции мы получим исходные черный и белый пиксели, плюс один темно-серый пиксель и один светло-серый пиксель между ними, как показано на рис. 3.3.

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

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

Поскольку в таком случае нужно проверять только каждый второй пиксель, это достаточно быстрый метод, хотя и не очень точный. Он не подходит для большей части фотографических изображений, содержащих плавные переходы между отдельными участками, поскольку дает в них заметно более зубчатые края. Если вы сканируете изображение с четкими границами, например, фрагмент текста или изображение, которое будет сохраняться в формате GIF, алгоритм ближайших соседей будет вполне пригоден. В таких случаях он дает меньшие файлы, при этом эффективно сохраняя резкие границы. На рис. 3.4 изображена буква А (один из типов изображений, для которых достаточно хорошо работает алгоритм ближайших соседей), а на рис. 3.5 показана увеличенная на 600% часть этой буквы после обработки с помощью данного.

- Билинейный метод . При этом методе проверяются пиксели по обе стороны от обрабатываемого пикселя. Он выполняется немного медленнее, чем алгоритм ближайших соседей, но может давать достаточно хорошие результаты для изображений, содержащих высококонтрастные элементы. Действие соответствующего алгоритма показано на рис. 3.6.

- Бикубический метод . Самый распространенный метод интерполяции - бикубический, при котором для получения информации для создания новых, интерполированных пикселей, проверяются все окружающие пиксели. Этот метод используется по умолчанию во многих сканерах, а также в Photoshop. В последней версии Photoshop к основному алгоритму бикубической интерполяции добавлены еще два варианта - бикубическое сглаживание (Bicubic Smoother), лучше всего сглаживающее зубцы при увеличении изображения, и бикубическое увеличение резкости (Bicubic Sharper), сохраняющее детали при выполнении субдискретизации для уменьшения изображения. Бикубическая интерполяция показана на рис. 3.7.

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

Какая-то интерполяция происходит при любом сканировании с разрешением, отличным от естественного разрешения сканера. Например, если реальное разрешение вашего сканера составляет 4000 выборок на дюйм, то всякий раз, когда вы сканируете с разрешением, скажем, 2000 spi, желая уменьшить размер файла для не очень важных изображений, конечное изображение формируется в помощью интерполяции. Если же сканер с разрешающей способностью 4000 spi позволяет выполнять сканирование с разрешением 8000 spi, интерполяция запускается для имитации более высокого разрешения. В некоторых сканерах интерполяция выполняется аппаратно при создании отсканированного изображения, тогда как в других этот этап выполняется с помощью программного обеспечения на компьютере.

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

Для начала пойдем в главное меню Изображение - Размер изображения (Image - Image Size) или Alt+Ctrl+I .

Если вы кликните по стрелочке около параметра Ресамплинг (Resample Image) , то в выплывающем окне появится несколько вариантов интерполяции:

  • Автоматически (Automatic) . Приложение Photoshop выбирает метод ресамплинга на основе типа документа и увеличения либо уменьшения его масштаба.
  • Сохранить детали (с увеличением) (Preserve details (enlargement)) . Если выбран этот метод, становится доступным ползунок Снижение шума для сглаживания шума при масштабировании изображения.
  • Сохранение деталей 2.0 (Preserve Details 2.0) . Этот алгоритм даёт очень даже интересный результат увеличения картинки. Конечно, детализация подробнее не становится, но та, что есть увеличивается довольно сильно не теряя чёткости.
  • . Хороший метод для увеличения изображений на основе бикубической интерполяции, разработанный специально для получения более гладких результатов.
  • Бикубическая (с уменьшением) (Bicubic Sharper (reduction)) . Хороший метод для уменьшения размера изображения на основе бикубической интерполяции с повышенной резкостью. Этот метод позволяет сохранить детали изображения, подвергнутого ресамплингу. Если интерполяция «Бикубическая, c уменьшением» делает слишком резкими некоторые области изображения, попробуйте воспользоваться бикубической интерполяцией.
  • Бикубическая (плавные градиенты) (Bicubic (smooth gradients)) . Более медленный, но и более точный метод, основанный на анализе значений цвета окружающих пикселей. За счет использования более сложных вычислений бикубическая интерполяция дает более плавные цветовые переходы, чем интерполяция по соседним пикселам или билинейная интерполяция.
  • По соседним пикселам (четкие края) (Nearest Neighbor (hard edges)) . Быстрый, но менее точный метод, который повторяет пиксели изображения. Этот метод сохраняет четкие края и позволяет создать файл уменьшенного размера в иллюстрациях, содержащих несглаженные края. Однако этот метод может создать зубчатые края, которые станут заметными при искажении или масштабировании изображения, или проведении множества операций с выделением.
  • Билинейная (Bilinear) . Этот метод добавляет новые пиксели, рассчитывая среднее значение цвета окружающих пикселей. Он дает результат среднего качества.

Пример использования Бикубическая (с увеличением) (Bicubic Smoother (enlargement)) :

Есть фото, размеры 600 х 450 пикселей разрешение 72 dpi

Нам нужно его увеличить. Открывает окно Размер изображения (Image Size) и выбираем Бикубическая (с увеличением) (Bicubic Smoother (enlargement)) , единицы измерение - проценты.

Размеры документа сразу установятся на значения 100%. Далее будем постепенно увеличивать изображение. Измените значение 100% на 110%. Когда вы измените ширину, высота автоматически подгонится сама.

Теперь его размеры уже 660 х 495 пикселей. Повторяя данные действия можно добиться хороших результатов. Конечно, идеальной четкости нам добиться будет достаточно сложно, так как фото было маленькое и низкого разрешения. Но посмотрите, какие изменения произошли в пикселях.

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

До встречи в следующем уроке!

Почему изображение, масштабированное с бикубической интерполяцией, выглядит не как в Фотошопе. Почему одна программа ресайзит быстро, а другая - нет, хотя результат одинаковый. Какой метод ресайза лучше для увеличения, а какой для уменьшения. Что делают фильтры и чем они отличаются.

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

Этот человек сидит среди ромашек, чтобы привлечь ваше внимание к статье.

Для наглядного сравнения я буду использовать изображения одинакового разрешения 1920×1280 (одно , второе), которые буду приводить к размерам 330×220, 1067×667 и 4800×3200. Под иллюстрациями будет написано, сколько миллисекунд занял ресайз в то или иное разрешение. Цифры приведены лишь для понимания сложности алгоритма, поэтому конкретное железо или ПО, на котором они получены, не так важно.

Ближайший сосед (Nearest neighbor)

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

Вообще, качество и производительность любого метода уменьшения можно оценить по отношению количества пикселей, участвовавших в формировании конечного изображения, к числу пикселей в исходном изображении. Чем больше это отношение, тем скорее всего алгоритм качественнее и медленнее. Отношение, равное одному, означает что как минимум каждый пиксель исходного изображения сделал свой вклад в конечное. Но для продвинутых методов оно может быть и больше одного. Дак вот, если например мы уменьшаем изображение методом ближайшего соседа в 3 раза по каждой стороне, то это соотношение равно 1/9. Т.е. большая часть исходных пикселей никак не учитывается.




1920×1280 → 330×220 = 0,12 ms
1920×1280 → 1067×667 = 1,86 ms

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

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

Аффинные преобразования (Affine transformations)

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

Принцип действия заключается в том, что для каждой точки конечного изображения берется фиксированный набор точек исходного и интерполируется в соответствии с их взаимным положением и выбранным фильтром. Количество точек тоже зависит от фильтра. Для билинейной интерполяции берется 2x2 исходных пикселя, для бикубической 4x4. Такой метод дает гладкое изображение при увеличении, но при уменьшении результат очень похож на ближайшего соседа. Смотрите сами: теоретически, при бикубическом фильтре и уменьшении в 3 раза отношение обработанных пикселей к исходным равно 4² / 3² = 1,78. На практике результат значительно хуже т.к. в существующих реализациях окно фильтра и функция интерполяции не масштабируются в соответствии с масштабом изображения, и пиксели ближе к краю окна берутся с отрицательными коэффициентами (в соответствии с функцией), т.е. не вносят полезный вклад в конечное изображение. В результате изображение, уменьшенное с бикубическим фильтром, отличается от изображения, уменьшенного с билинейным, только тем, что оно еще более четкое. Ну а для билинейного фильтра и уменьшения в три раза отношение обработанных пикселей к исходным равно 2² / 3² = 0.44, что принципиально не отличается от ближайшего соседа. Фактически, аффинные преобразования нельзя использовать для уменьшения более чем в 2 раза. И даже при уменьшении до двух раз они дают заметные эффекты лесенки для линий.

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




1920×1280 → 330×220 = 6.13 ms
1920×1280 → 1067×667 = 17.7 ms
1920×1280 → 4800×3200 = 869 ms

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

Мое скромное мнение, что использование этого способа для произвольного уменьшения изображений попросту является багом , потому что результат получается очень плохой и похож на ближайшего соседа, а ресурсов на этот метод нужно значительно больше. Тем не менее, этот метод нашел широкое применение в программах и библиотеках. Самое удивительное, что этот способ используется во всех браузерах для метода канвы drawImage() (наглядный пример), хотя для простого отображения картинок в элементе используются более аккуратные методы (кроме IE, в нем для обоих случаев используются аффинные преобразования). Помимо этого, такой метод используется в OpenCV, текущей версии питоновской библиотеки Pillow (об этом я надеюсь написать отдельно), в Paint.NET.

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

Суперсемплинг (Supersampling)

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

Можно выделить два подвида этого метода: с округлением границ пикселей до ближайшего целого числа пикселей и без. В первом случае алгоритм становится малопригодным для масштабирования меньше чем в 3 раза, потому что на какой-нибудь один конечный пиксель может приходиться один исходный, а на соседний - четыре (2x2), что приводит к диспропорции на локальном уровне. В то же время алгоритм с округлением очевидно можно использовать в случаях, когда размер исходного изображения кратен размеру конечного, или масштаб уменьшения достаточно мал (версии разрешением 330×220 почти не отличаются). Отношение обработанных пикселей к исходным при округлении границ всегда равно единице.




1920×1280 → 330×220 = 7 ms
1920×1280 → 1067×667 = 15 ms
1920×1280 → 4800×3200 = 22,5 ms

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




1920×1280 → 330×220 = 19 ms
1920×1280 → 1067×667 = 45 ms
1920×1280 → 4800×3200 = 112 ms

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

Данный метод используется в функции gdImageCopyResampled() библиотеки GD, входящей в состав PHP, есть в OpenCV (флаг INTER_AREA), Intel IPP, AMD Framewave. Примерно по такому же принципу работает libjpeg, когда открывает изображения в уменьшенном в несколько раз виде. Последнее позволяет многим приложениям открывать изображения JPEG заранее уменьшенными в несколько раз без особых накладных расходов (на практике libjpeg открывает уменьшенные изображения даже немного быстрее полноразмерных), а затем применять другие методы для ресайза до точных размеров. Например, если нужно отресайзить JPEG разрешением 1920×1280 в разрешение 330×220, можно открыть оригинальное изображение в разрешении 480×320, а затем уменьшить его до нужных 330×220.

Свертки (Convolution)

Этот метод похож на аффинные преобразования тем, что используются фильтры, но имеет не фиксированное окно, а окно, пропорциональное масштабу. Например, если размер окна фильтра равен 6, а размер изображения уменьшается в 2,5 раза, то в формировании каждого пикселя конечного изображения принимает участие (2,5 * 6)² = 225 пикселей, что гораздо больше, чем в случае суперсемплинга (от 9 до 16). К счастью, свертки можно считать в 2 прохода, сначала в одну сторону, потом в другую, поэтому алгоритмическая сложность расчета каждого пикселя равна не 225, а всего (2,5 * 6) * 2 = 30. Вклад каждого исходного пикселя в конечный как раз определяется фильтром. Отношение обработанных пикселей к исходным целиком определяется размером окна фильтра и равно его квадрату. Т.е. для билинейного фильтра это отношение будет 4, для бикубического 16, для Ланцоша 36. Алгоритм прекрасно работает как для уменьшения, так и для увеличения.




1920×1280 → 330×220 = 76 ms
1920×1280 → 1067×667 = 160 ms
1920×1280 → 4800×3200 = 1540 ms

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

Именно этот метод реализован в ImageMagick, GIMP, в текущей версии Pillow с флагом ANTIALIAS.

Одно из преимуществ этого метода в том, что фильтры могут задаваться отдельной функцией, никак не привязанной к реализации метода. При этом функция самого фильтра может быть достаточно сложной без особой потери производительности, потому что коэффициенты для всех пикселей в одном столбце и для всех пикселей в одной строке считаются только один раз. Т.е. сама функция фильтра вызывается только (m + n) * w раз, где m и n - размеры конечного изображения, а w - размер окна фильтра. И наклепать этих функций можно множество, было бы математическое обоснование. В ImageMagick, например, их 15. Вот как выглядят самые популярные:

Билинейный фильтр (bilinear или triangle в ImageMagick)


Бикубический фильтр (bicubic , catrom в ImageMagick)


Фильтр Ланцоша (Lanczos)

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

Функция изменения размера изображения, предоставленная Emgu (оболочка.net для OpenCV), может использовать любой из четырех методов интерполяции :

  • CV_INTER_NN (по умолчанию)
  • CV_INTER_LINEAR
  • CV_INTER_CUBIC
  • CV_INTER_AREA

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

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

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

4 ответов

Ближайший сосед будет как можно быстрее, но при изменении размера вы потеряете существенную информацию.

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

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

Не уверен, что такое "area" - на самом деле это может быть "Bicubic". По всей вероятности, этот параметр даст лучший результат (с точки зрения потери/появления информации), но за счет самого продолжительного времени обработки.

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

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

Метод CV_INTER_NN на самом деле является ближайшим соседом, это самый базовый метод, и вы получите более резкие края (ни один фильтр нижних частот не будет применяться). Однако этот метод просто напоминает "масштабирование" изображения, отсутствие визуального улучшения.

Алгоритмы: (описания из документации OpenCV)

  • INTER_NEAREST - интерполяция ближайшего соседа
  • INTER_LINEAR - билинейная интерполяция (используется по умолчанию)
  • INTER_AREA - повторная выборка с использованием отношения области пикселей. Это может быть предпочтительный метод для прореживания изображения, поскольку он дает результаты без муара. Но когда изображение масштабируется, оно похоже на метод INTER_NEAREST.
  • INTER_CUBIC - бикубическая интерполяция по окрестности 4x4 пикселей.
  • INTER_LANCZOS4 - интерполяция Lanczos в окрестности 8x8 пикселей

Если вы хотите увеличить скорость, используйте метод Nearest Neighbor.

Чтобы понимать какие процессы заложены в механизм изменения размеров изображения, почитайте — строительном материале любого растрового изображения. Если вкратце, то это маленькие цветные квадратики, из которых, как из мозаики, складывается картинка.

Говоря о размерах, мы говорим о разрешении . Оно записывается как сумма пикселей в одной строке по ширине и одном столбце по высоте и записывается так: 655×382. Именно таких размеров следующий арт:

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

В случае уменьшения размера , например, наш пример изменим до 300×175, картинка уже будет состоять из 300 пикселей в ширине и 175 пикселей в высоте. Никакого сужения не произошло. Фотошоп пересчитал пиксели в изображении и вычислил от каких можно избавиться.

Но этот процесс не обратимый. Если потребуется все вернуть обратно или сделать еще больше, то запустится новый процесс — увеличение.

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

Таким образом, при увеличении, качество будет сильно зависеть от начального размера изображения и от конечно, до которого нужно «дорасти».

Диалоговое окно «Размер изображения»

Итак, самый основной способ изменить размер изображения — воспользоваться командой меню:

Изображение — Размер изображения (Image — Image Size).

Горячая клавиша: Alt+Ctrl+I.

Откроется диалоговое окно:

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

Размерность (Pixel Dimensions)

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

Обратите внимание на скобку и иконку в виде цепочки. Это означает, что при изменении ширины или высоты, второе значение будет автоматически меняться в тех же пропорциях, что и оригинал изображения. Это нужно, чтобы оно не получилось сжатым или вытянутым. Для включения\отключения такой функцию, поставьте галочку «Сохранить пропорции» (Constrain Proportions).

Размер печатного оттиска (Document Size)

Об этой группе настроек я упоминал, говоря о на принтере. Разрешение (Resolution) меняет размер пикселей и влияет на качество печати. Для принтеров смело ставьте в диапазоне 200-300 пикселей на дюйм.

Значения Ширины и Высоты говорят нам о том, на каких размерах бумаги может быть напечатано изображение. Меняя числа, будет менять и размер изображения. Обратите внимание, что и тут есть функция сохранения пропорций.

Масштабировать стили (Scale Styles)

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

Интерполяция

Это ваш ключ к изменению разрешения без влияния на качество изображения. Интерполяция (Resample Image) - это процесс, при котором фотошоп реагирует на команду изменения размера, добавляя или вычитая пиксели. Проблема заключается в том, что при интерполяции, программа «строит предположения», а это может испортить качество изображения.

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

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

Например, если у вас есть изображение с разрешением 200 пикселей на дюйм , размер которого при печати составляет 4×6, а размер печатного варианта должен быть 5×7 и желательно сохранить разрешение в 200 пикселей на дюйм . Для этого можно установить данный флажок.

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

Вот какие варианты вам предлагаются, отсортированные по качеству (от худшего к лучшему) и по скорости (от самого быстрого к самому медленному):

  • По соседним пикселям (сохраняет четкие края) (Nearest Neighbor) . Хотя этот метод в результате дает самое низкое качество изображения, он может быть полезен, поскольку создает самые маленькие файлы. Пригодится, если вы передаете файлы через Интернет, а у вас или у получателя медленное соединение. Этот метод работает ориентируясь на цвета окружающих пикселов, и копируя их. Он известен тем, что создает неровные края, поэтому вам стоит применять его только к изображениям с резкими краями, таким как иллюстрации, которые не были сглажены.
  • Билинейная (Bilinear). Если вы выберете этот метод, фотошоп будет угадывать цвет новых пикселов, выбирая нечто среднее между цветом пикселов, расположенных непосредственно выше и ниже, а также слева и справа от добавляемого. Результат данного метода чуть лучше, чем при выборе варианта По соседним пикселям и он все еще довольно быстрый, но вам лучше использовать вместо Билинейная один из следующих трех методов.
  • Бикубическая (наилучшая для плавных градиентов) (Bicubic) . Этот метод позволяет определить цвета новых пикселов, усреднив цвета пикселов непосредственно над и под новым, а также двух пикселов слева и справа от него. Этот метод занимает больше времени, чем предыдущие два, но создает более плавный переход в областях, где один цвет заменяется другим.
  • Бикубическая, глаже (наилучшая для увеличения) (Bicubic Smoother) . Близок к предыдущему методу по способу создания новых пикселов. При использовании этого метода пиксели немного размываются, чтобы можно было наложить новые на старые, придавая изображению более гладкий и естественный вид. Рекомендуется применять данный метод для увеличения изображений.
  • Бикубическая, четче (наилучшая для уменьшения) (Bicubic Sharper). Этот метод также похож на метод Бикубическая (наилучшая для плавных градиентов) по способу создания новых пикселов, однако вместо того, чтобы размывать целые пиксели для улучшения наложения новых и старых как предыдущий метод, он смягчает только края пикселов. Рекомендуется применять данный метод для уменьшения изображений.