图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割。
是一种以多分辨率来解释图像的有效但概念简单的结构。
图像金字塔的底部是待处理图像的高分辨率表示,顶部是低分辨率的近似
我们将一层一层的图像比喻成金字塔,层次越高,则图像越小,分辨率越低。
一般情况下有两种类型的图像金字塔常常出现在文献以及实际运用中。
高斯金字塔(Gaussianpyramid)--用来向下采样,主要的图像金字塔
拉普拉斯金字塔(Laplacianpyramid)--用来从金字塔的底层图像重建上层未采样的图像
两者的简要区别在于:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔
底层图像中向上采样,重建一个图像。
对图像向上采样---pyrUp
对图像向下采样--pyrDown
需要注意的是,pyrUp与pyrDown不是互逆的。
对图像的向下采样
1.对图像进行高斯内核卷积
2.将所有偶数行和列去除
对图像的向上采样
1.将图像在每个方向扩大为原来的两倍 新增的行和列以0填充
2.使用先前同样的内核(乘以4)与放大后的图像卷积,获得“新增元素”的近似值
得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊
Mat Img2, Img3;
resize(Img1, Img2,Size(Img1.cols*2,Img1.rows*2), (0.0),(0.0) , INTER_LINEAR);
/*
INTER_NEAREST = 0,
INTER_LINEAR = 1, //速度较快,效率较高 推荐放大图片时使用
INTER_CUBIC = 2,
INTER_AREA = 3,// 推荐缩小图片时使用
INTER_LANCZOS4 = 4,
*/
resize(Img1, Img3, Size(Img1.cols/2, Img1.rows/2), (0.0), (0.0),2);
也可以直接使用pyrUp和pyrDown
pyrUp(Img1, Img2);
pyrDown(Img1, Img3);
/*CV_EXPORTS_W void pyrUp( InputArray src, OutputArray dst,
const Size& dstsize = Size(), int borderType = BORDER_DEFAULT );
第三个参数Size up是默认是增加一倍 down是减少一倍
第四个参数是边缘的类型 选择默认即可
*/