zoukankan      html  css  js  c++  java
  • OpenCV-C++ 图像上采样和降采样

    图像金字塔是由一系列图像组成的,最底层图像的尺寸最大,最上层图像的尺寸最小;

    有两种类型的金字塔:

    • 高斯金字塔: 用于下采样;
    • 拉普拉斯金字塔: 用于重建一张图片,利用上层的降采样图像进行恢复;

    图像金字塔中包含两种操作,分别是上采样操作和降采样操作;

    具体来看OpenCV中有关pyrUppyrDown的使用;

    图像上采样

    用于放大图像;

    OpenCV中的pyrUp的使用:

    // 图像上采样
    Mat srcUp;
    pyrUp(src, srcUp, Size(src.cols*2, src.rows*2));
    

    图像降采样

    用于缩小图像;

    OpenCV中的pyrDown的使用:

    // 图像降采样
    Mat srcDown;
    pyrDown(src, srcDown, Size(src.cols/2, src.rows/2));
    

    高斯不同(Difference of Gaussian, DOG)

    高斯不同(Different of Gaussian-DOG)

    • 定义: 就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像,称为高斯不同(DOG);
    • 高斯不同是图像图像的内在特征,在灰度图像增强, 角点检测中经常用到;
    Mat srcGray, g1, g2, dogImg;
    
    // 将RGB图像转换称Gray图像
    cvtColor(src, srcGray, COLOR_BGR2GRAY);
    
    // 高斯不同(Difference of Gaussian, DOG)
    GaussianBlur(srcGray, g1, Size(5, 5), 0, 0);
    GaussianBlur(g1, g2, Size(5, 5), 0, 0);
    subtract(g1, g2, dogImg, Mat());
    // 归一化显示
    normalize(dogImg, dogImg, 255, 0, NORM_MINMAX); 
    

    另外,有关subtractAPI的使用:

    void subtract(InputArray src1, InputArray src2, OutputArray dst,
                  InputArray mask = noArray(), int dtype = -1);
    

    该方法用于计算两个数组或者数组与标量之间的差;

    • src1表示第一个数组或者标量
    • src2表示第二个数组或者标量
    • dst表示输出,与输入数组的维度和通道数目一致;
    • mask可选,一个8-bit单通道数组,用于指定要更改的输出数组的元素;

    上面的API等同于:

    dst = src1 - src2;
    dst -= src1; // equivalent to subtract(dst, src1, dst);
    

    Reference:

  • 相关阅读:
    Luogu2751 [USACO Training4.2]工序安排Job Processing
    BZOJ4653: [Noi2016]区间
    BZOJ1537: [POI2005]Aut- The Bus
    CF1041F Ray in the tube
    POJ1186 方程的解数
    Luogu2578 [ZJOI2005]九数码游戏
    BZOJ2216: [Poi2011]Lightning Conductor
    CF865D Buy Low Sell High
    BZOJ1577: [Usaco2009 Feb]庙会捷运Fair Shuttle
    几类区间覆盖
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/14645173.html
Copyright © 2011-2022 走看看