Какие алгоритмы использовать для уменьшения размера изображения?



Какие алгоритмы использовать для уменьшения размера изображения?



Что быстрее?



Какой алгоритм используется для изменения размера изображения (например, с большого 600x600 до супер малого 6x6) такими гигантами, как flash и silver player, а также html5?

825   4  

4 ответов:

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

Проблема с наивной реализацией билинейной выборки состоит в том, что если вы используете ее для уменьшения изображения более чем наполовину, то вы можете столкнуться с артефактами сглаживания, подобными тому, что вы встретили бы с ближайшим соседом. Решение этой проблемы заключается в использовании подхода, основанного на пирамиде. В основном, если вы хотите уменьшить 600x600 до 30x30, вы сначала уменьшаете до 300x300, затем 150x150, затем 75x75, затем 38x38, и только затем используете билинейное сокращение до 30x30.

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

y[i/2][j/2] = (x[i][j] + x[i+1][j] + x[i][j+1] + x[i+1][j+1]) / 4;

Есть один частный случай: уменьшение размера JPG более чем в 8 раз. Прямое масштабирование с коэффициентом 8 можно выполнить на необработанных JPG-данных, не распаковывая их. JPG-файлы хранятся в виде сжатых блоков размером 8x8 пикселей, причем сначала указывается среднее значение пикселя. В результате чтение файла с диска или из сети обычно занимает больше времени, чем его масштабирование.

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

Здесь - Хороший ресурс, который довольно хорошо объясняет понятия.

Есть отличная Статья в проекте кода, показывающая эффекты различных фильтров изображений.

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

Comments

    Ничего не найдено.