向下取样:缩小图像(先高斯滤波,再删除所有偶数行列,缩小为原来的1/4)。
向上取样:放大图像(每个方向扩大为原来的2倍,用0填充;使用与向下取样同样的卷积核乘以4,获取新增像素的值)。
pyrDown函数
# -*- coding: utf-8 -*-
import cv2
img = cv2.imread("C:\\imgs\\man.bmp", flags = cv2.IMREAD_UNCHANGED)
pyrDown1 = cv2.pyrDown(img)
pyrDown2 = cv2.pyrDown(pyrDown1)
pyrDown3 = cv2.pyrDown(pyrDown2)
cv2.imshow("img", img)
cv2.imshow("pyrDown1", pyrDown1)
cv2.imshow("pyrDown2", pyrDown2)
cv2.imshow("pyrDown3", pyrDown3)
cv2.waitKey()
cv2.destroyAllWindows()
pyrUp函数
# -*- coding: utf-8 -*-
import cv2
img = cv2.imread("C:\\imgs\\lena256.bmp", flags = cv2.IMREAD_UNCHANGED)
pyrUp1 = cv2.pyrUp(img)
pyrUp2 = cv2.pyrUp(pyrUp1)
cv2.imshow("img", img)
cv2.imshow("pyrUp1", pyrUp1)
cv2.imshow("pyrUp2", pyrUp2)
cv2.waitKey()
cv2.destroyAllWindows()
拉普拉斯金字塔
# -*- coding: utf-8 -*-
import cv2
img = cv2.imread("C:\\imgs\\lena256.bmp", flags = cv2.IMREAD_UNCHANGED)
pyrDown1 = cv2.pyrDown(img)
pyrUp1 = cv2.pyrUp(pyrDown1)
laplace1 = img - pyrUp1
pyrDown2 = cv2.pyrDown(pyrDown1) # 上次向下取样的图像作为新的原始图像
pyrUp2 = cv2.pyrUp(pyrDown2)
laplace2 = pyrDown1 - pyrUp2
cv2.imshow("img", img)
cv2.imshow("laplace1", laplace1)
cv2.imshow("laplace2", laplace2)
cv2.waitKey()
cv2.destroyAllWindows()