Что такое интерполяция в фотошопе. Ликбез: методы ресайза изображений. Типы алгоритмов интерполяции

Nokia 20.03.2019
Nokia

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


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

Концепция

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

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

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

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

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

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

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

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

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

Деградация изображения
Оригинал поворот на 45° поворот на 90°
(без потерь)
2 поворота на 45° 6 поворотов на 15°

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сглаживание

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


300%

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

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

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

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


оптический зум (10x) цифровой зум (10x)

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

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

Что такое разрешение?

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

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

Что такое интерполяция камеры в телефоне?

Интерполяция камеры - это искусственное увеличение разрешения изображения. Именно изображения, а не То есть это специальное программное обеспечение, благодаря которому снимок с разрешением 8 Мп интерполируется до 13 Мп или больше (или меньше).

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

Для чего это нужно?

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

Буквально 3-4 года тому назад многие производители гнались за количеством мегапикселей и разными способами пытались впихнуть их в свои смартфоны сенсоры с как можно большим числом. Так появлялись смартфоны с камерами с разрешением 5, 8, 12, 15, 21 Мп. Фотографировать они при этом могли как самые дешевые мыльницы, но покупатели, увидев наклейку "Камера на 18 Мп", сразу хотели купить такой телефон. С появлением интерполяции продавать такие смартфоны стало проще из-за возможности искусственно добавить мегапикселей камере. Конечно, качество фото со временем начало расти, но точно не из-за разрешения или интерполяции, а из-за естественного прогресса в плане разработки сенсоров и программного обеспечения.

Техническая сторона

Что такое интерполяция камеры в телефоне технически, ведь весь текст выше описывал только основную идею?

С помощью специального программного обеспечения на изображении "рисуются" новые пиксели. Например, для увеличения изображения в 2 раза после каждой строки пикселей картинки добавляется новая строка. Каждый пиксель в этой новой строке заполняется цветом. Цвет заливки высчитывается специальным алгоритмом. Самый первый способ - залить новую строку цветами, которыми обладают ближайшие пиксели. Результат такой обработки будет ужасным, но зато подобный способ требует минимум вычислительных операций.

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

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

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

Нужна ли вам интерполяция?

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

Так что интерполяция в телефоне - это маркетинговая уловка, которая совершенно не нужна. Она может увеличивать не только разрешение фото, но и стоимость самого смартфона. Не попадайтесь на уловки продавцов и производителей.

Установка свойств отображения

В приложении Image Processing Toolbox существует возможность настройки установок, которые контролируют некоторые свойства функций отображения изображений imshow и imtool. Например, использование установок приложения позволяет описать коэффициент увеличения, который применяется при выводе изображений с помощью функций imtool и imshow.

В рамках данного вопроса рассмотрим

  • Список установок, которые поддерживаются приложением.
  • Описание процесса получения текущих значений установок с использованием функции iptgetpref.
  • Описание процесса установки текущих значений установок с использованием функции iptsetpref.

Установки приложения

Приложение Image Processing Toolbox поддерживает несколько установок, которые влияют на способ отображения изображений с помощью функций imshow и imtool. В таблице приведен список установок и их короткое описание. Для получения более детальной информации относительно установок приложения и их значений см. описание функции iptsetpref.

Установки приложения Описание
ImshowBorder Этот параметр может принимать два значения - "loose" и "tight". Если параметр ImshowBorder принимает значение "loose", то изображение будет отображаться функцией imshow с отступом от края окна figure. Таким образом, в окне остается место для дополнительных надписей. Используется по умолчанию. Если параметр ImshowBorder принимает значение "tight", то изображение будет отображаться функцией imshow так, чтобы оно занимало все окно figure.
ImshowAxesVisible Этот параметр может принимать два значения - "on" и "off". Если параметр ImshowAxesVisible принимает значение "on", то при выводе изображения функцией imshow в окне figure будут дополнительно выведены оси координат. Если же параметр ImshowAxesVisible принимает значение "off", то оси координат выводиться не будут. Значение параметра "off" устанавливается по умолчанию.
ImshowInitialMagnification Управляет коэффициентом увеличения, который используется функцией imshow при выводе изображения.
ImtoolInitialMagnification Контролирует коэффициент увеличения в приложении Image Tool, которое используется для масштабирования изображений.

Получение значений установок приложения

Для определения текущих значений используется функция iptgetpref. Рассмотрим пример использования функции iptgetpref для определения значения свойства imtoolInitialMagnification.

Iptgetpref("ImtoolInitialMagnification") ans = 100

Для более детальной информации см. описание функции iptgetpref.

Установка значений свойств приложения

Для установки значений свойств приложения используется функция iptsetpref. Рассмотрим пример использования функции iptsetpref для установки свойств отображения, которые приводят к тому, что при вызове функции imshow будет изменятся размер окна отображения в соответствии с размерами отображаемого изображения и значением свойства "ImshowBorder".

Iptsetpref("ImshowBorder", "tight");

Для более детальной информации см. описание функции iptsetpref.

Пространственные преобразования

Рассмотрим основные функции пространственных преобразований, которые реализованы в приложении Image Processing Toolbox.

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

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

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

Методы интерполяции

Приложение Image Processing Toolbox использует три встроенных алгоритма интерполяции:

  • Интерполяция по ближайшему соседу - используется значение ближайшего пикселя.
  • Билинейная интерполяция - используется интерполяция по билинейной поверхности.
  • Бикубическая интерполяция - используется интерполяция по бикубической поверхности.

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

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

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

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

  • Если данные исходного изображения представлены в формате double, то результирующее изображение будет полутоновым и представленным в формате double. Таким образом, результирующее изображение не будет бинарным, поскольку содержит значения из диапазона между 0 и 1.
  • Если исходное изображение представлено в формате uint8, то результирующее изображение будет бинарным и представленным в формате uint8. Значения интерполирующих пикселей будут округлены к 0 и 1, а результирующее изображение будет представлено в формате uint8.

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

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

Для изменения размеров изображения используется функция imresize. При использовании функции imresize необходимо

  • Описать размер результирующего изображения.
  • Описать выбранный метод интерполяции.
  • Описать фильтр препарирования изображений.

При использовании функции imresize размер результирующего изображения можно указать двумя путями:

  • через описание коэффициента увеличения.
  • через описание размеров результирующего изображения.

Использование коэффициента увеличения

Для увеличения изображения необходимо, чтобы коэффициент увеличения был больше 1. Для уменьшения изображения необходимо, чтобы коэффициент увеличения находился в диапазоне между 0 и 1. Например, с помощью команды, которая написана ниже, реализуется увеличение изображения I в 1.25 раз.

I = imread("circuit.tif"); J = imresize(I,1.25); imshow(I) figure, imshow(J)

Описание размера результирующего изображения

Существует возможность описать размер результирующего изображения в виде вектора, который содержит два числа - количество строк и столбцов результирующего изображения. Рассмотрим пример создания результирующего изображения Y, которое состоит из 100 строк и 150 столбцов.

Y = imresize(X,)

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

Описание метода интерполяции

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

Рассмотрим пример, когда функция imresize использует билинейную интерполяцию.

Y = imresize(X,,"bilinear")

Использование фильтров препарирования изображений

Изменение размеров изображения может привести к возникновению артефактов на изображении, что отражается на его качестве.

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

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

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

Поворот изображений

Для поворота изображений используется функция imrotate. При использовании функции imrotate нужно указать два основных аргумента:

  1. изображение, которое нужно повернуть;
  2. угол поворота.

Угол поворота можно описать в градусах. Если задать положительное значение, то функция imrotate будет вращать изображение против часовой стрелки, если задать отрицательное значение, то функция imrotate буде вращать изображение по часовой стрелке. Рассмотрим пример поворота изображения I на 35 градусов против часовой стрелки.

J = imrotate(I,35);

В качестве необязательных аргументов в функции imrotate также можно описать

  1. метод интерполяции;
  2. размер результирующего изображения.

Описание метода интерполяции

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

Рассмотрим пример поворота изображения на 35° против часовой стрелки с использованием билинейной интерполяции.

I = imread("circuit.tif"); J = imrotate(I,35,"bilinear"); imshow(I) figure, imshow(J)

Описание размера результирующего изображения

По умолчанию, функция imrotate создает результирующее больше, так чтобы поместить исходное изображение, которое размещено под указанным углом. Пикселям, которые находятся за пределами изображения, устанавливается значение 0 и они являются фоном результирующего изображения. Если в функции imrotate в качестве аргумента указать опцию "crop", то результирующее изображение будет обрезано до размеров исходного изображения. Для более детальной информации см. описание функции imrotate.

Вырезание изображений

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

  1. исходное изображение;
  2. координаты прямоугольника, которым определяется площадь вырезания.

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

Imshow circuit.tif I = imcrop; imshow(I);

Выполнение основных пространственных преобразований

Для выполнения основных двумерных пространственных преобразований используется функция imtransform.

При использовании функции imtransform необходимо указать два основных аргумента:

  • исходное изображение;
  • структуру пространственных преобразований (TFORM), которая определяет тип нужных преобразований.

Описание типа преобразований

При описании типа преобразований необходимо использовать структуру TFORM. Существует два пути использования TFORM:

  • использование функции maketform;
  • использование функции cp2tform.

Использование maketform

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

Тип преобразования Описание
"affine" Преобразования, которые включают сдвиг, поворот, масштабирование и другие похожие функции преобразования изображений. При этом прямые линии остаются прямыми, параллельные остаются параллельными, а прямоугольник может превратиться в параллелограмм.
"box" Отдельный случай аффинных преобразований, когда каждая размерность масштабируется независимо.
"composite" Структура двух или более преобразований.
"custom" Преобразование, которое определено пользователем и вызывается с помощью функции imtransform.
"projective" При этом типе преобразований прямые линии остаются прямыми, а параллельные сходятся в одной точке. Эта точка может находиться как в пределах изображения, так и за его пределами.

Использование cp2tform

При использовании функции cp2tform создается TFORM, когда необходимо выполнять такие преобразования, как подгонка данных, например, при полиномиальных преобразованиях.

Примечание. При использовании функции imtransform структура TFORM выполняет двумерные пространственные преобразования. Если изображение содержит больше, чем две размерности, например, RGB изображения, то двумерные преобразования автоматически применяются ко всем двумерным составляющим. Для определения n-мерных преобразований используется функция tformarray.

Выполнение преобразований

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

Рассмотрим пример использования функции imtransform для выполнения проективных преобразований с изображением шахматной доски.

I = checkerboard(20,1,1); figure; imshow(I) T = maketform("projective",,... ); R = makeresampler("cubic","circular"); K = imtransform(I,T,R,"Size",,"XYScale",1); figure, imshow(K)

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

Линейная фильтрация и проектирование фильтров

Приложение Image Processing Toolbox содержит некоторое число функций, которые проектируют и реализуют двумерную линейную фильтрацию данных изображения. Рассмотри эти вопросы в таком порядке:

Рассмотрим еще некоторые термины, которые также буду в дальнейшем применяться при рассмотрении материала.

Термин Описание
Convolution (свертка) Операция над локальной окрестностью, где каждый результирующий пиксель представляет собой взвешенную сумму исходных пикселей. Вес определяется ядром свертки. С помощью операции свертки можно реализовать такие методы обработки изображений как сглаживание, повышение резкости и усиление границ объектов изображения.
convolution kernel (ядро свертки) Матрица весов, которая используется при выполнении свертки.
Correlation (корреляция) Операция над локальной окрестностью, где каждый результирующий пиксель представляет собой взвешенную сумму пикселей локальной окрестности. Весы определяются ядром корреляции. Понятие корреляции очень тесно связано с понятием свертки.
correlation kernel (ядро корреляции) Для реализации функции корреляции используется весовая функция. Ядра корреляции можно получить с помощью функции проектирования фильтров в Image Processing Toolbox. Ядра корреляции представляют собой ядро свертки, которое повернуто на 180 градусов.
FIR filter (фильтр с конечной импульсной характеристикой, КИХ-фильтр) В приложении существует ряд функций для расчета коэффициентов цифрового КИХ фильтра, в частности, методом Ремеза. Особенностью их использования является то, что исходные данные задаются в виде желаемой АЧХ произвольной сложности.
frequency response (частотная характеристика или частотный отклик) Математическая функция, с помощью которой можно оценивать работу фильтра на различных частотах.
neighborhood operation (операция с использованием значений соседних элементов) Операция, в результате которой значение каждого пикселя вычисляется на основе значений окрестных пикселей. Свертка, методы морфологической обработки и медианная фильтрация являются примерами операций с использованием соседних пикселей.
window method (локальные методы обработки) Методы обработки, при которых учитываются локальные особенности изображения.

Линейная фильтрация

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

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

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

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

  • Фильтрация с использованием convolution и correlation.
  • Выполнение фильтрации с использованием функции imfilter и др.

Свертка

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

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

A =

а ядро свертки представлено таким образом

H =

Рассмотрим пример вычисления результирующего пикселя с координатами (2,4). Для этого необходимо выполнить следующие шаги:

  1. Развернуть ядро свертки на 180 градусов относительно центрального элемента.
  2. Умножить каждое значение веса в матрице свертки на соответствующее значение пикселя в матрице A.
  3. Просуммировать результат умножения.


Корреляция

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

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

В результате значение пикселя (2,4) будет равно


Вычисление значения результирующего пикселя (2,4)

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

Говоря о размерах, мы говорим о разрешении . Оно записывается как сумма пикселей в одной строке по ширине и одном столбце по высоте и записывается так: 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). Этот метод также похож на метод Бикубическая (наилучшая для плавных градиентов) по способу создания новых пикселов, однако вместо того, чтобы размывать целые пиксели для улучшения наложения новых и старых как предыдущий метод, он смягчает только края пикселов. Рекомендуется применять данный метод для уменьшения изображений.

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

Для начала пойдем в главное меню Изображение - Размер изображения (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 пикселей. Повторяя данные действия можно добиться хороших результатов. Конечно, идеальной четкости нам добиться будет достаточно сложно, так как фото было маленькое и низкого разрешения. Но посмотрите, какие изменения произошли в пикселях.

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

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



Рекомендуем почитать

Наверх