用于图像缩小的算法是什么?

时间:2010-06-21 17:08:33

标签: c++ c image-processing resize downsize

用于图像缩小的算法是什么?

什么更快?

闪光和银色播放器以及html5等巨头的图像大小调整(例如从大600x600缩小到超小6x6)的算法是什么?

4 个答案:

答案 0 :(得分:8)

双线性是最广泛使用的方法,可以使其运行速度与最近邻的下采样算法一样快,这是最快但最不准确的。

天线实现双线性采样的问题在于,如果使用它来将图像缩小一半以上,那么您可能遇到类似于最近邻居所遇到的锯齿伪像。解决方案是使用基于金字塔的方法。基本上如果你想减少600x600到30x30,你首先减少到300x300,然后是150x150,然后是75x75,然后是38x38,然后才使用双线性减少到30x30。

当将图像缩小一半时,双线性采样算法变得更加简单。基本上对于每个交替的行和列像素:

y[i/2][j/2] = (x[i][j] + x[i+1][j] + x[i][j+1] + x[i+1][j+1]) / 4;

答案 1 :(得分:3)

有一个特殊情况:将JPG的缩小量减少8倍。可以对原始JPG数据进行8次重新缩放的直接因素,而不对其进行解压缩。 JPG存储为8x8像素的压缩块,首先是平均像素值。因此,从磁盘或网络读取文件通常需要花费更多时间来缩小它。

答案 2 :(得分:1)

通常我会坚持使用双线性滤波器来缩小比例。但是,要将图像调整为 tiny 尺寸,您可能会失败。大多数图标都是手工进行像素编辑,以使它们看起来最好。

Here是一个很好的资源,可以很好地解释这些概念。

答案 3 :(得分:1)

The Code Project中有一个很棒的article,显示了各种图像滤镜的效果。

为了缩小图像,我建议使用双三次算法;这具有自然的锐化效果,因此图像中的细节保留在较小的尺寸。