当前位置:   article > 正文

图像金字塔(高斯与拉普拉斯)_图像 拉普拉斯金字塔 公式

图像 拉普拉斯金字塔 公式

目录

一、图像金字塔的作用

1、图像缩放

2、图像分割

二、采样

1、下采样pyrDown()

2、上采样pyrUp()

三、高斯金字塔

 1、高斯金字塔过程

2、构建图像的高斯金字塔 

四、拉普拉斯金字塔

 1、拉普拉斯金字塔的数学定义

2、构建图像的拉普拉斯金字塔

五、图像复原 

1、原图像的复原公式


一、图像金字塔的作用

1、图像缩放

用于机器视觉和图像压缩,一副较大的图像可以通过梯次向下采样(删除偶数行/列的像素)缩小图像

2、图像分割

图像分割,先要建立一个图像金字塔,然后在相邻两层(G_i层和G_i+1层)的像素直接依照对应的关系,建立起”父与子“关系。而快速初始分割可以先在金字塔高层的低分辨率图像上完成,然后逐层对分割加以优化。

二、采样

1、下采样pyrDown()

直接删除图像偶数行/列的像素,图像尺寸减半会丢失一些数据信息。

2、上采样pyrUp()

图像在每个维度上扩大为原来的两倍,即:(x,y)的像素映射到目标图像的(2x+1,2y+1)位置,新增的偶数行/列补0填充。然后用给定的滤波器卷积(每个维度都扩大为原来两倍的过滤器)去估计丢失像素的近似值。

pyrDown()和pyrUp()不是一个互逆的过程,值是简单的对图像进行放大和缩小,但绝对不是图像复原。如果要图像复原必须结合高斯金字塔和拉普拉斯金字塔

三、高斯金字塔

 1、高斯金字塔过程

  • 图像平滑(高斯内核卷积)(直接降采样损失信息,造成图像看不清)
  • 删除所有偶数行和列,图像尺寸减半

高斯金字塔本质上为信号的多尺度表示法

2、构建图像的高斯金字塔 

 

  1. import cv2 as cv
  2. import numpy as np
  3. def pyramid_demo(image):
  4. level = 3
  5. temp = image.copy()
  6. pyramid_images = []
  7. for i in range(level):
  8. dst = cv.pyrDown(temp)
  9. pyramid_images.append(dst)
  10. cv.imshow("pyramid_down_"+str(i), dst)
  11. temp = dst.copy()
  12. return pyramid_images

 

四、拉普拉斯金字塔

 1、拉普拉斯金字塔的数学定义

 下式是拉普拉斯金字塔第i层的数学定义:

 

式中的Gi表示第i层高斯图像。而UP()操作是将源图像中位置为(x,y)的像素映射到目标图像的(2x+1,2y+1)位置,即在进行向上取样。符号表示卷积,为5x5的高斯内核。

因此,我们可以直接用OpenCV进行拉普拉斯运算:

 

 因此:可以说成拉普拉斯金字塔=第i层的高斯塔——第i+1层pyrUp()放大(上采样)后的高斯塔

注:i+1层是比i层小的图像

2、构建图像的拉普拉斯金字塔

 

  1. import cv2 as cv
  2. import numpy as np
  3. def pyramid_demo(image):
  4. level = 3
  5. temp = image.copy()
  6. pyramid_images = []
  7. for i in range(level):
  8. dst = cv.pyrDown(temp)
  9. pyramid_images.append(dst)
  10. cv.imshow("pyramid_down_"+str(i), dst)
  11. temp = dst.copy()
  12. return pyramid_images
  13. def lapalian_demo(image):
  14. dst = cv.resize(src, (image.shape[1], image.shape[1]), 0, 0, cv.INTER_LINEAR)#重新改变图像的尺寸,求拉普拉斯塔输入图像必须为方形
  15. #cv.imshow("dst", dst)
  16. pyramid_images = pyramid_demo(dst)
  17. level = len(pyramid_images)
  18. for i in range(level-1, -1, -1):
  19. if (i-1) < 0 :
  20. expand = cv.pyrUp(pyramid_images[i], dstsize=dst.shape[:2])
  21. lpls = cv.subtract(dst, expand)
  22. cv.imshow("lapalian_down_" + str(i), lpls)
  23. else:
  24. expand = cv.pyrUp(pyramid_images[i], dstsize=pyramid_images[i-1].shape[:2])
  25. lpls = cv.subtract(pyramid_images[i-1], expand)
  26. cv.imshow("lapalian_down_"+str(i), lpls)

 

五、图像复原 

1、原图像的复原公式

第i层高斯金字塔=第i层拉普拉斯塔+第i+1层pyrUp()放大(上采样)后的高斯塔

Gi=li+pyrUp(Gi+1)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/545494
推荐阅读
相关标签
  

闽ICP备14008679号