赞
踩
图像金字塔其实就是一种图像缩放方法,与resize直接物理层面的缩放不同,这里用到的是一些涉及卷积核的算法,
常见两张金字塔处理办法:
·高斯金字塔:图片放大缩小。
·拉普拉斯金字塔:在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。
理解其中缩放原理。使用向下采样,指从下面起拿图像进行卷积操作。
缩放步骤:先卷积操作,利用高斯滤波,再直接去除偶行偶列
向上采样就是将小图片补0,然后放大为原来两倍,再用卷积核(先补0,再卷积保证大小不变)把像素均摊一下,有一开始放大了两倍,卷积之后大小又不变,这样做到了放大图像的目的
其实就是高斯金字塔先缩小再放大得到图像与原图像相减,然后重复这个过程,了解即可
放大函数
up = cv2.pyrUp(im) # 传入要放大的对象,返回处理后结果
缩小函数
down = cv2.pyrDown(im)
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)
效果: 让我学到的一个点是 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()
效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。