Если вы хотите узнать о «теории» пикселизации, ознакомьтесь с передискретизацией (и, в частности, понижающей).Алгоритмы пикселизации просто понижают частоту дискретизации изображения (используя некоторый метод понижающей дискретизации), а затем повышают частоту дискретизации, используя интерполяция ближайших соседей .Обратите внимание, что в коде эти два шага могут быть объединены в один.
Для понижающей дискретизации в целом, для понижающей дискретизации с коэффициентом n изображение сначала фильтруется соответствующим фильтром нижних частот,и затем берется один образец из каждого n .«Идеальным» фильтром для использования является sinc filter , но из-за проблем с его реализацией Lanczos filter часто используется как близкая альтернатива.
Однако, для почти всех целей при выполнении пикселизации, использование простого box blur должно работать нормально и очень просто для реализации.Это всего лишь среднее из ближайших пикселей.
Если вам не нужно изменять выходной размер изображения, то это означает, что вы делите изображение на блоки (большие результирующие пиксели), которые равны k × k пикселей, а затем замените все пиксели в каждом блоке на среднее значение пикселей в этом блоке.