当前位置:   article > 正文

opencv图像金字塔——python实现_生成高斯金字塔图像并显示python

生成高斯金字塔图像并显示python

图像金字塔

概念大概解释

图像金字塔其实就是一种图像缩放方法,与resize直接物理层面的缩放不同,这里用到的是一些涉及卷积核的算法,
常见两张金字塔处理办法:
·高斯金字塔:图片放大缩小。
·拉普拉斯金字塔:在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。

大致讲解

高斯金字塔

理解其中缩放原理。使用向下采样,指从下面起拿图像进行卷积操作。
缩放步骤:先卷积操作,利用高斯滤波,再直接去除偶行偶列
在这里插入图片描述
在这里插入图片描述
向上采样就是将小图片补0,然后放大为原来两倍,再用卷积核(先补0,再卷积保证大小不变)把像素均摊一下,有一开始放大了两倍,卷积之后大小又不变,这样做到了放大图像的目的
在这里插入图片描述

拉普拉斯金字塔

其实就是高斯金字塔先缩小再放大得到图像与原图像相减,然后重复这个过程,了解即可
在这里插入图片描述

代码实现

主要函数:

放大函数

up = cv2.pyrUp(im) # 传入要放大的对象,返回处理后结果
  • 1

缩小函数

down = cv2.pyrDown(im) 
  • 1

高斯金字塔

im = cv2.imread("D:/python/pycharm/youhua.jpg") 
# 高斯金字塔                                         
up = cv2.pyrUp(im)                              
down = cv2.pyrDown(im)                          
down1 = cv2.pyrDown(down)                       
down2 = cv2.pyrDown(down1)                      
cv2.imshow('init',im)                           
cv2.imshow('1',down)                            
cv2.imshow('2',down1)                           
cv2.imshow('3',down2)                           
cv2.waitKey(0)                                  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

效果: 让我学到的一个点是 imshow这个函数传入名字不能一样,要不然视为同一窗口句柄,然后就会只显示一张,可以自己试试
在这里插入图片描述

拉普拉斯

代码:这里是第一层拉普拉斯,当然可以重叠,自行尝试吧

 #  拉普拉斯                        
 # 迭代缩小放大                       
 down = cv2.pyrDown(im)         
 im2 = cv2.pyrUp(down)          
 # 不清楚为什么会多一行,但是resize一下就行                  
 im2 = cv2.resize(im2,(241,306))
 lapla = im - im2               
 print(im2.shape)               
 print(im.shape)
 cv2.imshow('lapla',lapla)
cv2.waitKey(0)           
cv2.destroyAllWindows()                  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

效果:

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

闽ICP备14008679号