1、高斯金字塔
构建图像的高斯金字塔是解决尺度不确定性的一种常用方法。高斯金字塔是指通过下采样不断的将图像的尺寸缩小,进而在金字塔中包含多个尺度的图像。高斯金字塔的最底层为图像的原图,每上一层就会通过下采样缩小一次图像的尺寸,通常情况尺寸会缩小为原来的一半,但是如果有特殊需求,缩小的尺寸也可以根据实际情况进行调整。
高斯金字塔原理图
Opencv中通常使用pyrDown()函数来完成
void cv::pyrDown(InputArray src,
OutputArray dst,
const Size & dstsize = Size(),
int borderType = BORDER_DEFAULT
)
src:输入待下采样的图像
dst:输出下采样后的图像,图像尺寸可以指定,但是数据类型和通道数与src相同
dstsize:输出图像尺寸,可以缺省
borderType:像素边界外推方法的标志
2、代码
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("C:/Opencv/1.bmp");
vector<Mat> Guass;
int level = 3;//高斯金字塔下采样次数
Guass.push_back(img);将原图作为高斯金字塔的第0层
//构建高斯金字塔
for (int i = 0;i < level; i++)
{
Mat guass;
pyrDown(Guass[i],guass);//下采样
Guass.push_back(guass);
}
//金字塔中的图像
for (int i = 0; i < level ; i++)
{
string name = to_string(i);
imshow(name, Guass[i]);
}
waitKey(0);
return 0;
}