首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像下采样算法

图像下采样算法
EN

Stack Overflow用户
提问于 2011-05-26 13:10:31
回答 6查看 27.4K关注 0票数 21

什么是最好的重新采样算法,我可以用来将图像分割为原始大小的一半。速度是最重要的,但它不应该降低质量太差。我基本上是在尝试生成一个图像金字塔。

我原本打算跳过像素。这是最好的方法吗?根据我所看到的,像素跳跃产生的图像太锐利了。有没有试过这个评论的人。我的图像包含的地图数据有点像this.

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-26 13:15:27

跳过像素将导致混叠,其中高频变化(如交替的亮/暗带)将转换为低频(如恒定的亮或暗)。

在没有锯齿的情况下将大小缩小到一半的最快方法是将2x2像素平均为单个像素。使用更复杂的归约内核可以获得更好的结果,但它们将以速度为代价。

以下是目前讨论的一些技术示例。

跳过其他像素-通过查看左侧的图例,您可以看到效果不是很好。它几乎是不可读的:

平均每2x2个网格-文本现在清晰可读:

R.建议的高斯模糊-有点模糊,但在一定程度上更具可读性。可以调整模糊量以产生不同的结果:

R.关于伽玛曲线影响结果的说法也是正确的,但这应该只在要求最苛刻的应用程序中可见。我的例子是在没有进行gamma校正的情况下完成的。

编辑:,这是一个更复杂但速度较慢的内核的示例,它是在线性(不是伽马调整的)颜色空间中执行的Lanczos-5

字体的对比度较低,可能是因为颜色空间的转换。但是看看海岸线的细节。

票数 35
EN

Stack Overflow用户

发布于 2011-05-26 22:57:37

对于缩小尺度,面积平均(参见Mark的答案)接近你能得到的最好结果。

另一个主要的竞争者是高斯,它的半径略大。这将增加一点模糊,这可能被视为一个缺点,但将使模糊更均匀,而不是依赖于像素mod 2的对齐。

如果不能立即明白我的意思,请考虑像素模式0,0,2,2,0,0和0,0,0,2,2,0。通过面积平均,它们将分别缩小到0,2,0和0,1,1 -也就是说,一个将是清晰和明亮的,而另一个将是模糊和暗淡的。使用较长的滤镜,两者都将变得模糊,但它们看起来更相似,这可能对人类观察者很重要。

另一个需要考虑的问题是gamma。除非gamma是线性的,否则强度k的两个像素的总强度将比强度2*k的单个像素小得多。如果您的过滤器执行足够的模糊,它可能不是那么重要,但对于普通的面积平均过滤器,它可能是一个主要问题。我所知道的唯一解决办法是在缩放之前和之后应用和反转gamma曲线。

票数 6
EN

Stack Overflow用户

发布于 2012-04-04 18:35:17

如果速度是一个问题,正如前面提到的,我建议使用2x2块,并计算平均值作为结果像素。质量不是所能达到的最好,而是接近。你可以挑起这个算法来展示它的弱点,但是在大多数图像上,你看不到有什么不同,可以证明多次更高的计算时间是合理的。你也没有任何内存开销。如果颜色分辨率可以降低到每通道6位,这里有一个非常快的方法可以防止你分解ARGB通道(这里假设32位ARGB):

代码语言:javascript
复制
destPixel[x,y] = ((sourcePixel[2*x  ,2*y  ]>>2)&0x3f3f3f3f) +
                 ((sourcePixel[2*x+1,2*y  ]>>2)&0x3f3f3f3f) +
                 ((sourcePixel[2*x  ,2*y+1]>>2)&0x3f3f3f3f) +
                 ((sourcePixel[2*x+1,2*y+1]>>2)&0x3f3f3f3f);

这个算法的副作用是,如果另存为PNG,文件大小会变小。它看起来是这样的:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6133957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档