在图像处理中常常会调整图像的大小,最常见的就是图像的放大和缩小,将图像想金字塔一样变成分辨力不同的一系列图像,最底层的图像尺寸最大,最顶层的尺寸最小,从空间上看,就像一个古代的金字塔。
高斯金字塔是从底向上,逐层降采样。
降采样图像大小是原图像长和宽的1/2,就是对原图像的偶数行或奇数行进行删除,即得到降采样之后的上一层图像。
高斯金字塔的生成过程分为两步:
1、对当前图像进行高斯模糊
2、删除当前层的偶数行与列
上一层与下一层相比,大小只有1/4。
高斯滤波模板:
116⎡⎣⎢⎢⎢⎢⎢⎢1 4 6 4 141624164624362464162416414641⎤⎦⎥⎥⎥⎥⎥⎥
高斯不同:就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像,成为高斯不同(DOG)。高斯不同使图像的内在特征,在灰度图像增强、角点检测中经常使用。
CV_EXPORTS_W void pyrUp( InputArray src, OutputArray dst,
const Size& dstsize = Size(), int borderType = BORDER_DEFAULT );
CV_EXPORTS_W void pyrDown( InputArray src, OutputArray dst,
const Size& dstsize = Size(), int borderType = BORDER_DEFAULT );
参数src:输入图像
参数dst:输出图像
参数dstsize:输出图像的尺寸
pyrUp(src, dstup, Size(src.cols * 2, src.rows * 2));
pyrDown(src, dstDown, Size(src.cols / 2, src.rows / 2));
高斯不同,提取轮廓
GaussianBlur(gray_src, g1, Size(3, 3), 0, 0);
GaussianBlur(g1, g2, Size(3, 3), 0, 0);
subtract(g1, g2, dogImg, Mat());
//归一化显示
normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);