Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

Свертки с бикубическим фильтром (в ImageMagick он называется catrom)








The Best Filter?Для увеличения изображений рекомендуют Mitchell, для уменьшения подойдет любой их оконных (по умолчанию Lanzos), если есть много мелких «узоров». Если же «узоров» нет, зато есть прямы границы, то лучше Гаусс с повышением резкости либо Mitchell, чтобы избежать сильного звона.
That is something you will need to work out yourself. Often however it depends on what type of image and resizing you are doing.
For enlarging images 'Mitchell' is probably about the best filter you can use, while basically any of the Windowed Filters (default is 'Lanczos') are good for shrinking images, especially when some type of low level pattern is involved. However if you have no patterns, but lots of straight edges (such as GIF transparency), you may be better off using sharpened Gaussian Filter or again a 'Mitchell', so as to avoid strong ringing effects.
The 'Lagrange' filter is also quite good, especially with a larger Filter Support Setting, for shrinking images.
For those interested I recommend you look at the IM User Discussion topic a way to compare image quality after a resize? which basically shows that their is no way of quantitatively determining «The Best Filter», only a qualitative or subjective «Best Filter».
The choice is yours, and choice is a key feature of ImageMagick.
И вообще почему бы изображение не хранить как набор коофициентов полинома. Можно формировать изображение нужного размера уже при открытии файла
Наверное, сравнивать алгоритмы имеет смысл при изменении размера изображения не только в 2 раза, но и на несколько процентов.
Представление об алгоритмах на базе свёртки как о медленных, уже не совсем верно. Ресайз на GPU может быть быстрее во много раз
Ядро Ланцоша там полифазное, т. е. коэффициенты ядра зависят от смещения нового пиксела по отношению к старой сетке.А бывает по другому? Честно, не встречал.
Я например использую реализацию, которая ресайзит 5120×2880 в 2048×1152 с фильтром Ланцоша за 150 ms на одном ядре процессора, т.е. делает это со скоростью 98 мегапикселей в секунду, и хорошо параллелится на все ядра сервера.

Ликбез: методы ресайза изображений