使用像素值,如何将图像大小减小到任意分数(比如 0.8 或 0.7 或 0.6 倍)?

Using pixel values, how to reduce image size to an arbitrary fraction (say 0.8 or 0.7 or 0.6 times)?

我正在尝试通过操纵像素值来修改图像的投影。

为此,我需要将图像不同部分的尺寸缩小不同的分数。

例如,如果图像宽度为 1000 像素,我可能需要将最终图像中的像素数 600 - 800(200 像素)减少到 150 像素,而像素数 800 - 1000(200 像素)到最终图像中的 100 像素。

对于第二种情况(将200个像素减少到100个像素),我可以一次取2个像素的平均值来得到最终图像中的一个像素。但是第一个怎么办(缩小200像素到150像素)?

非常感谢您的宝贵时间。

可以通过以下方式获得质量相当好的下采样:

在原始图像的宽 x 高网格(可用分辨率)上叠加宽 x 高网格(所需分辨率)。

一个低分辨率单元与多个高分辨率单元重叠,您可以根据交叉点的面积估计单元的颜色作为加权平均值(见图) .

在缩小系数为 0.5 的情况下,您确实最终得到 2x2 像素平均值。如果因子介于 0.5 和 1 之间,则重叠四个像素,加权平均值对应于双线性插值。对于较小的因素,涉及更多的像素。


最后的注释:

该转换是可分离的,这意味着您可以分两次实现它,首先是水平方向,W x H 到 w x H,然后是垂直方向,w x H 到 w x h。这简化了实施。

使用这些原则,您甚至可以通过考虑相应的网格来使用连续可变的缩减系数。