图像的上采样与下采样
Posted 哦...
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像的上采样与下采样相关的知识,希望对你有一定的参考价值。
上采样:
别名:放大图像,也叫图像插值。
目的:放大原图,从而可以显示在更高分辨率的显示设备上。
缺点:会对图像的质量造成影响,并没有带来更多的信息。
方法:
- 内插值。插值方法有很多,比如均值,中值,最近邻。通过这种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩。
- 反卷积。即通过转置卷积核的方法来实现卷积的逆过程。
- 反池化。在池化过程,比如max-pooling时,要记录下每个元素对应kernel中的坐标。反池化时即将每一个元素根据坐标填写,其余位置补0。
下采样:
别名:缩小图像,降采样
目的:
- 缩小原图,即生成对应图像的缩略图。
- 使图像符合对应的显示区域
- 降低特征的维度并保留有效信息,一定程度上避免过拟合,保持旋转、平移、伸缩不变形。
下采样的实现就是把一个位于原始图像上的s*s的“窗口”变成一个像素。原图若为x*y,则下采样之后原图的尺寸为(x/s)(y/s).这说明s最好是x和y的公约数。
在OpenCV中,向下采样使用的函数为pyrDown(),它会进行两步操作来完成对图像的下采样:
1.对图像进行高斯滤波。
2.删除所有的偶数行和列。
高斯滤波对图像进行加权平均(即与高斯内核卷积),每个像素点由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波并不会使图像大小发生变化,接下来删除图像中的偶数行和偶数列,第二步执行后,长和宽均变为原来的1/2,即生成的下采样图变为原图的四分之一。
OpenCV中,与pyrDown()相对的向上采样使用的函数为pyrUp()。
向上取样是由小图像不断放大成为大图像的过程。
- 为图像插入偶数行和偶数列,新增的行和列均用0来填充,这个操作后图像在每个方向上扩大为原图像的2倍,
- 使用与下采样时进行高斯模糊相同的高斯卷积核乘以4,用放大的卷积核与放大后的图像进行卷积运算,以获得“新增像素”的新值。
需要明确的是,上采用与下采样并不是一个互逆的过程。也就是说先进行下采样得到图像随后再进行上采样得到图与原图是存在差异的,下采样过程丢失的信息不能通过上采样来完全恢复,也就是说下采样是不可逆的。
高斯金字塔与拉普拉斯金字塔
高斯金字塔是以多个分辨率来表示图像的一种有效且概念简单的结构。
随着下采样的进行,图像的分辨率不断降低,视觉效果也越来越模糊。
假设G0表示原始图像,Gi表示第i次下采样得到的图像,那么高斯金字塔的计算过程可以表示为:
前面说过图片下采样后得到的小尺寸图片虽然保留了视觉效果,但是将该小尺寸图像再次上采样也不能完整的恢复出原始图像。
从示例的图片中可以看到Gi与Up(Down(Gi))之间的差异。
拉普拉斯金字塔就是记录高斯金字塔每一级下采样后再上采样与下采样前的差异,目的是为了尽量能够完整的恢复出每一层级的下采样前图像。如果用Li表示拉普拉斯金字塔第i级的内容,那么拉普拉斯金字塔的计算公式就是:
对于前文得到的高斯金字塔,现在可以构建对应的拉普拉斯金字塔如下(第1级为高斯金字塔中最小尺寸的图,也就是高斯金字塔最后1级;为了下图看起来更明显我进行了伽马矫正):
内容参考了:
以上是关于图像的上采样与下采样的主要内容,如果未能解决你的问题,请参考以下文章