一、高斯核--金字塔
1.1 向下采样
python
img = cv2.pyrDown(src=*,dstsize=*,borderType=*)
**img:**目标图像。
**src:**原始图像。
**dstsize:**目标图像的shape,默认为:宽度和高度为原先的一半。
**borderType:**边界样式,使用默认即可。
python
import cv2
img = cv2.imread('Lena.png')
img1 = cv2.pyrDown(src=img)
img2 = cv2.pyrDown(src=img1)
img3 = cv2.pyrDown(src=img2)
cv2.imshow('img',img)
cv2.imshow('img1',img1)
cv2.imshow('img2',img2)
cv2.imshow('img3',img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
1.2 向上采样
python
img = cv2.pyrUp(src=*,dstsize=*,borderType=*)
**img:**目标图像。
**src:**原始图像。
**dstsize:**目标图像的shape,默认为:宽度和高度为原先的一半。
**borderType:**边界样式,使用默认即可。
python
import cv2
img = cv2.imread('Lena.png')
img1 = cv2.pyrDown(src=img)
img2 = cv2.pyrDown(src=img1)
img3 = cv2.pyrDown(src=img2)
img4 = cv2.pyrUp(src=img3)
img5 = cv2.pyrUp(src=img4)
img6 = cv2.pyrUp(src=img5)
cv2.imshow('img',img)
cv2.imshow('img1',img4)
cv2.imshow('img2',img5)
cv2.imshow('img3',img6)
cv2.waitKey(0)
cv2.destroyAllWindows()
由图可以看出上采样并不能完全还原原图像素点,还原像素点一般以 0 填充,所以图像会变模糊。
二、拉普拉斯--金字塔
python
img = cv2.imread('Lena.png') # 原图
L = img - cv2.pyrUp(src = cv2.pyrDown(src=img)) # 拉普拉斯图像
拉普拉斯金字塔 = 当前层高斯金字塔 - 下一层高斯金字塔上采样结果。
即高斯金字塔上下采样间丢失的像素点值。
python
import cv2
img = cv2.imread('Lena.png') # 原图
G = cv2.pyrDown(src=img) # 下采样1次
L = img - cv2.pyrUp(src=G) # 拉普拉斯图像
img1 = L + cv2.pyrUp(src=G) # 恢复结果图像
cv2.imshow('img',img)
cv2.imshow('L',L)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()