图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码

这篇具有很好参考价值的文章主要介绍了图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图像金字塔是对图像进行多分辨率表示的一种有效且简单的结构。
一个图像金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像。图像金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率表示。

图像金字塔有什么作用?
图像金字塔常用于图像缩放、图像重构、图像融合、图像增强技术中。
这里说下图像金字塔在图像融合技术中的应用:多分辨率塔式图像融合算法是现在较为常用的图像融合方法。在这类算法中,原图像被层层滤波和缩小,形成一个塔状结构。在塔的每一层都用一种融合算法对这一层的数据进行融合,从而得到一个经算法处理后的塔式结构,然后对处理后的塔式结构进行重构,从而得到合成图像。
另外,图像金字塔可以将原图像分别分解到不同的空间频带上,这样就可以针对不同分解层的不同频带上的特征与细节,采用不同的算子以达到更有针对性的算法优化处理。

高斯金字塔和拉普拉斯金字塔是最常见的两种图像金字塔。

下面详细介绍高斯金字塔和拉普拉斯金字塔。

高斯金字塔
高斯金字塔是指通过高斯模糊滤波和下采样不断地将图像的尺寸缩小,进而在金字塔中包含多个分辨率的一组图像。高斯金字塔的形式如下图所示:
图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
一般情况下,高斯金字塔的最底层为原图像,每向上一层就会通过高斯模糊滤波+下采样缩小一次图像的尺寸。
通常情况下,图像的长与宽会缩小为原来的一半,由于每次图像的长与宽都缩小为原来的一半,图像的缩小速度非常快,因此常见的高斯金字塔的层数为3~6。

在OpenCV中提供了函数pyrDown(),用于生成图像的上一层高斯金字塔。
函数pyrDown()的原型如下:

void cv::pyrDown(InputArray src,
                 OutputArray dst,
                 const Size & dstsize = Size(),
                 int borderType = BORDER_DEFAULT )

函数pyrDown()的参数意义如下:
src—输入图像
dst—输出图像,它的宽度和高度大致为src的1/2 ,具体精确的大小由第三个参数dstsize决定。
dstsize—目标图像的大小,默认值为Size((src.cols+1)/2, (src.rows+1)/2),自己指定时需要满足以下条件。
图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
bordertype—做高斯滤波时的边界扩展标志。关于边界扩展的详细介绍可参见下面这篇博文:
https://www.hhai.cc/thread-178-1-1.html
使用函数pyrDown()生成上一层高斯金字塔包含两个过程,即高斯核卷积(用于实现高斯模糊滤波)和下采样两个过程。
G n G_{n} Gn表示第n层高斯金字塔的图像,则 G 0 G_{0} G0表示高斯金字塔的最底层,这一层实际上就是原图像。为了得到 G n + 1 G_{n+1} Gn+1,首先需要对 G n G_{n} Gn进行高斯核卷积,即做高斯低通滤波,然后删除所有的偶数行和偶数列(这是一种下采样操作),从而得到 G n + 1 G_{n+1} Gn+1
函数pyrDown()使用的高斯核如下:
图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
提问:为什么高斯金字塔在下采样操作之前要先进行高斯低通滤波。
答:这样做既能保证高斯金字塔低通处理的性质,又能对图像进行平滑,使下采样得到的图像不至于出现边界缝隙。
总结一下:图像高斯金字塔的上一层是对下一层进行低通滤波后再进行隔行隔列采样得到的。上一层图像的大小约为下一层图像的1/4。

拉普拉斯金字塔
拉普拉斯金字塔实际上是为了实现高斯金字塔的图像重建而存在的。它是在高斯金字塔的基础上生成的。拉普拉斯金字塔是高斯金字塔与其上一层通过上采样扩大后的差值图像,这里的上采样一般采用插值的方式进行。

昊虹君在网上找到了一幅示意图,很形象具体地解释了拉普拉斯金字塔是怎么回事,
这幅示意图请大家访问本博文的原文查看,
本博文的原文链接:

https://www.hhai.cc/thread-198-1-1.html

从上面昊虹君找到的那幅示意图我们可以清晰地看出:第n层拉普拉斯图像实际上是第n层高斯图像与第n+1层高斯图像经上采样后的差值,由于高斯滤波器是一种低通滤波器,所以我们可以说某一级的拉普拉斯金字塔可以反映出其同级的高斯金字塔的高频分量。有些文献把拉普拉斯金字塔反映其同级高斯金字塔的高频分量的性质称为拉普拉斯金字塔的预测残差作用。

从上面拉普拉斯图像的生成过程我们可以看出,在利用高斯金字塔生成拉普拉斯金字塔的过程中,假设高斯金字塔为N层,则在计算第N层的拉普拉斯金字塔时我们还要额外计算出第N+1层的高斯金字塔才能进而计算出第N层的拉普拉斯金字塔。

OpenCV提供了函数pyrUp()用于帮助计算出拉普拉斯金字塔。通过它可以把第n层的高斯金字塔图像进行上采样后再进行高斯卷积模糊滤波操作。
OpenCV官方文档中对其功能的描述如下:
The function performs the upsampling step of the Gaussian pyramid construction, though it can actually be used to construct the Laplacian pyramid. First, it upsamples the source image by injecting even zero rows and columns and then convolves the result with the same kernel as in pyrDown multiplied by 4
从上面的描述中我们可知,函数pyrUp()的上采样操作是均匀地隔行隔列加0值。上采样完成之后用下面这个卷积核进行高斯卷积模糊滤波操作。
图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
请注意:上面这个卷积核与函数pyrDown()的卷积核有所不同,具体是函数pyrDown()高斯卷积核需要乘以四才得到函数pyrUp()的卷积核,至于为什么要这样做,博主昊虹君目前没有搞清楚,猜想应该是与其上采样时隔行隔列插0值有关。知道原因的朋友可以与昊虹君说一说,先谢谢了。

函数pyrDown()的的原型如下:

void cv::pyrUp(InputArray src,
               OutputArray dst,
               const Size & dstsize = Size(),
               int borderType = BORDER_DEFAULT )

各参数的意义和函数pyrDown()的一样,这里就不再赘述了。

这里要特别注意:函数pyrDown()的dst参数中得到的并不是拉普拉斯金字塔图像。
如果要得到拉普拉斯金字塔图像,还需要按下面的公式进行运算。
L n L_{n} Ln表示第n层拉普拉斯金字塔, G n G_{n} Gn表示第n层高斯金字塔,则有:

L n = G n − P y r u p ( G n + 1 ) L_{n}=G_{n}-Pyrup(G_{n+1}) Ln=GnPyrup(Gn+1)

显然我们可以利用下面的公式重构第n层高斯金字塔图像:
G n ′ = L n + P y r u p ( G n + 1 ) G_{n}^{'} =L_{n}+Pyrup(G_{n+1}) Gn=Ln+Pyrup(Gn+1)

接下来上基于Python-OpenCV的示例代码,
该示例代码是对函数pyrDown()和pyrUp()的综合使用,
该示例代码先对图像进行高斯金字塔下采样处理,
再利用某一层的拉普拉普金字塔和高斯金字塔还原上一层图像。
代码写了详细的注释,大家应该能够很容易理解。

具体的代码请大家访问本博文的原文获取,
本博文的原文链接:

https://www.hhai.cc/thread-198-1-1.html

代码运行结果如下图所示:
图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
从上面的结果中我们可以看出,利用某一层的高斯金字塔和拉普拉斯金字塔重构出的图像与原图相比在细节上(高频分量上)并没有多少缺失。文章来源地址https://www.toymoban.com/news/detail-440524.html

到了这里,关于图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像处理之LoG算子(高斯拉普拉斯)

    LoG算子是由拉普拉斯算子改进而来。拉普拉斯算子是二阶导数算子,是一个标量,具有线性、位移不变性,其传函在频域空间的原点为0。所有经过拉普拉斯算子滤波的图像具有零平均灰度。但是该算子的缺点是对噪声具有敏感性,因此在实际应用中,一般先要对图像进行平滑

    2024年02月16日
    浏览(47)
  • OpenCV(十六):高斯图像金字塔

    目录 1.高斯图像金字塔原理 2.高斯图像金字塔实现 1.高斯图像金字塔原理 高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级,每个层级都是原始图像的模糊和降采样版本。 以下是高斯图

    2024年02月09日
    浏览(43)
  • opencv基础45-图像金字塔01-高斯金字塔cv2.pyrDown()

    图像金字塔(Image Pyramid)是一种用于多尺度图像处理和分析的技术,它通过构建一系列不同分辨率的图像,从而使得图像可以在不同尺度下进行处理和分析。图像金字塔在计算机视觉、图像处理和计算机图形学等领域中广泛应用,可以用于目标检测、特征提取、图像匹配、尺

    2024年02月13日
    浏览(50)
  • 机器视觉技术与应用实战(平均、高斯、水平prewitt、垂直prewitt、水平Sobel、垂直Sobel、拉普拉斯算子、锐化、中值滤波)

         扯一点题外话,这一个月经历了太多,接连感染了甲流、乙流,人都快烧没了,乙流最为严重,烧了一个星期的38-39度,咳嗽咳到虚脱。还是需要保护好身体,感觉身体扛不住几次连续发烧!(甲流乙流是病毒,提前准备好奥司他韦,这个是阻断病毒复制的药,48小时内

    2024年01月21日
    浏览(57)
  • 学习笔记:Opencv实现拉普拉斯图像锐化算法

    2023.8.19 为了在暑假内实现深度学习的进阶学习,Copy大神的代码,记录学习日常 图像锐化的百科: 图像锐化算法-sharpen_lemonHe_的博客-CSDN博客 在环境配置中要配置opencv: pip install opencv-contrib-python Code and lena.png:注意你是否在data下由lena.png   附上lena.png  效果所示(解读):

    2024年02月12日
    浏览(48)
  • 使用 OpenCV 进行图像模糊度检测(拉普拉斯方差方法)

    工作中遇到,简单整理 人脸识别中,对于模糊程度较高的图像数据,识别率低,错误率高。 虽然使用 AdaFace 模型,对 低质量人脸 表现尤为突出。 但是还是需要对 模糊程度高的图像进行丢弃处理 当前通过 阈值分类 ,符合要求的进行特性提取 实际应用中,可以维护一个 质

    2024年02月15日
    浏览(77)
  • Python实现多种图像锐化方法:拉普拉斯算子和Sobel算子

    图像和视频逐渐成为人们生活中信息获取的重要来源,而图像和视频在传输过程中有很多因素可能造成图像模糊,比如不正确的聚焦会产生离焦模糊,景物和照相机的相对运动会造成运动模糊,图像压缩造成的高频成分丢失模糊。 模糊降低了图像的清晰度,严重影响了图像质

    2024年02月04日
    浏览(55)
  • OV5640 摄像头的图像拉普拉斯锐化处理和边缘提取

    如图所示,这是整个视频采集系统的原理框图。         上电初始,FPGA 需要通过 IIC 接口对 CMOS Sensor 进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的 FPGA 片内 ROM中。在初始化配置完成后,CMOS Sensor 就能够持续

    2024年02月01日
    浏览(56)
  • 图像金字塔

    图像金字塔 简单来说就是 自下而上图像一步一步缩小 1 高斯金字塔(涉及高斯分布) 向下采样(缩小,对金字塔来说是自下向上) 第一步: 高斯滤波去噪 第二部:将偶数行和列去掉 向上采样(放大,对金字塔来说是自上向下) 第一步:在每个方向上扩大两倍,新增的行和

    2023年04月22日
    浏览(46)
  • OpenCv之图像金字塔

    目录 一、图像金字塔介绍  二、高斯金字塔 三、拉普拉斯金字塔 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔是同一图像不同分辨率的子图集合。 图像金字塔的作用: 图像金

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包