import cv2
import numpy as np
import matplotlib.pyplot as plt
from pywt import dwt2, idwt2
def put(path):
#0是表示直接读取灰度图
img=cv2.imread(path, 0)
#对img进行haar小波变换
cA,(cH,cV,cD)=dwt2(img,'haar')
#小波变换之后,低频分量对应的图像:
a=np.uint8(cA/np.max(cA)*255)
#小波变换之后,水平方向高频分量对应的图像:
b=np.uint8(cH/np.max(cH)*255)
#小波变换之后,垂直平方向高频分量对应的图像:
c=np.uint8(cV/np.max(cV)*255)
# 小波变换之后,对角线方向高频分量对应的图像:
d=np.uint8(cD/np.max(cD)*255)
# 根据小波系数重构回去的图像
rimg=idwt2((cA,(cH,cV,cD)),'haar')
plt.rcParams['font.sans-serif']=['SimHei']
plt.subplot(231),plt.imshow(img,'gray'),plt.title('原始图像'),plt.axis('off')
plt.subplot(232),plt.imshow(a,'gray'),plt.title('低频分量'),plt.axis('off')
plt.subplot(233),plt.imshow(b,'gray'),plt.title('水平方向高频分量'),plt.axis('off')
plt.subplot(234),plt.imshow(c,'gray'),plt.title('垂直平方向高频分量'),plt.axis('off')
plt.subplot(235),plt.imshow(d,'gray'),plt.title('对角线方向高频分量'),plt.axis('off')
plt.subplot(236),plt.imshow(rimg,'gray'),plt.title('重构图像'),plt.axis('off')
plt.show()
put(r'C:/Users/xpp/Desktop/Lena.png')
算法:小波变换编码是数字地球的最有发展前途的数据压缩方法。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!