基于方块编码的图像压缩matlab仿真,带GUI界面

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

4.1 编码单元的表示

4.2编码单元的编码

5.算法完整程序工程


1.算法运行效果图预览

(完整程序运行后无水印)

下图是随着方块大小的变化,图像的压缩率以及对应的图像质量指标PSNR的变化趋势曲线。

2.算法运行软件版本

matlab2022a

3.部分核心程序

(完整版代码包含详细中文注释和操作步骤视频)

...........................................................................
figure;
subplot(121);
plot(sets,tr,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0])
xlabel('方框大小');
ylabel('压缩率');
subplot(122);
plot(sets,PSNR,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0])

xlabel('方框大小');
ylabel('压缩后图像PSNR');


% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[tr1,PSNR1]=code2(2);

disp(['压缩率',num2str(tr1)])
disp(['PSNR',num2str(PSNR1)])
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[tr1,PSNR1]=code2(4);

disp(['压缩率',num2str(tr1)])
disp(['PSNR',num2str(PSNR1)])
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global tr
global PSNR
global tr2
global PSNR2
[tr1,PSNR1]=code2(8);

disp(['压缩率',num2str(tr1)])
disp(['PSNR',num2str(PSNR1)])



sets = [2,4,8,16,32,64,128,256];

for ij = 1:length(sets)
    [tr2(ij),PSNR2(ij)] = code(sets(ij));
end

figure;
subplot(121);
plot(sets,tr2,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0])

xlabel('方框大小');
ylabel('压缩率');

subplot(122);
plot(sets,PSNR2,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0])

xlabel('方框大小');
ylabel('压缩后图像PSNR');
009_030m

4.算法理论概述

      随着信息技术的飞速发展,图像数据在各个领域中的应用越来越广泛。然而,图像数据通常具有较大的数据量,这给存储、传输和处理带来了很大的挑战。为了解决这个问题,图像压缩技术应运而生。图像压缩的目的是在不损失图像质量的前提下,尽可能地减少图像数据的存储空间和传输带宽。方块编码是一种基于区域划分的图像压缩方法,它将图像划分为若干个大小相同的方块,然后对每个方块进行编码。方块编码具有简单、高效、易于实现等优点,在图像压缩领域得到了广泛的应用。

(一)方块的划分
       方块编码将图像划分为若干个大小相同的方块,每个方块通常由若干个像素组成。方块的大小可以根据图像的特点和压缩要求进行选择,一般为 4x4、8x8 或 16x16 等。
(二)灰度值的量化
       在方块编码中,每个像素的灰度值通常被量化为有限个等级。量化的目的是减少灰度值的取值范围,从而降低编码的复杂度。量化的方法可以采用均匀量化或非均匀量化。
(三)编码单元的定义
       方块编码中的编码单元是指一个方块及其对应的量化后的灰度值。编码单元通常用一个整数来表示,这个整数可以通过对编码单元进行编码得到。

4.1 编码单元的表示

       为了方便编码,我们可以将编码单元表示为一个一维数组。具体方法是将编码单元中的像素按照一定的顺序排列成一个一维数组,然后用这个一维数组来表示编码单元。

4.2编码单元的编码

      方块编码的核心是对编码单元进行编码。编码的目的是将编码单元表示为一个尽可能短的二进制代码。编码的方法可以采用哈夫曼编码、算术编码等。

5.算法完整程序工程

OOOOO

OOO

O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/891565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初始爬虫13(js逆向)

为了解决网页端的动态加载,加密设置等,所以需要js逆向操作。 JavaScript逆向可以分为三大部分:寻找入口,调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下,页面发生跳转之后&#xf…

echarts显示隐藏柱状图柱子的背景色

showBackground: true, //控制是否显示背景色backgroundStyle: {// color: rgba(180, 180, 180, 0.4) //背景色的颜色color: red} 关键代码是 showBackground: true, //控制是否显示背景色 设置为false或者直接而不写就是不显示背景色,默认是不显示背景色 true的时…

windows客户端SSH连接ubuntu/linux服务器,三种网络连接:局域网,内网穿透(sakuraftp),虚拟局域网(zerotier)

windows客户端SSH连接ubuntu/linux服务器,三种网络连接:局域网,内网穿透(sakuraftp),虚拟局域网(zerotier) 目录 SSH简述、三种网络连接特点SSH简述局域网内连接内网穿透&#xff08…

商业级免费OCR利器!Surya OCR:支持90+种语言识别,复杂布局识别,表格解析全覆盖!

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 微信订阅号|搜一搜&…

机器学习实战27-基于双向长短期记忆网络 BiLSTM 的黄金价格模型研究

大家好,我是微学AI,今天给大家介绍一下机器学习实战27-基于双向长短期记忆网络 BiLSTM 的黄金价格模型研究。本文针对黄金价格预测问题,展开基于改造后的长短期记忆网络BiLSTM的黄金价格模型研究。文章首先介绍了项目背景,随后详细…

青少年编程能力等级测评CPA C++(二级)试卷(1)

青少年编程能力等级测评CPA C(二级)试卷(1) 一、单项选择题(共20题,每题3.5分,共70分) CP2_1_1.下列C程序段中,对二维数组arr的正确定义是( &am…

PCL滤波器之面试总结

体素滤波器:降采样,减小体量。 处理前 处理后 直通滤波器:获得想要的区域。 接着上一步继续处理 索引滤波(ExtractIndices滤波器): 接上图:反选效果,实际上删除的是这几个点,上图…

Qml-Item的函数使用

Qml-Item的函数使用 Item的提供了一些函数用于处理item之间父子关系,焦点链,以及item之间的坐标转换,本文重点示范item之间的坐标转换 Item的函数 函数childAt(real x,real y) :在item所在坐标系中,返回点point(x,y…

python pip安装requirements.txt依赖与国内镜像

python pip安装requirements.txt依赖与国内镜像 如果网络通畅,直接pip安装依赖: pip install -r requirements.txt 如果需要国内的镜像,可以考虑使用阿里的,在后面加上: -i http://mirrors.aliyun.com/pypi/simple --…

(四)Python标识符与保留字

一、标识符规则 标识符用来识别变量、函数、类、模块以及对象的名称。 Python标识符可包括英文字母、数字以及下划线。 限制如下: 1、标识符第一个字符必须是字母表中字母或者下划线,变量名称间不得有空格; 2、Python标识符有大小写之分…

【SRE系列--DNS跨域转发】

1.DNS原理 1.1 简介 DNS(Domain Name Service的缩写)的作用就是根据域名查出IP地址。IP地址是由32位二进制数字组成,人们很难记住这些IP,相反,大家愿意使用比较容易记忆的主机名字。而电脑在处理IP数据报文时,是使用IP地址的&am…

高阶数据结构与算法——红黑树の奥秘

1.认识红黑树 1.1红黑树的概念 红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表⽰结点的颜⾊,可以是红⾊或者⿊⾊。通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍&#xff0c…

JDK安装环境配置保姆间教程

文章介绍了Java编程语言的基本知识,包括其创始人和发布年份,然后详细阐述了如何下载和安装JDK,以及如何配置JAVA_HOME和Path环境变量,以确保Java开发环境的正确设置。最后,作者提到在JDK1.5以后的版本中,无…

Python基础语法条件

注释 注释的作用 通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。 注释的分类及语法 注释分为两类:单行注释 和 多行注释。 单行注释 只能注释一行内容,语法如下…

离宝安羊台山登山口最近的停车场探寻

石岩龙眼山矿泉水厂有停车场,这个是距离宝安羊台山登山口最新的停车场了,但是停车位数量没有附近的大眼山停车场多。 石岩龙眼山矿泉水厂停车场的收费标准如下: 序号 收费项目 收费标准 1 小车临时停放 首小时10元 每增加1小时加收3元 3…

如何有效进行主机加固?深信达MCK提供答案

在数字化时代,企业面临的网络安全威胁日益严峻,尤其是勒索病毒等恶意软件的攻击,给企业带来了巨大的挑战。为了有效应对这些威胁,企业需要采取全面的网络安全防护措施,其中主机加固成为了关键的一环。深信达的MCK主机加…

dvwa:文件包含、文件上传

文件包含 本地文件包含(敏感信息泄露)和远程文件包含(命令执行) 本地文件包含一般包含一些本地的敏感文件,如:/etc/passwd或/etc/shadow等 远程文件包含能使得服务器代码执行,如包含黑客vps的…

uniapp引入ThorUI的方法

1、下载文件 2、复制相应的文件除了pages 3、往项目中复制即可 4、引入即可实现 5、添加easycome自动引入

交易所开发:构建安全、高效、可靠的数字资产交易平台

数字资产交易平台是加密市场中连接用户与数字货币的重要枢纽。开发一个安全、高效、可靠的交易所,不仅需要综合考虑技术架构、安全策略、用户体验等方面,还需严格遵循法规要求以确保合规性。本文总结了交易所开发的关键要素,包括其类型、核心…

16年408计算机网络

第一题: 解析: 首先我们要清楚R1,R2,R3是路由器(网络层),Switch是以太网交换机(数据链路层),Hub是集线器(物理层)。 由此可见路由器实现的最高功能层是3层&am…