The Cozy Hut of Dr. Zhang分享 http://blog.sciencenet.cn/u/zjzhang

博文

JPEG 压缩原理 --- dctmtx 函数的应用

已有 10884 次阅读 2011-11-20 22:46 |个人分类:图像分析(matlab,PDE)|系统分类:科研笔记| title, 压缩

clear all;
I=imread('cameraman.tif');
figure(1);
imshow(I);title('原始图像');
I=im2double(I);
D=dctmtx(8);
% 系数取舍矩阵
mask=[1 1 1 1 1 0 0 0
    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];
Bdct=blkproc(I,[8 8],'P1*x*P2',D,D');
    % 用 D*A*D' 来计算离散余弦变换
Bch=blkproc(Bdct,[8 8],'P1.*x',mask);
    % 系数选择
Bidct=blkproc(Bch,[8 8],'P1*x*P2',D',D);
    % 离散余弦逆变换
   
figure(2);
imshow(Bidct);title('解压图像');
注:1. 先把图像分为 8×8 块,然后用 dctmtx 分别对每个子图像进行离散余弦变换,对变换系数仅保留左上角的 15 个值 (5+4+3+2+1),然后对这 15 个系数进行离散余弦逆变换重新得到各个子图像,再用 dctmtx 进行重构。
    2. 仅用 8×8 = 64 中的 15 个就能有较好的视觉效果。


https://blog.sciencenet.cn/blog-287000-510054.html

上一篇:离散余弦逆变换---idct2函数
下一篇:Matlab 自带演示程序 --- qtdemo 函数
收藏 IP: 121.33.190.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-26 17:39

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部