码迷,mamicode.com
首页 > 其他好文 > 详细

图像金字塔及其在 OpenCV 中的应用范例(上)

时间:2014-09-01 14:01:13      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   os   io   strong   文件   

前言

  图像金字塔是计算机图形学中非常重要的一个概念。

  本文将详细介绍这个概念,以及它的实现与应用。

图像金字塔的定义

  图像金字塔是一组图像的集合,集合中的所有图像都是通过对某一图像连续降采样得到的一组图像序列。

  有两种经典的金字塔:高斯金字塔和拉普拉斯金字塔,前者采用向下采样,后者是向上采样需要的缺失的信息。

  向下采样(生成高斯金字塔)的具体操作为:

    1. 对图像进行高斯卷积

    2. 删除所有的偶数行和偶数列

  向上采样的缺失信息(生成拉普拉斯金字塔)的具体操作为:

    1. 首先将维数扩大两倍

    2. 将扩大位的值置为0

    3. 对新的图像进行高斯卷积

    4. 用新的层次的高斯金字塔减去 3 中形成的图像

采用 OpenCV 实现向下,向上采样

 1 // 此头文件包含图像IO函数的声明
 2 #include "highgui.h"
 3 // 此头文件包含基本的图像处理函数和高级计算机视觉算法
 4 #include "cv.h"
 5 #include <iostream>
 6 
 7 int main (void) {
 8 
 9     // 将D盘目录下名为" 1.jpg "的图像加载至内存并获得一个指向该图像内存块的指针img
10     IplImage * img = cvLoadImage ("D:\\1.jpg");
11 
12     // 创建一个窗口显示平滑处理前的图像
13     cvNamedWindow ("采样前", CV_WINDOW_AUTOSIZE);
14 
15     // 将图像装载进窗口并显示此窗口
16     cvShowImage ("采样前", img);
17 
18     // 创建两个新的图像内存块,以存放采样结果。
19     IplImage * up = cvCreateImage (
20         cvSize(2*img->width, 2*img->height),
21         img->depth,
22         img->nChannels
23     );
24     IplImage * down = cvCreateImage (
25         cvSize(img->width/2, img->height/2),
26         img->depth,
27         img->nChannels
28     );
29 
30     // 采样
31     cvPyrUp (img, up, IPL_GAUSSIAN_5x5);  
32     cvPyrDown (img, down, IPL_GAUSSIAN_5x5);  
33    
34 
35     // 创建窗口显示采样后的图像
36     cvNamedWindow ("向上采样", CV_WINDOW_AUTOSIZE);
37     cvNamedWindow ("向下采样", CV_WINDOW_AUTOSIZE);
38 
39     // 将图像装载进窗口并显示窗口
40     cvShowImage ("向上采样", up);
41     cvShowImage ("向下采样", down);
42 
43     // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
44     // 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
45     cvWaitKey (0);
46 
47     // 释放图像内存块
48     cvReleaseImage (&img);
49     cvReleaseImage (&up);
50     cvReleaseImage (&down);
51 
52     // 关闭窗口同时释放窗口内存块
53     cvDestroyWindow ("采样前");
54     cvDestroyWindow ("向上采样");
55     cvDestroyWindow ("向下采样");
56 
57     return 0;
58 }

运行结果

  bubuko.com,布布扣bubuko.com,布布扣

小结

  下篇,将讲解图像金字塔的一个经典应用 - 图像分割。

  

图像金字塔及其在 OpenCV 中的应用范例(上)

标签:des   style   blog   http   color   os   io   strong   文件   

原文地址:http://www.cnblogs.com/scut-fm/p/3949084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!