OpenCV之图像处理(十四) 图像金字塔-上采样与降采样

当要对一张图像做特征分析的时候,需要先将该图像进行金字塔上采样与降采样,得到不同分辨率的图像,然后在不同的尺度空间上做特征分析

图像金字塔概念     可以应用在图像的融合,重建,特征提取等很多方面
    1. 我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔
    2. 一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。
上采样:当前图像分辨率从图像金字塔的低分辨率到高分辨率采样,得到的是一个更高分辨率的图像
降采样:当前图像分辨率从图像金字塔的高分辨率到低分辨率采样,得到的是一个更低分辨率的图像
高斯金子塔 – 用来对图像进行降采样
    高斯金子塔是从底向上,逐层降采样得到。
    降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。
    高斯金子塔的生成过程分为两步:
        - 对当前层进行高斯模糊
        - 删除当前层的偶数行与列
    即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。
拉普拉斯金字塔 – 用来重建一张图片根据它的上层降采样图片(上采样)。与降采样类似,是按两倍生成一层级图像

高斯不同(Difference of Gaussian-DOG) (高斯分差)  高斯不同是图像的内在特征,在灰度图像增强、角点检测中经常用到。
    定义:就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像。称为高斯不同(DOG)   对应的还有拉普拉斯不同

代码

    #include "../common/common.hpp"

    void main(int argc, char** argv)
    {
        Mat src, dst1, dst2, gray, g1, g2, dogImg, g3, dogImg2, dogImg3;
        src = imread(getCVImagesPath("images/cat.jpg"), IMREAD_COLOR);
        imshow("src", src);

        pyrUp(src, dst1, Size(src.cols * 2, src.rows * 2));//上采样,生成的图像是原图在宽与高各放大两倍
        imshow("pyrUp", dst1);

        pyrDown(src, dst2, Size(src.cols / 2, src.rows / 2));//降采样,生成的图像是原图在宽与高各缩小1/2
        imshow("pyrDown", dst2);

        //高斯不同
        cvtColor(src, gray, COLOR_BGR2GRAY);
        GaussianBlur(gray, g1, Size(3, 3), 0, 0);
        GaussianBlur(g1, g2, Size(3, 3), 0, 0);//方式一
        subtract(g1, g2, dogImg, Mat());//获取 DOG ,应该要低的g1减高的g2
        //将灰度图的0-255空间,转换到0-1空间(二值空间),让原本淡淡的图像变得清楚了
        normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);//参数:255最大值,0最小值,NORM_MINMAX 最大最小化
        imshow("dogImg", dogImg);//能看到淡淡的猫的眼睛的轮廓
        GaussianBlur(gray, g3, Size(5, 5), 0, 0);
        subtract(g1, g3, dogImg2, Mat());//方式二
        normalize(dogImg2, dogImg2, 255, 0, NORM_MINMAX);
        imshow("dogImg2", dogImg2);//也能看到淡淡的猫的眼睛的轮廓

        subtract(g2, g1, dogImg3, Mat());//高减低的
        normalize(dogImg3, dogImg3, 255, 0, NORM_MINMAX);
        imshow("dogImg3", dogImg3);

        waitKey(0);
    }

效果图

这里写图片描述

猜你喜欢

转载自blog.csdn.net/huanghuangjin/article/details/80958983