一、什么是图像金字塔
二、图像金字塔类型图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。(来源于百度)
- 高斯金字塔
- 拉普拉斯金字塔
三、示例代码
import cv2 as cvimport numpy as npdef pyramin(img): """高斯金字塔""" #图像金字塔层数 level=3 #复制图片 tmp=img.copy() pyramin_img=[] for i in range(level): dst=cv.pyrDown(tmp) pyramin_img.append(dst) cv.imshow("pyramid_down_"+str(i),dst) tmp=dst.copy(); return pyramin_imgdef lapalian(img): """拉普拉斯金字塔""" pyramid_images=pyramin(img) level=len(pyramid_images) #从高到低进行循环 for i in range(level-1,-1,-1): if (i-1)<0: #如果是第一幅图,则用原图进行计算 exapand = cv.pyrUp(pyramid_images[i], dstsize=img.shape[:2]) lpls = cv.subtract(img, exapand) cv.imshow("lpls_down_" + str(i), lpls) else: exapand=cv.pyrUp(pyramid_images[i],dstsize=pyramid_images[i-1].shape[:2]) lpls=cv.subtract(pyramid_images[i-1],exapand) cv.imshow("lpls_down_"+str(i),lpls)#图像长宽必须是2的倍数,即2的n次方,如果不是将会报错src=cv.imread('15.jpg')cv.imshow("def",src)cv.waitKey(0)cv.destroyAllWindows()
觉得不错打赏一下 | |
---|---|