数字图像处理|Matlab-数字图像编码实验-有损压缩/压缩算法实验-JPEG编码压缩

Matlab-数字图像编码实验-有损压缩/压缩算法实验

代码链接:https://download.csdn.net/download/qq_43571150/12033274

查阅JPEG编码的有关资料,对图像进行JPEG压缩
算法步骤必须包括如下几个部分:

  1. 图像分块
  2. 离散余弦变换
  3. 量化
  4. ac和dc系数的Z字形编排

问题1:质量因子分别选为20,60,80,对比显示原图与不同质量因子下解码后的图像;
问题2:记录图像大小、压缩比、均方根误差;对结果进行分析。

JPEG标准亮度量化表👇
在这里插入图片描述
结果👇
在这里插入图片描述
在这里插入图片描述

Matlab代码👇

function JPEG;

close all;clear all;clc;
J=imread('05.jpg'); 
imwrite(J,'05 质量因子80.jpg','quality',80);
x=imread('05 质量因子80.jpg');
R=rgb2gray(x);
I=double(R);
imwrite(R,'05 灰度图.jpg');

图像分割
以8x8为最小单元分割,可分割成4096个方块,从上往下,得到32768x8的矩阵

%% 图像分割 以8x8为最小单元分割,可分割成4096个方块,从上往下,得到32768x8的矩阵
% lena512: 512*512
% Block: 32768*8
Block=[];
for numi=1:64 %逐行取方阵
    m=(numi-1)*8+1; %每块行的开头
    for numj=1:64 %逐列取方阵
        n=(numj-1)*8+1; %每块列的开头
        Block=[Block; I(m:m+7,n:n+7)];
    end
end

离散余弦变换(DCT变换)
对4096个方阵分别进行DCT变换,得到4096个变换方阵,从上往下存,32768x8的矩阵

%% 离散余弦变换 DCT变换 对4096个方阵分别进行DCT变换,得到4096个变换方阵,从上往下存,32768x8的矩阵
% Block: 32768*8
% FBlock: 32768*8
for num=1:4096
    start=(num-1)*8+1;
    FBlock(start:start+7,:)=dct2(Block(start:start+7,:));
end

量化
对4096个方阵分别根据JPEG亮度标准量化表进行量化,从上往下

%% 量化 对4096个方阵分别根据JPEG亮度标准量化表进行量化,从上往下存,32768x8的矩阵,部分高频分量被舍弃,减小了视觉冗余
% FBlock: 32768*8
% QBlock: 32768*8
load('JPEG512.mat','lighttable')
  • 10
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值