OpenCV 图像上采样降采样,DoG

图像的上采样即为使图像的长和宽变为原来的两倍,同理降采样降为原来的一半。

高斯不同即为两个不同次数高斯模糊之间的差值图像

可用归一化显示增强高斯不同。归一化的效果好于通常的增强对比对。



#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

// 图像的上采样和降采样


// 图像金字塔

int main() {
    Mat src1, src2, gray_src, dst;
    src1 = imread("/Users/apple/Desktop/test.jpg", IMREAD_COLOR);
    //src2 = imread("/Users/apple/Desktop/test2.jpg", IMREAD_COLOR);
    if (src1.empty()) { // if (!src.data())
        cout << "could not load image..." << endl;
        return -1;
    }
    imshow("input", src1);
    
    // 上采样
//    pyrUp(src1, dst);
//    imshow("output up", dst);
    
    // 降采样
//    pyrDown(src1, dst);
//    imshow("output down", dst);
    
    Mat g1, g2, DoG_img;
    cvtColor(src1, gray_src, CV_BGR2GRAY);
    GaussianBlur(gray_src, g1, Size(3, 3), 0);
    GaussianBlur(g1, g2, Size(3, 3), 0);
    
    // DoG: difference of GaussianBlur 高斯不同
    subtract(g1, g2, DoG_img);
    
    // 归一化显示, 注意一定要写上NORM_MINMAX
    normalize(DoG_img, dst, 0, 255, NORM_MINMAX);
    imshow("DoG", dst);
    
    // 通常的增强对比度
    Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
    filter2D(DoG_img, dst, DoG_img.depth(), kernel);
    imshow("DoG_filter2d", dst);
    
    waitKey(0);
    
    return 0;
}



猜你喜欢

转载自blog.csdn.net/ringggr_h/article/details/80001647