帮助pixelate算法背后的理论?

时间:2010-10-28 20:43:56

标签: colors theory rgb pixel

所以说我有一个想要“像素化”的图像。我希望这个清晰的图像由100×100格的网格表示。因此,如果原始照片为500 px X 500 px,则每个正方形为5 px X 5 px。所以每个方块的颜色都对应于它交换的5像素×5像素像素组...

我如何弄清楚这一种颜色最能代表它涵盖的东西是什么?我只是为25个像素中的每个像素取R G和B数并取平均值吗?或者我应该知道一些不起眼的其他方式?什么是“像素化”功能中常用的,比如说在photoshop中?

2 个答案:

答案 0 :(得分:12)

如果您想了解像素化的“理论”,请阅读重新采样(特别是下采样)。像素化算法简单地对图像进行下采样(使用一些下采样方法),然后使用nearest-neighbour interpolation对其进行上采样。请注意,在代码中,这两个步骤可以合并为一个。

对于一般的下采样,要按照 n 因子进行下采样,首先通过适当的低通滤波器对图像进行滤波,然后从每个 n 中取出一个样本。被采取。要使用的“理想”过滤器是sinc filter,但由于实现它的问题,Lanczos filter通常用作近距离替代。

但是,对于像素化时的几乎所有目的,使用简单的box blur应该可以正常工作,并且实现起来非常简单。这只是附近像素的平均值。

如果您不需要更改图像的输出大小,那么这意味着您将图像划分为块(大的结果像素) k × k 像素,然后将每个块中的所有像素替换为该块中像素的平均值。

答案 1 :(得分:1)

当源网格和目标网格如此均匀可分,并且对齐时,大多数算法都会给出类似的结果。如果网格是固定的,那就选择简单的平均值。

在其他情况下,特别是在调整一小部分时,质量差异非常明显。对简单平均值的最简单增强是考虑目标像素区域中包含多少像素值来加权每个像素值。

了解更多算法,请检查multivariate interpolation