给博彩做网站手机网站建设
🍍原文: 【图像处理】图像离散小波变换及 Python 代码实现
🍍写在前面: 本文在原文的基础上补全了代码。
1 环境准备
① 安装 p y w t \mathsf{pywt} pywt 包:
pip install PyWavelets
说明: p y w t \mathsf{pywt} pywt 是 d w t \mathsf{dwt} dwt 的库,全称是 P y W a v e l e t s \mathsf{PyWavelets} PyWavelets。
② 安装 c v 2 \mathsf{cv2} cv2 包:
pip install opencv-python==3.4.5.20
说明: c v 2 \mathsf{cv2} cv2 用于将 RGB 图像转换为灰度图像。如果安装失败,则可能是 Python 版本和 opencv-python 不匹配。
注意:在 Python 的多版本环境中,使用
pip3.7
而非pip
命令可以指定使用 Python37,对于其他 Python 版本也一样。否则可能出现安装成功,但 Pycharm 仍然找不到包的情况。
2 完整代码
关键代码就只有前几行,后面都是在画图:
import numpy as np
from matplotlib import pyplot as plt
import pywt
import PIL
import cv2img = PIL.Image.open("white_bear.jpg")
img = np.array(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
LLY, (LHY, HLY, HHY) = pywt.dwt2(img, 'haar')plt.subplot(1, 3, 1)
plt.title("Original", fontsize=12, loc="center")
plt.axis('off')
plt.imshow(img, cmap="Greys")plt.subplot(2, 3, 2)
plt.title("LL", fontsize=12, loc="center")
plt.axis('off')
plt.imshow(LLY, cmap="Greys")plt.subplot(2, 3, 3)
plt.title("HL", fontsize=12, loc="center")
plt.axis('off')
plt.imshow(HLY, cmap="Greys")plt.subplot(2, 3, 5)
plt.title("LH", fontsize=12, loc="center")
plt.axis('off')
plt.imshow(LHY, cmap="Greys")plt.subplot(2, 3, 6)
plt.title("HH", fontsize=12, loc="center")
plt.axis('off')
plt.imshow(HHY, cmap="Greys")plt.show()
上述代码在 p y w t . d w t 2 \mathsf{pywt.dwt2} pywt.dwt2 函数中使用的是哈尔 ( h a a r ) \mathsf{(haar)} (haar) 小波变换,它是由数学家哈尔·阿尔弗雷德于 1909 年所提出的函数变换,也是小波变换中最简单的一种变换。