%% 清空环境
close all;
clc;
clear;

%% 图像压缩
filePath='2.bmp';%被压缩的图像的途径

quantizationFactor=0.5;%该变量为量化因子,最小为0.01,最大为255,建议在0.5和3之间,越小质量越好文件越大
I=imread(filePath);%读bmp彩色图像
FileCode=encode(I,quantizationFactor);%压缩图像
%保存文件
savePath='save.myjpeg';%文件保存路径
fileID = fopen(savePath, 'w');
for i=1:8:length(FileCode)-8
    fwrite(fileID,bin2dec(FileCode(i:i+7)),'uint8');
end
i=i+8;
if i<=length(FileCode) %剩余位数不足一个字节,补零
    lastBitsCount=length(FileCode)-i+1;
    lastByte=['0' '0' '0' '0' '0' '0' '0' '0' ];
    lastByte(1:lastBitsCount)=FileCode(i:length(FileCode));
    fwrite(fileID,bin2dec(lastByte),'uint8');
end
fclose(fileID);

%计算压缩比
listing=dir(filePath);
originalSize=listing.bytes;
listing=dir(savePath);
currentSize=listing.bytes;
disp(['压缩比率为' num2str(originalSize/currentSize)]);

%% 读取文件并解压缩图像
fileID2 = fopen(savePath, 'r');
Bytes=fread(fileID2,inf,'uint8');
fclose(fileID2);
Codes=dec2bin(Bytes,8);%传化为字符串,方便解码时取一位操作
FileCode2=reshape(Codes',1,length(Codes)*8);%获得字符代表码流,将每组字节码,合并成一个字符串
I2=decode(FileCode2);%解压缩

%% 测试对比
[m n ~]=size(I2);
disp(['比特率为' num2str(currentSize*8/(m*n))]);%输出比特率
disp(['信噪比为' num2str(PSNR(I,I2))]);%输出信噪比
%原图像与压缩图像对比imwrite
figure('Name','原图像','NumberTitle','off'),imshow(I);
figure('Name','压缩图像','NumberTitle','off'),imshow(I2);

基于matlab的JPEG彩色图像编码解码源码相关推荐

  1. 【信号处理】基于Matlab GUI数字均衡器设计,源码附上

    [信号处理]基于Matlab GUI数字均衡器设计,源码附上 数字均衡器是一种常用于音频信号处理的技术,可以有效地补偿声音中的频率失真,提高音质.在这篇文章中,我们将介绍如何使用Matlab GUI进 ...

  2. 基于Matlab的磁力计校准(附源码)

    目录 一.理想磁力计 二.硬铁效应 三.软铁效应 四.校正技术 五.使用函数magcal 5.1 仅偏移计算 ​编辑5.2 硬铁补偿和轴缩放计算 5.3 全硬铁和软铁补偿 5.4 自动拟合 六. 结论 ...

  3. 基于matlab仿真多普勒效应及其影响(附源码)

    目录 一.介绍 二.估计直升机的叶片速度 三.直升机回声模拟 四.叶片返回微多普勒分析 五.汽车雷达中的行人识别 六.行人微多普勒提取 七.总结 八.程序 本例介绍了由于目标旋转而对目标进行雷达回波时 ...

  4. Dubbo篇:基于Netty实现Dubbo协议编解码源码分析

    Dubbo协议解析 Dubbo协议设计参考了TCP/IP协议,包括协议头和协议体两部分.16字节报文头主要携带了魔法数(0xdabb,用于分割两个不同请求),以及当前请求报文是否是Request.Re ...

  5. 基于Matlab鸟群跟踪仿真(附源码)

    目录 一.方案定义 二.跟踪器定义 三.追踪鸟群 四.生成的代码中跟踪器的结果 五.总结 六.程序 此示例演示如何跟踪大量对象.生成一大群鸟类,并使用全局最近邻多目标跟踪器来估计鸟群中每只鸟的运动. ...

  6. 基于matlab的雷达和通信系统,基于MATLAB的多功能通信信号源仿真

    第 29 卷 第 3 期 2006 年 9 月 电 子 器 件 Chinese Journal of Electron Devices Vol. 29 No. 3 Sep. 2006 Simulati ...

  7. 基于java web servlet生鲜商城管理系统源码含报告文档

    (一)目的 电子商务的迅速兴起,网上购物也为人们的生活提供了极大的便利,不受时间和空间的限制.商城系统的兴起,扩大了消费市场的空间,对于大型企业来说,建设商城系统是正确的选择,不仅要扩大销售渠道,而且 ...

  8. 基于Simulink宽带单基地雷达系统仿真(附源码)

    目录 一.探索示例 1.1 收发器 1.2 信号处理子系统 1.3 渠道 1.4 目标子系统 二.结果和显示 三.总结 四.程序 本示例演示如何仿真宽带雷达系统.当雷达系统的带宽超过系统中心频率的5% ...

  9. .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

    介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...

最新文章

  1. PHPExcel读取excel的多个sheet存入数据库
  2. css字体居中_简单介绍CSS.
  3. 刚输一行代码就报5次假漏洞,npm让程序员们累觉不爱
  4. 用SVR模型完成对Boston房价的回归预测
  5. JZOJ 3769. 【NOI2015模拟8.14】A+B
  6. HDU 1025 Constructing Roads In JGShining's Kingdom(DP+二分)
  7. 手机app 服务器 网页同步,手机app接入云服务器
  8. HDU4911 Inversion 解题报告
  9. PHP定界符的使用既注意事项
  10. Linux中创建新用户并赋予指定目录的相关权限
  11. SAP License:SAP CO ML 物料帐配置
  12. 有关使用seajs和template模板的总结
  13. Error [ERR_INSPECTOR_ALREADY_ACTIVATED]解决方案
  14. 信息系统分析与设计相关
  15. 计算机算法分析与设计(第五版)
  16. this command with --force, or --legacy-peer-deps
  17. 章文嵩:开放与高可用是阿里云角力海外市场的关键
  18. EndNote X7如何在论文中嵌入中文格式要求的参考文献
  19. P2P: Tuning Pre-trained Image Models for Point Cloud Analysis with Point-to-Pixel Prompting
  20. 分析机构对华为手机极为悲观,预估它今年出货量大跌超七成

热门文章

  1. 基于Java的QQ屏幕截图工具的设计与实现(论文+PPT+源码)
  2. 黑客马拉松活动如何搞
  3. 用C语言代码编写一个五子棋小游戏
  4. 钢材规格解读的软件_钢材重量计算软件下载-钢材重量手册2020版下载 v3.71免费版--pc6下载站...
  5. linux解压war包后删除war包,解压好的文件夹跟着消失
  6. 储能控制器,simulink仿真模型。 采用下垂控制实现蓄电池超级电容构成的混合储能功率分配
  7. 洛谷 P1747 好奇怪的游戏
  8. Android项目结构和AndroidManifest.xml
  9. notepad 语言等常用设置
  10. 下载网络图片两种方式