高斯金字塔
高斯金子塔是从底向上,逐层降采样得到。
降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。
高斯金子塔是从底向上,逐层降采样得到。
降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。
高斯金子塔的生成过程分为两步:
1- 对当前层进行高斯模糊
2- 删除当前层的偶数行与列
即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。
高斯不同(DOG)
把同一张图像在不同参数下做高斯模糊之后结果相减,得到的输出图像称为高斯不同。
在灰度图像增强、角点检测中经常用到
相关API
上采样pyrUp(src, dst, Size(width, height))
降采样pyrUp(src, dst, Size(width, height))
减法操作subtract(src1, src2, dst, mask = noArray, int dtype = -1)
代码展示
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat src, up;
src = imread("F:/Opencvlearn/picture/line.png");
if (src.empty())
{
cout << "could not load image..." << endl;
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
//上采样
pyrUp(src, up, Size(src.cols * 2, src.rows * 2));
imshow("up", up);
//降采样
Mat down;
pyrDown(src, down, Size(src.cols / 2, src.rows / 2));
imshow("down", down);
//高斯不同DOG
Mat gray, g1, g2;
cvtColor(src, gray, COLOR_BGR2GRAY);
GaussianBlur(gray, g1, Size(3, 3), 0, 0);
GaussianBlur(g1, g2, Size(3, 3), 0, 0);
Mat dog;
subtract(g1, g2, dog, Mat());
imshow("output", dog);
//归一化显示
normalize(dog, dog, 255, 0, NORM_MINMAX);
imshow("output", dog);
waitKey(0);
return 0;
}