欢迎访问yhm138的博客园博客, 你可以通过 [RSS] 的方式持续关注博客更新

MyAvatar

yhm138

HelloWorld!

MATLAB做DCT

clear all;close all;clc;


%这份代码很容易理解
%就是二维DCT后把小于阈值T的值都置为0了,之后反演,重建图像

T=100;   %阈值T
RGB=imread('Snipaste_2021-08-20_23-42-50.png');
I=rgb2gray(RGB);
J=dct2(I);
J(abs(J)<T)=0;
K=idct2(J);
figure;
imshowpair(I,K,'montage');
title(join(['Original Grayscale Image (Left) and Reconstructed Image(Right)',' when T=',string(T)]))

输出的二维DCT的左上角被称为DC系数(直流系数),包含了很多关于原始图像的信息
其余被称为AC系数(交流系数),AC系数包含了图像的更多细节
能量主要集中在DC系数中。

但是老实说实现同一目的,更加有效的是做K-L变换,但是K-L变换的表达式复杂不易实现。 K-L变换的突出优点是去相关性好,是 均方误差 (MSE,Mean Square Error)意义下的最佳变换,它在数据压缩技术中占有重要地位。

posted @ 2021-10-16 06:36  yhm138  阅读(523)  评论(0编辑  收藏  举报