Какие алгоритмы использовать для уменьшения изображения?
-
28-09-2019 - |
Вопрос
Какие алгоритмы использовать для уменьшения изображения?
Что быстрее?
Какой алгоритм выполняется для размера изображений (специально сокращается от Big 600x600, чтобы Super Small 6x6, например) такими гигантами как Flash и Silver Player, и HTML5?
Решение
Билинеар является наиболее широко используемым методом и может быть сделан для запуска как быстрее, так как ближайший соседний алгоритм отбора проб, который является самым быстрым, но наименее точным.
Беда с наивной реализацией билинейной выборки заключается в том, что если вы используете его, чтобы уменьшить изображение более чем в половине, вы можете столкнуться с азриазямингами артефактов, похожих на то, что вы столкнулись с ближайшим соседом. Решением этого является использование подхода на основе пирамиды. В основном, если вы хотите уменьшить 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 вкратце может быть проведен на данных RAW JPG, не разлагая его. JPG хранятся как сжатые блоки 8x8 пикселей, со средним значением пикселей первым. В результате его обычно требуется больше времени, чтобы прочитать файл с диска или сеть, чем его добраться.
Обычно я бы придерживался билинейной фильтра для масштабирования. Для изменения размера изображений к крошечный Размеры, хотя, вы можете быть удачи. Большинство значков являются пиксель, отредактированные вручную, чтобы они выглядели лучше всего.
Здесь Это хороший ресурс, который объясняет концепции довольно хорошо.
Есть отличный статья В проекте кода показывая эффекты различных изображений фильтров.
Для сокращения изображения я предлагаю бикубический алгоритм; Это имеет естественный эффект заточки, поэтому деталь на изображении сохраняется при меньших размерах.