OpenCV图像处理技术(Python)——图像金字塔
© Fu Xianjun. All Rights Reserved.
前言
随着OpenCV的不断学习,随着知识量的增加,今天就介绍图像金字塔的基础内容。
一、学习目标
1.能够理解高斯金字塔与拉普拉斯金字塔的处理过程
2.能够使用相关函数进行高斯金字塔可逆性分析
3.能够使用相关函数进行拉普拉斯金字塔无损恢复图像
4.能够掌握ROI的应用处理
5.能够掌握泛洪填充算法并使用相关函数进行处理
二、学习内容
1.图像金字塔概念
1.图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合
2.通过对原图像不断地向下采样而产生的,即由高分辨率的图像(大尺寸)产生低分辨率的近似图像(小尺寸)
2.高斯金字塔
核心代码:
dst=cv2.pyrDown(src[,dstsize[,borderType]])
dst=cv2.pyrUp(src[,dstsize[,borderType]])
import cv2
import numpy as np
#高斯金字塔
def pyramid_demo(image,level):
temp = image.copy()
pyramid_images = []
for i in range(level):
dst = cv2.pyrDown(temp)
pyramid_images.append(dst)
cv2.imshow("pyramid_down_"+str(i), dst)
temp = dst.copy()
return pyramid_images[level-1]
src = cv2.imread("lena.jpg")
cv2.imshow("input image", src)
pyramid_demo(src,4)
cv2.waitKey(0)
cv2.destroyAllWindows()
以下是运行结果:
3.拉普拉斯金字塔
以下是代码:
# 拉普拉斯金字塔构建
G0 = cv2.imread("lena.bmp")
cv2.imshow("input image",G0)
G1=cv2.pyrDown(G0)
G2=cv2.pyrDown(G1)
G3=cv2.pyrDown(G2)
G4=cv2.pyrDown(G3)
L0 = cv2.subtract(G0,cv2.pyrUp(G1))
L1 = cv2.subtract(G1,cv2.pyrUp(G2))
L2 = cv2.subtract(G2,cv2.pyrUp(G3))
L3 = cv2.subtract(G3,cv2.pyrUp(G4))
cv2.imshow("G1",G1)
cv2.imshow("G2",G2)
cv2.imshow("G3",G3)
cv2.imshow("G4",G4)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
# 使用拉普拉斯金字塔恢复高分辨图片
l3=cv2.pyrUp(G4)
l2=cv2.pyrUp(l3)
l1=cv2.pyrUp(l2)
l0=cv2.pyrUp(l1)
G00=L0+cv2.pyrUp(G1)
cv2.imshow("l0",l0)
cv2.imshow("G00",G00)
cv2.imshow("input image",G0)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
总结
以上就是今天要了解的内容,慢慢学总会学会的。