Ближайший сосед — это широко используемый метод «фильтрации» для масштабирования пиксельной графики при отображении отдельных пикселей. Однако он плохо работает для масштабирования с неинтегральными коэффициентами. У меня возникла идея модификации, которая хорошо работает для неинтегральных коэффициентов, значительно превышающих исходный размер.
Ближайший сосед: для каждого выходного пикселя сэмплируйте исходное изображение в одном месте.
Линейный: для каждого выходного пикселя создайте градиент между двумя входными пикселями и сэмплируйте градиент.
Вместо этого я хочу рассчитать, какая часть исходного изображения будет отображаться в прямоугольник выходных пикселей, а затем вычислить средний цвет в этой области, смешивая входные пиксели в соответствии с их покрытием отображаемого прямоугольника.
Этот алгоритм даст те же результаты, что и суперсэмплинг с бесконечным числом выборок. Это не то же самое, что линейная фильтрация, поскольку она не создает градиенты, а только смешанные пиксели на границах входных пикселей выходного изображения.
Лучшее описание алгоритма находится по этой ссылке: Что такое лучший алгоритм уменьшения изображения (по качеству)? . Обратите внимание, что в URL-адресе упоминается уменьшение масштаба, которое потенциально может иметь более четырех пикселей на выходной пиксель. Однако масштабирование имеет максимум четыре входных пикселя на обрабатываемый выходной пиксель.
Есть ли какой-нибудь редактор изображений или утилита, поддерживающая средневзвешенное масштабирование?