在图像的变换和压缩中,常常用到离散余弦变换(DCT)。DCT变换用于图像的压缩实例。请在测试图像中验证你的结论。请编程实现图像的真彩色增强。通过直方图均衡化的方法实现图像的灰度变换,在测试图像中验证你的结论,分析程序结果。使用常用的滤波器对数字图像进行处理。如均值滤波器、中值滤波器、维纳滤波器等。
理中的一个常用步骤,它对于斑点噪声(en:speckle noise)和椒盐噪声(en:salt-and-pepper noise)来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。
程序代码及实验结果与分析
DCT图像压缩
程序代码:
I=imread('压缩前xiao.jpg');%读取原始图片
I=rgb2gray(I);%把图像变成灰度图像
I=im2double(I);%把图像数据类型转换为双精度浮点类型
T=dctmtx(8);%计算离散余弦变换
B=blkproc(I,[8 8],'P1*x*P2',T,T');%对图像I的每个不同8*8数据块应用矩阵式’P1*X *P2’进行处理,其中P1=T,P2=T'
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];%二进制值掩码,用来压缩DCT的系数;可通过改变矩阵来改变压缩程度
B2=blkproc(B,[8 8],'P1.*x',mask);%只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);%逆DCT变换,用来重构图像
subplot(1,2,1);
imshow(I);title('压缩前');%显示原始图像
subplot(1,2,2);
imshow(I2);title('压缩后');%显示压缩图像
imwrite(I2,'D:\我的文档\My Pictures\压缩后xiao.jpg')

