1、前言
(1)图像金字塔的原理:
图像金字塔是图像多尺度表达。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔底部由大尺寸的原图组成,越往上层,尺寸越小,堆叠起来就是一个金字塔的形式。
(2)高斯图像金字塔的建立过程:
a.在本层图像上作高斯模糊平滑处理,得到平滑后的图像。
b.平滑后的图像中去除偶数行和列,图像高宽各缩小一半,得到图像只有本层图像上的四分之一大小。
c. 再进行a步的操作,直到达到条件终止。这个过程称为下采样。
(3)高斯差分
高斯差(英语:Difference of Gaussians,简称“DOG”)是一种将一个原始灰度图像的模糊图像从另一幅灰度图像进行增强的算法,通过DOG以降低模糊图像的模糊度。这个模糊图像是通过将原始灰度图像经过带有不同标准差的高斯核进行卷积得到的。用高斯核进行高斯模糊只能压制高频信息。从一幅图像中减去另一幅可以保持在两幅图像中所保持的频带中含有的空间信息。这样的话,DOG就相当于一个能够去除除了那些在原始图像中被保留下来的频率之外的所有其他频率信息的带通滤波器。
2、相关函数
(1)上采样
void pyrUp( InputArray src, OutputArray dst,const Size&dstsize = Size(), int borderType =BORDER_DEFAULT );
(2)下采样
void pyrDown( InputArray src, OutputArray dst,const Size& dstsize = Size(), int borderType =BORDER_DEFAULT );
(3)高斯模糊
void GaussianBlur( InputArray src, OutputArray dst, Size ksize,double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT );
(4)图像差值
void subtract(InputArray src1, InputArray src2, OutputArray dst,InputArray mask = noArray(), int dtype = -1);
3、程序源码
pyrUp(srcImg1, srcImgUp);
pyrDown(srcImg1, srcImgDown);
imshow("pyrUp", srcImgUp);// 显示
imshow("pyrDown", srcImgDown);// 显示
cvtColor(srcImg1, grayImg, CV_BGR2GRAY);
Mat gausImg1;
Mat gausImg2;
Mat gausDOGImg;
Mat gausDOGImga;
GaussianBlur(grayImg, gausImg1, Size(3,3), 0);
subtract(gausImg1, grayImg, gausDOGImg);
normalize(gausDOGImg, gausDOGImga, 255, 0, NORM_MINMAX);
imshow("GaussianDOG", gausDOGImga);
4、程序下载
本文源代码在Debug–x64下编译通过。
ZIP包中包含编译环境,下载后直接可编译。