opencv学习笔记(七)
图像金字塔:
用于图像的分辨率降低。它通过连续的图像平滑和下采样操作来生成一系列分辨率逐渐降低的图像。
构建过程:
1、将原始图像作为底层
2、应用高斯滤波器对当前的图像进行平滑处理,以减少图像中的高频细节。高斯滤波器通过卷积运算在图像上进行平滑操作,使得图像变得更加模糊。
3、对平滑后的图像进行下采样(降采样),即将图像的分辨率减小一倍。下采样操作将原始图像分成更小的图像块,每个块代表上一层的一个像素。
4、下采样后的图像成为金字塔的下一层,称为上一层的子层(sublevel)。重复步骤2和步骤3,生成更低分辨率的图像子层,直到达到金字塔的顶层。
5、重复上述过程,每次处理的图像尺寸减半,直到达到金字塔的顶层或满足特定条件。(下采样)
#分为高斯金字塔和拉普拉斯金字塔 #高斯金字塔:向下采样(缩小):1:将gi和高斯内核卷积,2:将所有偶数行去掉 #高斯金字塔:向上采样(放大):1:将图像再每个方向扩大为原来的两倍,新增的行和列以0填充;2:使用先前同样的内核与放大后的图像卷积,获得近似值e import cv2 img = cv2.imread('C:/Users/hellou/Desktop/self-image.jpg',cv2.IMREAD_GRAYSCALE) img = cv2.resize(img,(600,600)) cv2.imshow('img',img) cv2.waitKey(0) cv2.destroyAllWindows() #向上采样 up = cv2.pyrUp(img) print(up.shape) cv2.imshow('up',up) cv2.waitKey(0) cv2.destroyAllWindows() down = cv2.pyrDown(img) print(down.shape) cv2.imshow('down',down) cv2.waitKey(0) cv2.destroyAllWindows() #先上采样,后下采样,图片和原图不会相同;先下采样,后上采样同理
拉普拉斯金字塔:
构建过程:
1、原始图像作为金字塔底层;
2、对底层图像以用高斯滤波器进行平滑,生成平滑后的图像;
3、对平滑后的图形进行采样(降采样),生成下一层的图像,这一层称为高斯金字塔的子层;
4、降子层上采样至与上一层的尺寸相同,得到上一层的重建图像;
5、计算上一层的重建图像与原始图像之间的差异,得到该层的细节图像;
6、重复步骤2至5,生成更高层级的细节图象和重建图像,直到达到金字塔的顶层。
"""拉普拉斯金字塔: 1、低通滤波,2、缩小尺寸(down),3、放大尺寸(up),4、图像相减""" down = cv2.pyrDown(img) down_up = cv2.pyrUp(down) I_1 = img-down_up cv2.imshow("I_1",I_1) cv2.waitKey(0) cv2.destroyAllWindows()
在拉普拉斯金字塔中,由于减小分辨率和图像大小而导致的细节丢失可以找回