|
Увеличиваем
число пикселов в изображении Для качественной полиграфической печати разрешение должно быть равно 300 dpi. Это означает, что для получения качественной фотографии размером 10 х 15 см (4 х 6 дюймов) необходимо располагать цифровым изображением 1200 х 1800 пикселов. Это в идеале. На практике же часто возникает желание и/или необходимость на основе имеющегося числа пикселов напечатать изображение большего формата. В некоторых случаях задача решается очень просто. Величина 300 dpi предполагает, что изображение будет рассматриваться с минимального расстояния комфортного восприятия (ок. 25 см), то есть зритель будет держать картинку в руках. Если же картинка будет значительно удалена от зрителя, то величину 300 dpi можно смело уменьшить. Так, например, нет никакого смысла печатать уличный рекламный плакат с разрешением 300 dpi. Для такого случая вполне подойдет существенно меньшее разрешение. А как все же быть в тех случаях, когда расстояние просмотра невелико, а формат печати надо увеличить? Выход только один увеличить число пикселов в изображении. При этом, конечно же, не стоит рассчитывать на то, что в изображении появятся более мелкие детали. Увеличение числа пикселов преследует совсем другие цели. В общих чертах, требуется так раздвинуть исходные пиксели и заполнить образовавшиеся пустоты между ними, чтобы:
Откуда взять недостающие пикселы? Увеличить
число пикселов в изображении можно с помощью практически любого графического
редактора. Для этого надо воспользоваться функцией, которая чаще всего
носит одно из следующих названий: Image Size, Resize, Resample и т.п. Посмотрим, к каким результатам приводит применение популярных алгоритмов. Возьмем в качестве исходного изображения простой квадрат размером 3 х 3 пиксела (см. рисунок ниже). Увеличим его линейные размеры в два раза. Площадь нового квадрата (6 х 6 пикселов) возрастет в четыре раза. На каждый исходный пиксел теперь будет приходится четыре пиксела (три новых + один исходный). Если мы просто выкрасим все три новых пиксела в цвет базового пиксела (а именно это и происходит при выполнении функций типа RESIZE:RESAMPLE:NEAREST NEIGHBOUR, и т.п.), то это будет равнозначно увеличению размера пиксела. В этом случае плавные линии контуров на изображении приобретут заметную «ступенчатость». Плавность тональных переходов тоже будет нарушена. В общем, это не самый хороший выход из положения, если мы не предполагаем увеличение дистанции просмотра. Значительно улучшить увеличенное изображение позволяют различные математические алгоритмы интерполяции (сложные преобразования, входящие в группу RESAMPLE). Самый простой из них вычисляет цвет промежуточного пиксела как среднее арифметическое цветов соседних базовых пикселов.
Рассмотрим,
к чему приводит применение более сложных алгоритмов на нашем простейшем
примере. Применение простейшей «бикубической интерполяции» (Bicubic Resample/Adobe®Photoshop®), позволяет окрасить новые пиксели в промежуточные цвета и сохранить при этом на приемлемом уровне контурную резкость. Как видно из вышеприведенного рисунка, фильтры Mitchel и B-Spline, имеющиеся в бесплатной программе Irfan View, позволяют добиться большей плавности промежуточных полутонов ценой значительного уменьшения контурной резкости. Неплохого компромисса можно достичь с помощью фильтра Lanczos (фильтр Ланцоша), входящего в ту же самую бесплатную программу. Применение этого фильтра часто позволяет сохранить резкость линий при сохранении достаточной гладкости тональных переходов. Оригинальный результат получается при использовании модуля Genuine Fractals (платный plug-in для Adobe® Photoshop®). С одной стороны, для нашего примера применение этого фильтра нарушило осевую симметрию исходного блока пикселов (все остальные рассматриваемые фильтры симметрию сохранили). С другой стороны, разработчики этого инструмента явно по-своему подошли к вышеупомянутой альтернативе «резкость линий плавность переходов». Категорические выводы делать, я полагаю, неуместно. Однако вполне допускаю, что этот оригинальный подход может спасти ситуацию в некоторых случаях.
Мини-тестирование на основе реального изображения Посмотрим, какого результата можно достичь, если применить рассматриваемые алгоритмы к реальному фотографическому изображению. Для тестирования я выбрал фрагмент фотографии, на котором показан фрагмент крыши одного очень известного здания. На нем присутствуют и протяженные прямые линии, идущие под разными углами, и довольно мелкие архитектурные детали, и довольно большой фрагмент богатого оттенками неба. Перед тем как приступить к тестированию я уменьшил линейные размеры фрагмента в два раза. Затем я попробовал восстановить фотографию до исходного размера с помощью упомянутых выше фильтров. Результаты тестирования можно увидеть на приведенных ниже фотографиях. (Mitchel Filter дает практически такой же результат, что и B-Spline Filter, поэтому для экономии места я решил ограничиться демонстрацией работы только одного из них.) Правее исходного изображения (Original) помещена фотография, полученная с помощью простейшего алгоритма интерполяции (Resize). Как и ожидалось, на наклонных линиях появились характерные зазубрины-ступеньки. Однако, если вы посмотрите на экран своего компьютера с расстояния 2 м (примерно), то изображение, полученное даже таким незамысловатым способом, уже не будет казаться столь несовершенным. Иными словами, мне еще раз хочется подчеркнуть, что даже простейший алгоритм интерполяции цвета пикселов дает вполне приемлемый результат, если предполагается увеличение дистанции между изображением и зрителем. Во втором ряду приведены изображения, полученные с помощью «бикубической интерполяции» и фильтра B-Spline. Как и ожидалось, фильтр B-Spline чрезмерно размывает резкие линии, поэтому его трудно рекомендовать для изображений с четко выраженными контурами. Бикубическая интерполяция вполне прилично справилась с поставленной задачей. Пропавшие детали она, конечно, не восстановила, но зазубрины с наклонных линий убрала удовлетворительно. К плавности тональных переходов серьезных претензий предъявить также нельзя. В последнем ряду приведены результаты работы фильтра Ланцоша (Lanczos Filter) и программного модуля Genuine Fractals. На мой взгляд, оба эти алгоритма хорошо справились с поставленной задачей. Однако, я полагаю, гораздо интересней получить ответ на вопрос: насколько они лучше простейшей бикубической интерполяции? На мой взгляд, каждый должен ответить на этот вопрос самостоятельно. В конце концов, только вам решать, каким инструментом пользоваться, а каким нет. Данный мини-тест, конечно же, не претендует на то, чтобы быть источником всеобъемлющей информации. Поэтому сформулированные ниже рекомендации следует рассматривать лишь как повод для самостоятельных размышлений, а не истину в конечной инстанции.
|
|
|
© Игорь Ефремов, 2003, все права сохранены Для
использования материалов этого сайта в коммерческих или некоммерческих
целях необходимо получить от меня письменное разрешение, если обратное
не оговорено в явной форме. |