一. 图像金字塔
一个图像金字塔式一系列的图像组成,最底下的图形尺寸最大,最上方的图像尺寸最小。 高斯金字塔是从底向上,逐层降采样得到的。 高斯金字塔的生成过程分为两步:
- 对当前层进行高斯模糊。
- 删除当前层的偶数行与列。
- 即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。
二. 上采样与降采样
降采样之后的图像大小是原图像M × N 的 M/2 × N/2,就是对原图像删除偶数行与列,即得到降采样之后的上一层的图片。
- 上采样(cv::pyrUp)-zoom in 放大,生成的图像是原图的宽和高各放大两倍
pyrUp(Mat src, Mat dst, Size(src.cols*2, src.rows*2))
- 降采样(cv::pyrDown)-zoom out 缩小,生成的图像是原图的宽和高各缩小两倍。
pyrDown(Mat src, Mat dst, Size(src.cols/2, src/rows/2))
三. 高斯不同(Difference of Gaussian-DOG)
定义 :就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像。成为高斯不同。高斯不同是图像的内在特征,在灰度图像增强,角点检测中经常用到。
下面是代码:
/*****图像金字塔*****//*上采样,降采样*/#include#includeusing namespace std;int main() { cv::Mat src, dst; src = cv::imread("1.jpg"); cv::namedWindow("input image", cv::WINDOW_NORMAL); cv::imshow("input image", src); cv::pyrUp(src, dst, cv::Size(src.cols * 2, src.rows * 2)); cv::namedWindow("up image", cv::WINDOW_NORMAL); cv::imshow("up image", dst); cv::Mat s_down; cv::pyrDown(src, s_down, cv::Size(src.cols / 2, src.rows / 2)); cv::namedWindow("down image", cv::WINDOW_NORMAL); cv::imshow("down image", s_down); //DOG cv::Mat gray_src, g1, g2, dogImg; cv::cvtColor(src, gray_src, cv::COLOR_BayerBG2GRAY); //两次 高斯模糊 cv::GaussianBlur(gray_src, g1, cv::Size(3, 3), 0, 0); cv::GaussianBlur(g1, g2, cv::Size(3, 3), 0); //高斯模糊的结果相减 cv::subtract(g1, g2, dogImg, cv::Mat()); //将DOG的显示效果归一化到0-255范围内,更加明显 cv::normalize(dogImg, dogImg, 255, 0, cv::NORM_MINMAX); cv::namedWindow("DOG Image", cv::WINDOW_NORMAL); cv::imshow("DOG Image", dogImg); cv::waitKey(0); return 0;}
![15a5c64d7db3896d7c8cba33709d2569.png](https://i-blog.csdnimg.cn/blog_migrate/604c9cad8cc4992ac84c71a770a2fa1d.jpeg)
关注同名公众号【计算机视觉与深度学习】,获取海量计算机视觉与深度学习资源,实战项目源码,最新论文下载,大厂面试经验!!!