0021-用OpenCV的pyrUp和pyrDown函数计算图像金字塔(向上/下采样)

图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,通过对原始图像进行连续采样得到图像集合。
常见的有两种图像金字塔,即高斯金字塔和拉普拉斯金字塔。
高斯金字塔:向下降采样图像。金字塔从i层生成第i+1层,先用高斯核对Gi进行卷积,然后,删除所有偶数行和偶数列。这样,新得到的图像面积会变为源图像的四分之一。循环上述过程,即可产生整个金字塔。
拉普拉斯金字塔:从低层图像中向上采样重建图像。图像首先在每个维度上扩大为原来的两倍,新增的行以0填充,然后与指定的滤波器进行卷积(实际上是一个在每一维度上都扩大为2倍的过滤器)去估计“丢失”像素的近似值。得到后的图像与原来的图像相比会模糊一些,丢失了一些信息。
在OpenCV中给了两个函数,pyrUp和pyrDown函数分别用于实现拉普拉斯金字塔和高斯金字塔的上采样和下采样
使用示例代码如下
代码中用到的图像下载链接:http://pan.baidu.com/s/1bQSvls 密码:dlil
图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!
 

//opencv版本:OpenCV3.0
//VS版本:VS2013
//Author:qxsf321.net

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>    
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>

#include <iostream>

using namespace cv;
using namespace std;

//全局变量    
Mat src, dst, tmp;
char* window_name = "pyrDown and pyrUp Demo";

int main(int argc, char** argv)
{

        //测试图像  
        src = imread("jin_dong.jpg");
        if (!src.data)
        {
                printf(" No data! -- Exiting the program \n");
                return -1;
        }

        tmp = src;
        dst = tmp;

        //创建显示窗口    
        namedWindow(window_name, CV_WINDOW_AUTOSIZE);
        imshow(window_name, dst);

        //循环    
        while (true)
        {
                int c;
                c = waitKey(10);

                if ((char)c == 27)
                {
                        break;
                }
                if ((char)c == 'u')
                {
                        pyrUp(tmp, dst, Size(tmp.cols * 2, tmp.rows * 2));
                        printf("pryUp : Image x 2 \n");
                }
                else if ((char)c == 'd')
                {
                        pyrDown(tmp, dst, Size(tmp.cols / 2, tmp.rows / 2));
                        printf("pyrDown : Image / 2 \n");
                }

                imshow(window_name, dst);
                tmp = dst;
        }
        return 0;
}


代码说明
程序运行后,按“u”键则会对图像进行一次“上采样”处理,并显示结果;按“d”键则会对图像进行一次“下采样”处理,并显示结果。按“Esc”键退出程序。
运行结果我录成了视频,大家可以看一看。
视频在线播放地址(注意可以选择高清版哦):http://v.youku.com/v_show/id_XMz ... j.8428770.3416059.1
视频文件下载链接:http://pan.baidu.com/s/1o7IwxUa 密码:vmul

猜你喜欢

转载自blog.csdn.net/lehuoziyuan/article/details/84101264
今日推荐