opencv學習筆記python實現 影象金字塔(高斯金字塔與拉普拉斯金字塔)
阿新 • • 發佈:2018-12-10
使用拉普拉斯金字塔時,影象必須是2^n*2*m
使用拉普拉斯金字塔先要知道高斯金字塔
這兩種過程是圖片縮小與放大
縮小 reduce = 高斯模糊 + 降取樣(pyrDown)
放大 expand = 擴大(升取樣/pyrUp) + 卷積
#-*-coding:utf-8 -*- import cv2 as cv #高斯金字塔 def pyramid_image(image): cv.imshow("yuan",image) level = 3#金字塔的層數 temp = image.copy()#拷貝影象 pyramid_images = [] for i in range(level): dst = cv.pyrDown(temp) pyramid_images.append(dst) cv.imshow("pyramid"+str(i), dst) temp = dst.copy() return pyramid_images #拉普拉斯金字塔 def lpls_image(image): pyramid_images = pyramid_image(image) level = len(pyramid_images) for i in range(level-1, -1, -1):#陣列下標從0開始 i從金字塔層數-1開始減減 if (i-1)<0:#原圖 expand = cv.pyrUp(pyramid_images[i]) lpls = cv.subtract(image, expand) cv.imshow("lpls_%s" % i, lpls) else: expand = cv.pyrUp(pyramid_images[i]) lpls = cv.subtract(pyramid_images[i-1], expand) cv.imshow("lpls_%s" % i, lpls) img = cv.imread("d://work//1.jpg") lpls_image(img) cv.waitKey(0) cv.destroyAllWindows()