理论准备

参考

https://blog.csdn.net/u012654981/article/details/81984885
https://blog.csdn.net/u011285477/article/details/104162355
小波变换可以通过低通或高通滤波器将图像信息一层一层分离开,使用一系列不同尺度的小波去分解原函数。

代码实现

import pywt
import cv2
import numpy as np
# 读取灰度图
img=cv2.imread("F:/people.png",0)
#对img进行haar小波变换,变量分别是低频,水平高频,垂直高频,对角线高频
cA,(cH,cV,cD)=pywt.dwt2(img,"haar")
#小波变换之后,低频分量对应的图像
cv2.imwrite('lena.png',np.uint8(cA/np.max(cA)*255))

我们可以看到目录中多了一张低频图片
在这里插入图片描述

import pywt
import cv2
import numpy as np
# 读取灰度图
img=cv2.imread("F:/people.png",0)
#对img进行haar小波变换,变量分别是低频,水平高频,垂直高频,对角线高频
cA,(cH,cV,cD)=pywt.dwt2(img,"haar")
print(cA)
#小波变换之后,低频分量对应的图像
cv2.imwrite('lena.png',np.uint8(cA/np.max(cA)*255))
# 小波变换之后,水平方向上高频分量对应的图像
cv2.imwrite('lena_h.png',np.uint8(cH/np.max(cH)*255))
# 小波变换之后,垂直方向上高频分量对应的图像
cv2.imwrite('lena_v.png',np.uint8(cV/np.max(cV)*255))
# 小波变换之后,对角线方向上高频分量对应的图像
cv2.imwrite('lena_d.png',np.uint8(cD/np.max(cD)*255))
# 根据小波系数重构的图像
rimg=pywt.idwt2((cA,(cH,cV,cD)),"haar")
cv2.imwrite("rimg.png",np.uint8(rimg))

低频分量对应的图像

在这里插入图片描述

水平方向上高频分量对应的图像

在这里插入图片描述

垂直方向上高频分量对应的图像

在这里插入图片描述

对角线方向上高频分量对应的图像

在这里插入图片描述

根据小波系数重构的图像

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐