图像金字塔
分类
向上采样
- 步骤
- 对图像进行高斯滤波(从外围到中心不同权值的模糊化)
- 删除偶数行列
- 例子
- 拉普拉斯金字塔
向下采样
- 步骤
- 对图像进行高斯滤波(从外围到中心不同权值的模糊化)
- 删除偶数行列
- 例子
- 高数金字塔
高斯金字塔
- 高斯平滑处理(原始图像进行高斯内核卷积)->(从外围到中心不同权值的模糊化)
- 图像采样去除偶数行和列
- 采样之后图像分辨率和面积均成为原来的1/4
- 函数
-
pyrDown()
- 从高分辨率的图像逐步向上构建(尺寸变小,分辨率降低)
src->参数,dst->输出图像,dstsize->输出图像的大小默认为Size(),borderType->像素外推方法(仅支持BORDER_DEAFULT)pyrDown(src,dst=None,dstsize=None,borderType=None)
向下取样的例子:import cv2 as cv img = cv.imread(r"test.jpg") down=cv.pyrDown(img)#图像向下取样 cv.imshow("original",img)#显示原始图像 cv.imshow("pyrDown",down)#显示修改后的图像 cv.waitKey(0); cv.destroyAllWindows();#销毁所有的窗口```
- 从高分辨率的图像逐步向上构建(尺寸变小,分辨率降低)
-
pyrUp():
- 从低分辨率的图像逐步向下构建(尺寸变大,分辨率升高)
src->输入图像,dst->输出图像(尺寸类型同输入),dstsize->输出图像大小,默认值为Size(),borderType->像素外推方法pyrUp(src,dst=None,dstsize=None,BorderType=None)
例子(验证不是互逆操作:先向下再向上(思考反向先向上在向下)):
import cv2 as cv img=cv.imread(r"img.jpg") r1=cv.pyrDown(img) r2=cv.pyrUP(r1) cv.imshow("PD1",r1) cv.imshow("PU1",r2) cv.waitKey(0) cv.destroyAllWindows()
- 从低分辨率的图像逐步向下构建(尺寸变大,分辨率升高)
-
拉普拉斯金字塔
- 原理
-
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))
- G i G_i Gi->原始图像
- L i L_i Li->拉普拉斯金字塔图像
- ![[Pasted image 20230113174508.png]]
- 迭代的过程
- 拉普拉斯实例
import cv2 as cv import numpy as np #拉普拉斯算子 def Laplace_demo(image): dst= cv.Laplacian(image,cv.CV_32F) lpls_1=cv.convertScaleAbs(dst) cv.imshow("lpls1",lpls_1) #自定义拉普拉斯算子 kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]]) dst=cv.filter2D(image,cv.CV_32F,kernel) lpls_2=cv.convertScaleAbs(dst) cv.imshow("lpls2",lpls_2) if __name__ == "__main__": src=cv.imread(r"test.jpg") src=cv.resize(src,None,fx=0.5,fy=0.5) cv.imshow("image",src)#显示修改尺寸的原图 Laplace_demo(src)#变换 cv.waitKey(0) cv.destoryAllWindows()
-
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))
向上向下取样的差别
向上取样:
放大模糊化
向下取样:
放小丢失像素点
Ps:
向上向下取样不是互逆操作(模糊化之后无法恢复原来的样子)
图像金字塔的目的
通过建立图像金字塔,提取特征的时候不仅从原始图像当中提取特征->图像融合,而且也要从图像金字塔当中提取特征
通过不断的缩小图片(模糊化)强化提取的特征?