前言
在阅读本文章之前需要参考文章
https://blog.csdn.net/qq_41821067/article/details/111143629
https://blog.csdn.net/jacke121/article/details/80434744
理论准备
离散余弦变换与傅里叶变换的区别
离散余弦变换与傅里叶变换相关,只使用实偶函数,长度相当于是两倍的傅里叶变换。
离散余弦变换的适用性
离散余弦变换的特征是将物理信息能量汇聚到低频成分,高频成分接近于0,因此被用语音和图像处理领域。
适用于图像压缩,在图像压缩的时候会丢失到图像部分信息,可以将原始图像进行二维离散余弦变换,然后将存储含有信息的低频成分的数据,图像还原的时候将携带数据的低频数据就可以还原原始图像。
代码实现
import cv2
import numpy as np
img=cv2.imread('F:/people.png',0)# 读取图像变为灰度图像
img1=img.astype('float32')#将unit8类型转换为float类型
#进行离散余弦变换
img_dct=cv2.dct(img1)
print(img_dct)
下图是通过离散余弦变换的数值
如果不进行数据类型转换float32,就会报错
我们将没有进行float32转换的img放入dct变换的参数,出现类型不符错误
显示dct变换过程中图像数据变化
import numpy as np
import matplotlib.pyplot as plt
i