Я хочу выяснить, какой алгоритм является лучшим, который можно использовать для уменьшения растровой картинки. Под лучшим я подразумеваю тот, который дает самые привлекательные результаты. Я знаю бикубов, но есть ли что-то лучше? Например, я слышал от некоторых людей, что у Adobe Lightroom есть какой-то запатентованный алгоритм, который дает лучшие результаты, чем стандартная бикуба, которую я использовал. К сожалению, я сам хотел бы использовать этот алгоритм в своем программном обеспечении, поэтому тщательно охраняемые коммерческие секреты Adobe не сработают.
Добавлено:
Я проверил Paint.NET, и, к моему удивлению, кажется, что Super Sampling лучше, чем бикубический, при уменьшении размера изображения. Это заставляет меня задаться вопросом, являются ли алгоритмы интерполяции подходящим способом.
Это также напомнило мне алгоритм, который я «изобрел» сам, но никогда не реализовывал. Я предполагаю, что у этого также есть имя (поскольку кое-что это тривиальное не может быть идеей меня одного), но я не мог найти это среди популярных. Super Sampling был самым близким.
Идея такова - для каждого пикселя на целевом изображении рассчитайте, где он будет на исходном изображении. Это, вероятно, наложит один или несколько других пикселей. Тогда можно будет рассчитать площади и цвета этих пикселей. Затем, чтобы получить цвет целевого пикселя, нужно просто вычислить среднее значение этих цветов, добавив их области в качестве «весов». Таким образом, если целевой пиксель будет покрывать 1/3 желтого исходного пикселя и 1/4 зеленого исходного пикселя, я получу (1/3 * желтый + 1/4 * зеленый) / (1/3 + 1/4).
Это, естественно, было бы вычислительно интенсивным, но оно должно быть как можно ближе к идеалу, не так ли?
Есть ли название для этого алгоритма?