© Fu Xianjun. All Rights Reserved.
一、理论基础
图像金字塔是同一图像不同分辨率的子图集合,是通过对原图像不断地向下采样而产生的,即由高分变率的图像(大尺寸)产生低分辨率的近似图像(小尺寸)。
· 邻域滤波器: 采用邻域平均技术求原始图像的近似图像。该滤波器能够产生平均金字塔。
· 高斯滤波器: 采用高斯滤波器对原始图像进行滤波,得到高斯金字塔。这是OpenCV函数cv2.pyrDown()所采用的方式。
二、图像金字塔
1.高斯金字塔构建
1.1pyrDown函数及使用
·作用 :用于实现图像函数高斯金字塔操作中的向下采样。
·语法格式:
dst=cv2.pyrDown(scr[,dstsize[,borderType]])
1.2pyrUp函数及使用
·作用: 用于实现图像函数高斯金字塔操作中的向上采样。
·语法格式:
dst=cv2.pyrUp(scr[,dstsize[,borderType]])
代码如下:
import cv2
import numpy as np
#高斯金字塔
def pyramid_demo(image,level):
temp = image.copy()
pyramid_images = []
for i in range(level):
dst = cv2.pyrDown(temp)
pyramid_images.append(dst)
cv2.imshow("pyramid_down_"+str(i), dst)
temp = dst.copy()
return pyramid_images[level-1]
src = cv2.imread("lena.jpg")
cv2.imshow("input image", src)
pyramid_demo(src,4)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果如下:
2.拉普拉斯金字塔构建
2.1拉普拉斯金字
代码如下:
# 拉普拉斯金字塔构建
G0 = cv2.imread("lena.bmp")
cv2.imshow("input image",G0)
G1=cv2.pyrDown(G0)
G2=cv2.pyrDown(G1)
G3=cv2.pyrDown(G2)
G4=cv2.pyrDown(G3)
L0 = cv2.subtract(G0,cv2.pyrUp(G1))
L1 = cv2.subtract(G1,cv2.pyrUp(G2))
L2 = cv2.subtract