Таким образом, я видел бикубические и фрактальные перечисленные в качестве методов масштабирования фотографий. Каковы технические детали того, как они работают, и почему / когда один лучше другого?
Во-первых, увеличение изображения включает в себя перемещение пикселей на фиксированную величину и заполнение пространства между ранее соседними пикселями с аналогичным содержанием. Это можно сделать с помощью базового изготовления пикселей (бикубическая фильтрация) или с помощью более сложных средств, таких как преобразование изображения в векторное представление и масштабирование в векторном пространстве.
Бикубическая фильтрация, наряду с билинейной фильтрацией, использует относительно простую функциональную кривую для смешивания цветов соседних пикселей при увеличении изображения. Bilinear использует кривую линейной функции, в то время как Bicubic использует кривую кубической сплайн-функции (cspline). Бикубическая фильтрация обычно дает более гладкие результаты, однако оба алгоритма в конечном итоге смешивают значения соседних пикселей вместе с помощью функциональной кривой, чтобы «заполнить пробелы» при увеличении изображения. Следует отметить, что бикубическое масштабирование, как правило, выполняется без потерь, поскольку в действительности создается только пространство между исходными пикселями. В зависимости от нюансов конкретных реализаций исходные пиксели могут незначительно изменяться, однако по большей части исходные данные сохраняются, а новые данные изготавливаются для заполнения при увеличении изображения.
Фрактальный подход к масштабированию изображения использует совершенно другой подход. Более сложные алгоритмы используются для анализа содержимого изображения, определения краев и «объектов» и, в конечном итоге, преобразования изображения в векторный формат фрактала. Как только изображение векторизовано, его можно масштабировать «без потерь» в векторном пространстве, а затем повторно визуализировать в большем размере. Алгоритмы фракталов, такие как «Подлинные фракталы», используют алгоритм векторных фракталов для масштабирования изображения, сохраняя при этом гладкие, острые края. Этот подход полезен, когда ваше изображение изначально имеет острые и узнаваемые края в качестве ключевого фактора, и важно поддерживать четкую резкость на этих краях.
Кроме того, «Подлинные фракталы» пытаются поддерживать некраевые детали с помощью концепции «самоподобия», сохраняя детали, считая контент изображения фрактальным по природе, и повторно визуализируя некраевой контент из фрактальных алгоритмов. Это предполагает предполагаемое преимущество, а не просто изготовление информации из соседних пикселей, новый контент может быть сгенерирован из шаблонов, состоящих из множества пикселей. Этот подход может прекрасно работать при увеличении масштаба примерно на 200%, однако фундаментальная векторная природа масштабирования становится более очевидной при масштабировании до больших размеров. Следует также отметить, что этот метод масштабирования не без потерь, и некоторые мелкие детали пикселей могут быть отброшены, когда алгоритм пытается найти фракталшаблоны, которые могут быть воспроизведены. Чрезвычайное масштабирование может привести к видимой репликации рисунка, а мелкие детали кромок могут быть стерты в попытке сохранить гладкие, острые кромки при любом размере изображения.
BenVista также предлагает собственный алгоритм S-Spline. Существует мало информации о специфике этого алгоритма, однако он похож на другой алгоритм, основанный на кривой функций. Масштабирование S-Spline Max в PhotoZoom Pro, как и Genuine Fractals, отлично справляется с поддержанием четкости границ. Этот алгоритм также способен масштабироваться примерно до 200% или около того, однако его продвижение намного дальше приводит к ухудшению и сглаживанию видимых не краевых деталей. Кажется, что общий компромисс в алгоритмах масштабирования - это либо определение максимального края, либо максимальное сохранение детализации. Следует также отметить, что большинство сторонних алгоритмов масштабирования, включая Genuine Fractals и BenVista PhotoZoom Pro, автоматически применяют нечеткую маску к конечному изображению по умолчанию.
Можно использовать бикубику итеративным способом. Основное значение бикубического масштабирования заключается в том, что оно производит больше информации, чем больше масштаб, тем выше стоимость резкости. Выполняя бикубическое масштабирование в 3-5%, вы сохраняете гораздо больше оригинальных или почти оригинальных деталей, и на каждом шаге изготавливаете намного меньше изображения. Окончательные результаты итеративного (или ступенчатого) бикубического масштабирования могут поддерживать значительно большее определение границ без потери мелких деталей. Однако затраты на масштабирование намного выше, чем личные, поскольку в настоящий момент нет готовых приложений, которые бы сделали это за вас. Вам нужно вручную вычислять новую ширину и высоту изображения на каждом шаге, умножая предыдущую ширину или высоту на ваш процент масштабирования и вставляя это число в вашу программу редактирования изображений. ' Инструмент бикубического масштабирования. Конечные результаты могут быть превосходными и такими же резкими, как бицибическое изображение с нечеткой маскировкой. Пределы масштабирования изображения без видимого ущерба намного больше, чем в других алгоритмах, по крайней мере, на 400%, а возможно, и больше.
Хм. Было бы довольно легко записать это итеративное бикубическое масштабирование в виде gimp-скрипта или действия в фотошопе ...
Пожалуйста, прочитайте Профиль
Я попробовал это как действие фотошопа, однако я не был успешным, так как это требовало вычислительной информации. Я не особо разбираюсь в сценариях с Photoshop, поэтому не уверен, поддерживает ли он математические функции или сценарии.
Йриста
2
+1 Вау, фантастический подробный ответ. Я думал, что это был скучный вопрос, пока я не прочитал ваш ответ.
fmark
Я только что протестировал многократное изменение размеров в Paint.net, но результаты были не такими, как указано в этом ответе, изображение изменялось несколько раз, в результате было получено настолько размытое изображение, что одно и то же изображение было изменено только один раз. Я пробовал с одним и тем же изображением изменять размер до 200% и повторять 104% каждый раз, пока не достиг примерно одинакового размера в пикселях.
Ответы:
Во-первых, увеличение изображения включает в себя перемещение пикселей на фиксированную величину и заполнение пространства между ранее соседними пикселями с аналогичным содержанием. Это можно сделать с помощью базового изготовления пикселей (бикубическая фильтрация) или с помощью более сложных средств, таких как преобразование изображения в векторное представление и масштабирование в векторном пространстве.
Бикубическая фильтрация, наряду с билинейной фильтрацией, использует относительно простую функциональную кривую для смешивания цветов соседних пикселей при увеличении изображения. Bilinear использует кривую линейной функции, в то время как Bicubic использует кривую кубической сплайн-функции (cspline). Бикубическая фильтрация обычно дает более гладкие результаты, однако оба алгоритма в конечном итоге смешивают значения соседних пикселей вместе с помощью функциональной кривой, чтобы «заполнить пробелы» при увеличении изображения. Следует отметить, что бикубическое масштабирование, как правило, выполняется без потерь, поскольку в действительности создается только пространство между исходными пикселями. В зависимости от нюансов конкретных реализаций исходные пиксели могут незначительно изменяться, однако по большей части исходные данные сохраняются, а новые данные изготавливаются для заполнения при увеличении изображения.
Фрактальный подход к масштабированию изображения использует совершенно другой подход. Более сложные алгоритмы используются для анализа содержимого изображения, определения краев и «объектов» и, в конечном итоге, преобразования изображения в векторный формат фрактала. Как только изображение векторизовано, его можно масштабировать «без потерь» в векторном пространстве, а затем повторно визуализировать в большем размере. Алгоритмы фракталов, такие как «Подлинные фракталы», используют алгоритм векторных фракталов для масштабирования изображения, сохраняя при этом гладкие, острые края. Этот подход полезен, когда ваше изображение изначально имеет острые и узнаваемые края в качестве ключевого фактора, и важно поддерживать четкую резкость на этих краях.
Кроме того, «Подлинные фракталы» пытаются поддерживать некраевые детали с помощью концепции «самоподобия», сохраняя детали, считая контент изображения фрактальным по природе, и повторно визуализируя некраевой контент из фрактальных алгоритмов. Это предполагает предполагаемое преимущество, а не просто изготовление информации из соседних пикселей, новый контент может быть сгенерирован из шаблонов, состоящих из множества пикселей. Этот подход может прекрасно работать при увеличении масштаба примерно на 200%, однако фундаментальная векторная природа масштабирования становится более очевидной при масштабировании до больших размеров. Следует также отметить, что этот метод масштабирования не без потерь, и некоторые мелкие детали пикселей могут быть отброшены, когда алгоритм пытается найти фракталшаблоны, которые могут быть воспроизведены. Чрезвычайное масштабирование может привести к видимой репликации рисунка, а мелкие детали кромок могут быть стерты в попытке сохранить гладкие, острые кромки при любом размере изображения.
BenVista также предлагает собственный алгоритм S-Spline. Существует мало информации о специфике этого алгоритма, однако он похож на другой алгоритм, основанный на кривой функций. Масштабирование S-Spline Max в PhotoZoom Pro, как и Genuine Fractals, отлично справляется с поддержанием четкости границ. Этот алгоритм также способен масштабироваться примерно до 200% или около того, однако его продвижение намного дальше приводит к ухудшению и сглаживанию видимых не краевых деталей. Кажется, что общий компромисс в алгоритмах масштабирования - это либо определение максимального края, либо максимальное сохранение детализации. Следует также отметить, что большинство сторонних алгоритмов масштабирования, включая Genuine Fractals и BenVista PhotoZoom Pro, автоматически применяют нечеткую маску к конечному изображению по умолчанию.
Можно использовать бикубику итеративным способом. Основное значение бикубического масштабирования заключается в том, что оно производит больше информации, чем больше масштаб, тем выше стоимость резкости. Выполняя бикубическое масштабирование в 3-5%, вы сохраняете гораздо больше оригинальных или почти оригинальных деталей, и на каждом шаге изготавливаете намного меньше изображения. Окончательные результаты итеративного (или ступенчатого) бикубического масштабирования могут поддерживать значительно большее определение границ без потери мелких деталей. Однако затраты на масштабирование намного выше, чем личные, поскольку в настоящий момент нет готовых приложений, которые бы сделали это за вас. Вам нужно вручную вычислять новую ширину и высоту изображения на каждом шаге, умножая предыдущую ширину или высоту на ваш процент масштабирования и вставляя это число в вашу программу редактирования изображений. ' Инструмент бикубического масштабирования. Конечные результаты могут быть превосходными и такими же резкими, как бицибическое изображение с нечеткой маскировкой. Пределы масштабирования изображения без видимого ущерба намного больше, чем в других алгоритмах, по крайней мере, на 400%, а возможно, и больше.
источник