opencv中的图像金字塔介绍

测试程序将在下篇博客中给出: 先大体介绍下图像金字塔
主要是了解图片的的缩放:
1.学习使用opencv的pyrUp和pyrDown,对图像进行向上向下采样,
2.了解专用于缩放图像尺寸的resize()函数的用法,两者的用法君一样,就是对图像进行缩放的操作。
图像金字塔是图像中多尺度表达的一种,最主要的是用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构,图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的,分辨率逐步降低,但来源于一幅图片,其通过梯度向下采样获得直到到达某个终止条件才停止采样。层级越高则图像越小,分辨率越低,
1.高斯金字塔:用来向下采样,主要的图像金字塔。
2.拉普拉斯金字塔:从底层向上采样,重建一个图像,对图像进行最大程度的还原,
对图像进行向上采样-pyrUp函数
对图像进行向下采样-pyrDown均是针对图像的尺寸来说的,向下就是尺寸减半,向上就是尺寸加倍注意不是互逆的,
pryUp图像首先在每个维度上扩大为原来的2倍,新增加的行(偶数行)用0来填充,然后给指定的滤波器进行卷积,(实际上是一个在每个维度上都扩大为原来的两倍的滤波器)去估计丢失像素的近似值

高斯金字塔:
1.对图像的向下取样:
为了获得层级为Gi+1的金字塔图像:1.对图像Gi进行高斯内核卷积
2.将所有的偶数的行和列都去除 就是缩小图像会丢失图像的信息 缩小图像变成原来图像的4分之1
2.对图像的向上取样:
1.将图像在每个方向上都扩大为原来的两倍新增加的行和列以0来填充
2.使用先前的内核(乘以4)与放大后的图像进行卷积获得新增像素的近似值
得到的图像就是放大后的图像,但是与原来的图像相比会比较模糊
图像金字塔非常重要的应用就是图像分割,图像分割的话先要建立一个图像金字塔,然后对层级关系建立起父与子的关系 分割–优化
3.尺寸调整:resize()函数是专门用来调整图像大小的函数

函数的原型:C++: void resize(InputArray src,OutputArray dst,size dsize,double fx=0,double fy=0,int interpolation=INTER_LINEAR)
第一个参数是输入图像
第二个参数是输出图像,其大小由dsize 或者用src.size()计算出来
第三个参数,Size类型的dsize,输出图像的大小为dsize=Size(round(fxsrc.cols),round(fxsrc.rows));其中dsize fx fy都不能为0
第四个参数:沿水平轴方向缩放的系数
第五个参数:沿垂直方向上缩放的系数
第六个参数用于指定插值得方式可选用的插值方式有:
1.INTER_NEAREST-最邻近插值
2.INTER_LINEAR-线性插值
3.INTER_AREA-区域插值
4.INTER_CUBIC-三次样条插值
5.INTER_LANCZOS4-Lanczos插值
缩小图像一般用INTER_AREA插值 放大图像一般用INTER_LINEAR线性插值的用法:
其中的缩放系数有时候可以不用列出来,系统会自动计算出来

猜你喜欢

转载自blog.csdn.net/nbxuwentao/article/details/86094389