• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: Matlab
  • 标签: jpeg编码  

资源简介

使用matlab实现灰度图的jpeg编码过程,包括dct变换,mask矩阵量化和游程编码

资源截图

代码片段和文件信息

clc; clear all; close all;
img = imread(‘lena.jpg‘); % 读取图片
f_img = im2double(img) ;%图片存储类型转换

dct_matrix = dctmtx(8);%离散余弦变换矩阵
dct_img = blkproc(f_img[8 8]‘P1*x*P2‘dct_matrixdct_matrix‘);%对源图像进行DCT变换
mask1 = [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
        0 0 0 0 0 0 0 0
        0 0 0 0 0 0 0 0
        0 0 0 0 0 0 0 0];
mask6 = [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
        0 0 0 0 0 0 0 0];
mask15 = [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];
mask28 = [1 1 1 1 1 1 0 0
        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];
%数据压缩,丢弃右下角高频数据
B1 = blkproc(dct_img[8 8]‘P1.*x‘mask1);%1个分量
B6 = blkproc(dct_img[8 8]‘P1.*x‘mask6);%6个分量
B15 = blkproc(dct_img[8 8]‘P1.*x‘mask15);%15个分量
B28 = blkproc(dct_img[8 8]‘P1.*x‘mask28);%28个分量

img1=B1;
img1=reshape(img1175*121);

%进行反DCT变换
I1 = blkproc(B1[8 8]‘P1*x*P2‘dct_matrix‘dct_matrix);%1个分量
I6

评论

共有 条评论