在jupyter notebooks上将一张彩色图像转换为灰度图像,在进行基于DWT的图像压缩代码
时间: 2024-02-18 11:00:16 浏览: 88
下面是将一张彩色图像转换为灰度图像,并进行基于DWT的图像压缩的代码:
```python
import cv2
import numpy as np
import pywt
# 读取彩色图像
img = cv2.imread('color_image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行DWT压缩
coeffs2 = pywt.dwt2(gray, 'haar') # 进行二维Haar小波变换
LL, (LH, HL, HH) = coeffs2 # 提取LL、LH、HL和HH系数
# 重构压缩图像
compress_coeffs = LL[:LL.shape[0]//2, :LL.shape[1]//2], (np.zeros_like(LH), np.zeros_like(HL), np.zeros_like(HH))
compress_img = pywt.idwt2(compress_coeffs, 'haar')
# 显示压缩前后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Gray Image', gray)
cv2.imshow('Compressed Image', compress_img.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先使用OpenCV库读取一张彩色图像,并将其转换为灰度图像。然后,我们使用PyWavelets库进行DWT压缩。这里我们选择二维Haar小波作为变换基,提取其LL、LH、HL和HH系数。接着,我们将LL系数进行压缩,即只保留其左上角的1/4部分,而将LH、HL和HH系数全部置零。最后,我们使用PyWavelets库的idwt2函数对压缩后的系数进行反变换,得到压缩图像。最后,我们使用OpenCV库显示压缩前后的图像。
阅读全文