opencv 图像金字塔

    xiaoxiao2022-07-01  107

    将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低 图像金字塔有两种:高斯金字塔和拉普拉斯金字塔。 高斯金字塔用于下采样,从下到上,逐层降采样。 高斯金字塔(下采样)实现需两步: (1)对当前层进行高斯模糊 (2)删除当前层的偶数行和偶数列。 下采样会使得图片质量下降,就是图片缩小,使用PryDown函数。 上采样使用PryUp函数 上、下采样都存在一个严重的问题,那就是图像变模糊了,因为缩放的过程中发生了信息丢失的问题。

    高斯不同(Difference of Gaussian–DOG) 同一图像在不同参数下做奥斯模糊后的结果相减。通常在灰度图像增强和角点检测中应用。 以下实例中,做了高斯不同之后,看得不太清楚,因此又做了一个归一化。

    #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main(int argc,char** argv) { Mat src, dst; src = imread("d:/02.png"); if (src.empty()) { cout << "not load..." << endl; return -1; } namedWindow("input", WINDOW_AUTOSIZE); namedWindow("output", WINDOW_AUTOSIZE); imshow("input", src); //pyrUp(src, dst, Size(src.cols * 2, src.rows * 2));//上采样 pyrDown(src, dst, Size(src.cols / 2, src.rows / 2));//下采样 imshow("output", dst); //高斯模糊,高斯不同DOG Mat gray_src, m1, m2,dogimg; cvtColor(src, gray_src, CV_BGR2GRAY); GaussianBlur(gray_src, m1, Size(3, 3), 0, 0);//高斯模糊 GaussianBlur(m1, m2, Size(3, 3), 0, 0);//再次高斯模糊 subtract(m1, m2, dogimg, Mat());//两幅图相减 normalize(dogimg, dogimg, 255, 0, NORM_MINMAX);//归一化 imshow("dog", dogimg); waitKey(0); return 0; }
    最新回复(0)