Matlab图像压缩
2016-11-20 21:00
302 查看
一.作业内容
读取一幅灰度或者彩色图像,实现下列算法:首先将图像分成许多8X8的子图像,对每个子图像进行DCT,对每个子图像的64个系数,按照每个系数的大小来排序后, 舍去小的变换系数,只保留16个系数,实现图像4:1的压缩。
二.作业分析
cr = 0.25; i = imread('lena.jpg'); i = rgb2gray(i); i1 = im2double(i); %i1 = i/255; subplot(121); imshow(i); title('原图像'); %对图像进行哈达玛变换 t = dctmtx(8);%生成一个8*8 DCT变换矩阵 dctcoe = blkproc(i1,[8 8],'P1*x*P2',t,t');%将图像分割为8*8的子图像进行FFT %x就是每一个分成的8*8大小的块,P1*x*P2相当于像素块的处理函数,p1 = T p2 = T’, %也就是fun = p1*x*p2' = T*x*T'的功能是进行离散余弦变换 coevar = im2col(dctcoe,[8 8],'distinct');%降变换系数矩阵重新排列 coe = coevar; [y,ind] = sort(coevar); [m,n] = size(coevar);%根据压缩比确定要变0的系数个数 %舍去不重要的系数 snum = 64 - 64 * cr; for i = 1:n coe(ind(1:snum),i) = 0;%将最小的snum个变换系数清0 end b2 = col2im(coe,[8 8],[512 512],'distinct');%重新排列系数矩阵 %对截取后的变换系数进行哈达玛逆变换 i2 = blkproc(b2,[8 8],'P1*x*P2',t',t);%对截取后的变换系数进行哈达玛逆变换 subplot(122); imshow(i2); title('DCT变换图像');
三.运行结果
相关文章推荐
- 机器学习Matlab实战之图像压缩————Kmeans算法
- Matlab DIP(瓦)ch8图像压缩练习
- 基于DCT的图像压缩及Matlab实现
- matlab练习程序(奇异值分解压缩图像)
- Matlab DIP(瓦)ch8图像压缩练习
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(一)
- matlab练习程序(奇异值分解压缩图像)
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
- 【转】matlab练习程序(奇异值分解压缩图像)
- PCA图像压缩的matlab实现
- MATLAB图像保存压缩后改变像素值的问题
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(一)
- Matlab调用Java版JPEG2000图像压缩工具:jj2000-4.1
- matlab简易实现图像压缩
- 人工神经网络 (ANN) BPN数字图像压缩 MATLAB源代码
- 【图像处理】MATLAB:图像压缩
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
- matlab自带滤波器函数小结(图像处理)
- 使用ffmpeg将YUV420P图像压缩到jpg图片
- MATLAB 图像平移操作(转)