Прямой ответ заключается в том, что в конечном итоге вы этого не сделаете. В очень многих случаях это сводится к вопросу вкуса. Три человека, которые рассматривают уменьшенные версии определенного изображения, могут (и часто будут) иметь три разных мнения о том, какой из них лучше. Самое лучшее, что вы можете сделать, - это выбрать, какие функции изображения вы считаете важными, и выбрать метод, основанный на этом.
Например, ближайший сосед довольно хорошо справляется с поддержанием острых краев на линиях - гораздо больше, чем большинство методов интерполяции. В то же время, при применении к вещам, которые должны выглядеть «гладкими» (например, чистое голубое небо), он может создавать артефакты, которые выглядят скорее как края.
Обратное также верно: интерполяция может помочь сгладить градиенты, но также имеет тенденцию «сглаживать» то, что должно быть острыми краями. Если вы зайдете слишком далеко, мелкие детали могут быть полностью уничтожены.
Большинство лучших методов в некоторой степени адаптивны. Значительно упрощая, они оценивают, насколько «резкими» градиенты содержат исходные данные, и пытаются поддерживать примерно такой же уровень сглаживания / резкости, который присутствует в оригинале. Адаптация обычно выполняется путем сканирования изображения в блоках и применения адаптации на блочной основе.
Например, если у вас есть пейзаж с ясным голубым небом и деревьями с множеством мелких деталей (ветки, листья и т. Д.), То к ветвям будет применено гораздо меньшее сглаживание, чем к небу.
Однако существуют различные способы оценки градиентов, ни один из которых не является идеальным, и различные размеры окон, ни один из которых не является идеальным для всех изображений. Это оставляет место для значительной разницы даже между адаптивными алгоритмами.