
向下取样:缩小图像(先高斯滤波,再删除所有偶数行列,缩小为原来的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()

本文详细介绍图像金字塔处理技术,包括向下取样(通过高斯滤波和行列删除缩小图像)、向上取样(通过0填充和特定卷积核放大图像),以及拉普拉斯金字塔的构建过程。通过OpenCV库实现图像的多尺度分析。
576

被折叠的 条评论
为什么被折叠?



