学习Opencv——图像金字塔

来源:互联网 发布:数据安全策略 编辑:程序博客网 时间:2024/06/06 12:14

    以多个分辨率来表示图像的一种有效且概念简单的结构是图像金字塔,一个图像金字塔是一系列以金子塔形状排列的、分辨率逐渐降低的图像集合。——《数字图像处理》。

        1.基本概念

         图像金字塔由Adelson于1984年提出[1],图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止采样。

      常用两类图像金塔:

      1)高斯金字塔(Gaussian pyramid)用来向下降采样图像。

      2)拉普拉斯金字塔(Laplacian pyramid)用来从金字塔低层图像中向上采样重建一个图像。在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。

      2.高斯金字塔

 

       要从金字塔第 i 层生成第 i+1 层(Gi+1)先用高斯核对Gi 进行卷积,然后删除所有偶数行和偶数列。当然,新得到的图像面积会变为源图像的四分之一。迭代这个过程就可以产生整个金字塔。

     OpenCV为我们提供了从上一级图像降采样生成下一级图像的方法: void cvPyrDown(src, dst, filter)  cvPyrDown()是一个会丢失图像信息的函数。

     3.拉普拉斯金字塔

      为了恢复原来(更高的分辨率)的图像,我们需要获得由降采样操作丢失的信息,这些数据形成了拉普拉斯金字塔。拉普拉斯金字塔的第i层的数学定义,

      Li = Gi - UP(Gi+1) * G5X5

     UP()操作将原始图像中位置为(x, y)的像素映射到目标图像的(2x+1, 2y+1)位置; * 代表卷积操作,G5X5为高斯核。图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充,然后用指定的滤波器(滤波器所有元素的和被规范化为4,而不是1)进行卷积去估计"丢失"像素的近似值。

      OpenCV提供了函数: void cvPyrUp(src, dst, filter),  可用于实现上述拉普拉斯运算:  Li = Gi -cvPyrUp(Gi+1) 。 

      注意: 函数cvPyrUp()并不是函数cvPyrDown()的逆操作 

      高斯金字塔和拉普拉斯金字塔如图1所示,这也显示了从小图恢复原始图像这个逆过程。

     

                                     图1 : 高斯金字塔及其逆形式 ——拉普拉斯金字塔

      4.图像金字塔用于分割图像

      有很多操作广泛使用图像金字塔,一个重要的应用是利用图像金字塔实现图像分割。图像分割需要先建立一个图像金字塔,然后直接依照Gi的像素和Gi+1的像素对应关系,建立起“父-子”关系。通过这种方式,快速初始分割可以先在金字塔高层的低分辨率图像上完成,然后逐层对分割加以优化。OpenCV的函数cvPyrSegmentation()实现了该算法(可参考 B.Jaehene的论文[2])。


[1]  E. H. Adelson, C. H. Adelson, J. R. Bergen et al.. Pyramid methods in image processing[J]. RCA Engineer, 1984, 29(6): 33~41

[2]  B. Jaehene, Digital image processing, 3rd ed. , Berlin: Springer-Verlage, 1995.

      H. J. Antonisse Image segmentation in pyramids” Computer Graphics anImage Processing 19(1982): 367–383.


部分内容摘自: http://blog.csdn.net/chenjiazhou12/article/details/21466685     

 

0 0