图像金字塔
图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。
图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。
一般情况下有两种类型的图像金字塔常常出现在文献和以及实际运用中。他们分别是:
1、高斯金字塔
1)向下采样方法(缩小) 沿着金字塔往塔尖走
将Gi与高斯内核卷积
将所有偶数行和列去除
2)向上采样方法(放大)
将图像再每个方向扩大为原来的两倍,新增的行和列以0填充
使用先前同样的内核(乘以4)与放大后的图像卷积,获得近似值
2、拉普拉斯金字塔
L
i
=
G
i
−
P
y
r
U
p
(
P
y
r
D
o
w
n
(
G
i
)
)
L_i = G_i - PyrUp(PyrDown(G_i))
Li=Gi−PyrUp(PyrDown(Gi))
注:当原图像为奇像素点时,
P
y
r
U
p
(
P
y
r
D
o
w
n
(
G
i
)
)
PyrUp(PyrDown(G_i))
PyrUp(PyrDown(Gi))与原图像大小不一致(相差一个像素点),无法直接相减
代码实现:
import cv2
img = cv2.imread('image2.png')
up = cv2.pyrUp(img)
down = cv2.pyrDown(img)
up_down = cv2.pyrUp(down)
laplacian = img - up_down
cv2.imshow('init',img)
cv2.imshow('up',up)
cv2.imshow('down',down)
cv2.imshow('laplacian',laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果显示:
原图:
PyrUp:
PyrDown:
拉普拉斯: