opencv(7)图像金字塔

图像金字塔是图像中多尺度表达的一种,也是很常见的,最主要用于图像的分割。opencv中给出了图像金字塔的一些列函数,再谈openv之前先介绍下高斯金字塔和拉普拉斯金字塔

1 高斯金字塔和拉普拉斯金字塔

(1)高斯金字塔是通过高斯平滑和亚采样获得一些列下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截至频率从上一层到下一层是以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。金字塔的图像如下:

2       4   

                           高斯金字塔                                                                        拉普拉斯金字塔

(2)拉普拉斯金字塔包含了一些列的带通滤波器,其具体过程如下:

4

可以看出,拉普拉丝图像的形成过程大致为对原图像进行低通滤波和降采样得到一个粗尺度的近似图像, 即分解得到的低通近似图像, 把这个近似图像经过插值、滤波, 再计算它和原图像的差值, 就得到分解的带通分量。下一级分解是在得到的低通近似图像上进行, 迭代完成多尺度分解。可以看出拉普拉斯金字塔的分解过程(如图1所示)包括四个步骤: 1低通滤波;2降采样(缩小尺寸); 3内插(放大尺寸); 4带通滤波(图像相减) 。拉普拉斯图像突出图像中的高频分量,注意的是拉普拉斯金字塔的最后一层是低通滤波图像,不是带通滤波图像。

(3)源图像的重建

源图像的重建是构建拉普拉斯金字塔的逆过程,首先将第K层的高斯图像 插值放大一倍,然后和第K-1层拉普拉斯金字塔相加就可以得到第K-1层的高斯金字塔图像。以此类推,就可以得到源图像。

2.opencv函数

(1)PyrDown 构建高斯金字塔

cvPyrDown函数

(2)PyrUp(获取的不是高斯金字塔的图像哦)

cvPyrUp
7 PyrUp处理结果

PyrDown和PyrUp过程并不是逆过程,opencv中PyrDown可以构建高斯金字塔,但是PyrUp函数得到的并不是拉普拉斯图像,《learning opencv》中解释说PyrUp函数实现的函数为:1 实际上,我利用这个函数得到的图像是一个经过低通滤波的图像,可以看下图:dst明显是src图像的一个高斯滤波。而并不是带通图像。也就是说PyrUp函数其实只是实现了6 过程,查看源代码确实如此。

构建拉普拉斯金字塔就可以将高斯金字塔减去响应的PyrUp处理结果即可,我写了一个例子验证这个结果:

构建拉普拉斯金字塔
处理过程图像以及结果                             

8

L0中包含很明显的高频信息,并不是低通结果,L金字塔剩下的构建以此类推。


关于金字塔的分割回头和其他的分割算法一起学习吧

原文地址:https://www.cnblogs.com/zsb517/p/2543739.html