Программы для увеличения размеров цифрового изображения. Урок: масштабирование изображения

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

В приложении 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)

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

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

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

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

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

  • метод копирования ближайшего пиксела (Nearest neighbor interpolation) — заключается в том, что в изображение добавляются новые пикселы того же цвета, что и расположенные рядом. Цветовые точки дублируются — их создается тем больше, чем больше должно быть изображение. Указанная процедура приводит к возникновению ступенек, которые образуются за счет того, что непрерывные кривые изменения цвета становятся ступенчатыми. Такие изображения называются jagged images 1 , или просто jaggies;
  • билинейная интерполяция (Bilinear interpolation) — выполняется на основе четырех соседних пикселов, дает плавные края (ступенек не возникает), но увеличенное изображение получается нерезким;
  • бикубическая интерполяция (Bicubic interpolation) — дает несколько лучшие результаты, чем билинейная интерполяция, осуществляется на базе анализа 16 соседних пикселов, что обеспечивает более гладкое увеличение размеров. В Photoshop предлагается пользоваться именно бикубическим алгоритмом. Для небольшого увеличения (до 150%) этот метод дает неплохие результаты, однако при дальнейшем увеличении качество сильно падает.

На рис. 1 приведен пример обработки фотографии с помощью традиционных алгоритмов интерполяции.

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

На рис. 2 показаны примеры обработки исходной фотографии (см. рис. 1) с помощью программы Imagener от компании Kneson Software.


от компании Kneson Software

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

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

1 Изображение с рваными (зазубренными, ступенчатыми) краями.

Imagener

Разработчик: Kneson Software

Платформа: Windows

Программа выпускается в трех модификациях: Enhanced — 29,95 долл., Professional — 49,95 долл., Unlimited — 99,95 долл.

Одна из лучших программ в области увеличения цифровых изображений, выпускаемая в трех модификациях — Enhanced, Professional и Unlimited.

Imagener Enhanced Enlargement

Приложение обеспечивает увеличение цифровых изображений в форматах JPG, GIF, TIF, BMP, PCX, PSD, ETC. В нем применяется интеллектуальный модуль, который анализирует большую область вокруг каждого пиксела, чтобы качественно увеличить изображение. Приложение позволяет достигать 200-300-процентного увеличения без заметной потери качества.

Imagener Professional Enlargement

Приложение обладает всеми возможностями версии Enhanced, а кроме того, в нем используется технология Kneson Progressive++ Enlargement Method, которая базируется на контентно-зависимой интерполяции, учитывающей сложность изображения. Программа позволяет выполнять более чем 300-процентное увеличение без визуально заметной потери качества.

Imagener Unlimited Enlargement

Данная версия обладает возможностями Imagener Enhanced и Imagener Professional, а кроме того, в ней применяется интерполяционная технология Kneson Unlimited++ Enlargement Method, которая сначала переводит растровое изображение в векторное, потом увеличивает его, что дает высокое качество, а затем обратно растеризует изображение в один из популярных форматов, например в JPEG, GIF или TIF (рис. 3).

Рис. 3. Пример работы программы Imagener Unlimited Enlargement

По данным разработчика, технология Imagener Unlimited разрабатывалась около десяти лет и в нее было инвестировано более 2,5 млн. долл. Имеется демо-версия.

Сравнительная характеристика версий программы Imagener приведена в табл. 1.

Скачать приложения можно по адресу: http://www.imagener.com/Download.html

Pxl SmartScale 1

Разработчик: Extensis, Inc.

Цена: 199,95 долл.

Платформа: Windows и Mac OS

Pxl SmartScale — одна из самых дорогих программ для интерполяции. Разработчики не раскрывают сути реализованных алгоритмов и лишь заявляют, что программа обеспечивает увеличение размеров до 1600% без видимого ухудшения качества (рис. 4). Среди полезных функций программы — предпросмотр, возможность контроля резкости и контраста результирующего изображения, кадрирование. Имеется 30-дневная ознакомительная версия.


увеличение размеров до 1600%
без видимого ухудшения качества

PhotoZoom Professional

Разработчик: Shortcut

Платформа: Windows и Mac OS

Цена: 129 евро

Многие фотографы сталкиваются с проблемой потери качества, возникающей при увеличении размера цифрового изображения. Побочными эффектами при этом являются расфокусировка изображения и зубчатые края, свойственные изображениям, которые были обработаны в одном из примитивных приложений для увеличения изображения. Shortcut PhotoZoom Professional (рис. 5) позволяет увеличивать цифровые изображения без возникновения вышеуказанных дефектов. Программа использует технологию S-Spline, которая основана на патентованном алгоритме оптимальной самонастраивающейся интерполяции (self-adjusting interpolation) (рис. 6).

Особенности программы:

  • усовершенствованный S-Spline-алгоритм;
  • инструменты настройки, позволяющие повысить качество изображения при увеличении;
  • пакетная обработка;
  • поддержка широкого спектра графических форматов;
  • автономное приложение или Adobe Photoshop-плагин;
  • бесплатная ознакомительная версия.

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

Resize Pro

Разработчик: Фред Миранда (Fred Miranda)

Платформа: Windows и Mac OS

Цена: 30 долл.

Resize Pro — это плагин для Photoshop, основанный на операции интерполяции. Суть алгоритма состоит в автоматическом выборе пикселов, которые в наибольшей степени отвечают за детали на изображении. Эти пикселы обрабатываются специальным образом. Данный алгоритм позволяет получить более детализированные и натурально выглядящие снимки как при увеличении, так и при уменьшении изображения.

При уменьшении размера Resize Pro обеспечивает максимально возможное качество, анализируя, информация от каких точек важна, а какими можно пренебречь.

При использовании данного плагина изображение не пострадает от посторонних эффектов типа ореола вокруг контрастных областей. Другая особенность программы — это высокая скорость работы. Resize Pro работает на базе Photoshop 6, 7, CS, CS2, Elements 1, 2 и 3.

Плагин для конкретной камеры (рис. 7) можно подобрать по адресу: http://www.fredmiranda.com/software .

Genuine Fractals

Разработчик: LizardTech, Inc.

Платформа: Windows

Цена: Genuine Fractals 4.0 — 159 долл.; Genuine Fractals PrintPro 4.0 — 299 долл.

Genuine Fractals от компании Lizard Technologies — популярный пакет для увеличения разрешения изображений (рис. 8). Реализованные в Genuine Fractals интерполяционные алгоритмы основаны на кодировании изображения методом IFS (Iterated functions system) 2 . Они позволяют растягивать отдельные фрагменты изображения с учетом их локальных геометрических характеристик и соответственно избегать дефектов интерполяции (зубцов, ореолов и т.п.).

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

В качестве плагина Photoshop Genuine Fractals добавляет к приложению Adobe Photoshop дополнительную функцию — разрешение по запросу (resolution on demand), то есть позволяет получать файлы разного разрешения из одного базового кода.

Программа обеспечивает возможность увеличения изображения до 600% без видимой потери качества.

Genuine Fractals PrintPro 4.0 поддерживает все цветовые модели, включая CMYK и CIE-Lab.

Функциональность демо-версии ограничена 12 файловыми операциями.

Сравнительная характеристика продуктов Genuine Fractals представлена в табл. 2.

2 Метод систем итерируемых функций (Iterated Functions System, IFS) появился в середине 80-х годов как простое средство получения фрактальных структур. IFS представляет собой систему функций из некоторого фиксированного класса функций, отображающих одно многомерное множество на другое.

Resize Magic

Разработчик: FSoft

Платформа: Windows

Цена: 24 евро

Photoshop-плагин Resize Magic позволяет не только увеличивать (рис. 9), но и уменьшать изображения. Нелицензированная программа вставляет в изображение метки.

Рис. 9. Изображение увеличено с 500x667
до 2800x3735 пикселов: слева — с помощью программы Adobe Photoshop, справа —
с помощью Resize Magic

Загрузить программу можно по адресу: http://www.fsoft.it/imaging/en/Download.htm .

Resize IT

Разработчик: Брайан Спэнглер (Brian Spangler)

Платформа: Windows

Цена: 25 долл.

Resize IT — это Adobe Photoshop-плагин, который работает со всеми приложениями, поддерживающими Adobe-совместимые плагины. Если вам необходимо увеличить 3-мегапиксельное изображение до 11 мегапикселов, то Resize IT предложит несколько интерполяционных алгоритмов, из которых можно будет выбрать оптимальный для конкретного случая. Приложение окажется полезным для профессиональных фотографов (рис. 10). Незарегистрированная версия позволяет обработать 15 изображений.

Inzoomnia

РРазработчик: Ларс Морман (Lars Mohrmann)

Платформа: Windows

Цена: 15 евро

Inzoomnia — это самая дешевая программа в данном обзоре. Приложение хорошо справляется с прямыми и скругленными линиями, но генерирует зазубрины в остроугольных элементах изображения (рис. 11). Имеется демонстрационная версия, в которой отсутствует возможность сохранения файлов.


и с помощью алгоритма Inzoomnia

Qimage

Разработчик: Digital Domain

Платформа: Windows

Цена: 45 долл.

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

Программа позволяет напечатать изображения с максимальным качеством, оптимально размещает несколько снимков на странице, благодаря чему экономится дорогостоящая фотобумага (рис. 12). Помимо интеллектуальных алгоритмов увеличения изображения имеются фильтры шума, удаление пятен, функции настройки яркости, контраста, резкости, вращения изображения, зеркального преобразования и т.д. Поддерживаются форматы JPEG, TIF, BMP, GIF, PCX, TGA, PCD, PNG, и NEF (Nikon D1 raw).

Pictura

Разработчик: Digital Multi Media Design

Платформа: Windows

Цена: проект пока не коммерциализован

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

Pictura основана на методе интерполяции AQua-2 (Adaptive Quadratic v.2), согласно которому для каждого из синтезируемых пикселов рассчитывается распределение вероятности значений цветовых компонентов, зависящее от локальных характеристик изображения.

Проект находится на стадии тестирования предварительной альфа-версии, участие в котором возможно с согласия авторов (размер установочного файла — 9 Mбайт).

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

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

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

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

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

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

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

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

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

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

Очевидно, что проблемы с масштабированием обусловлены самой структурой растровой графики.

Тем не менее, алгоритмы интерполяции совершенствуются, появляются новые продвинутые графические редакторы.

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

Пройдем на страницу официального сайта компании AKVIS Magnifier , выберем соответствующую редакцию и скачаем пробную версию приложения и плагина Akvis Magnifier для десятидневного ознакомления:


По приведенной ссылке скачается полнофункциональное ПО для 64-разрядной ОС Windows. В 32-разрядной винде максимальное увеличение стороны картинки ограничено 30000-ми пикселей - Magnifier v.9.1 Windows 32-bit :


После установки на рабочем столе появляется симпатичный ярлычок автономного приложения (standalone) в виде его логотипа:

Главным преимуществом Akvis Magnifier перед аналогами является качественное многократное увеличение изображения. Программа подбирает оптимальные алгоритмы в зависимости от степени масштабирования. Разработчики гарантируют наилучшее качество при увеличении стороны картинки до 300000 пикселей (для 64-разрядной Windows).

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

Знакомимся и осваиваем современный специализированный инструмент для масштабирования растровой графики.

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

Основы

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

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

Обзор неадаптивной интерполяции

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

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

*стандартный алгоритм интерполяции в Adobe Photoshop CS и CS2


Диаграмма качества справа приблизительно показывает зону действия каждого из алгоритмов. Метод ближайшего соседа наиболее подвержен ступенчатости, однако он, а также билинейный метод наименее подвержены граничным гало - они отличаются лишь различным балансом между ступенчатостью и размытием. Вы увидите, как резкость границы постепенно нарастает между вариациями бикубического метода (3-5), но достигаются они за счёт увеличения ступенчатости и граничных гало. Метод Ланцоша выдаёт результаты, очень похожие на бикубический и бикубический резкий в Фотошопе, за исключением, возможно, несколько большей ступенчатости. Все они показывают некоторую степень ступенчатости, хотя ступенчатость всегда можно полностью исключить, использовав размывание изображения (7).

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

Обзор адаптивных методов

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

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

Стандартный алгоритм в Adobe Photoshop CS и CS2
всё ещё в фазе исследований, недоступен публично

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

Shortcut PhotoZoom Pro (ранее S-Spline Pro) - это ещё один распространённый фотоувеличитель. При интерполяции каждого пикселя он принимает в расчёт множество окружающих пикселей и пытается воссоздать гладкую границу, которая проходит через все известные пиксели. Для восстановления границ он использует алгоритм сплайна, который аналогичным образом применяется производителями автомобилей при разработке новых плавных обводов для своих машин. У PhotoZoom есть несколько разновидностей настройки - каждая предназначена для своего типа изображения.

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

Примеры из жизни

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


Метод ближайшего соседа Бикубический Бикубический мягкий PhotoZoom Подлинные фракталы SmartEdge
С повышением резкости: бикубический бикубический мягкий PhotoZoom (стандартный) подлинные фракталы SmartEdge

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

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

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

Повышаем резкость увеличенных фото

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

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

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

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

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

Повышение резкости и дистанция просмотра

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

Плотность пикселей типичного дисплея колеблется в пределах 70-100 PPI, в зависимости от настройки разрешения и размеров экрана. Стандартное значение 72 PPI при использовании вышеприведенного калькулятора означает радиус маски 0.3 пикселя - это обычный радиус, который используют для изображений, публикуемых на сайтах. Иначе, печатное разрешение 300 PPI (стандартное для фотопринтеров) выдаст радиус маски порядка 1.2 пикселя (тоже типичный).

Когда интерполяция становится важна

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