m基于matlab的图像方块编码仿真,输出编码后PSNR图像质量指标
1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
BTC编码又称方块编码,是一种有效,快速,简单的有损灰度图像数字压缩技术,具有性能高,信道容错力高等特点,在实时图像传输方面具有很高的应用价值,由美国普渡大学的Mitchell和Delphi教授提出.使用Mat-lab实现BTC编码.
方块编码也叫方块截断编码(block truncation coding,简称BTC)是静态图像编码中的一种, 其原理是把一幅图像分为大小为N×N的子像块(简称子块),由于小块内各相邻像素间具有亮度互相近似的相关性,于是只选用两个适当的亮度来近似代表小块内各像素原来的亮度,然后指明子块内的各像素分别属于哪个亮度。静态图像编码是研究怎样利用图像固有的统计特性(信源特性),以及视觉的生理学、心理学特性(信宿特性),或者记录设备(如普通照相底片)和显示设备(如电视、监示器)等的特性,经过压缩编码从原始图像信息中提取出有效信息,尽量去掉那些无用的冗余信息,以便高效率地进行图像的数字传输或数字存储;而在复原时仍能获得与原始图像相差不多的复原图像,即保持图像信息中的有效信息。
方块编码(英语:BlockTruncationCoding,缩写:BTC)是一种用于灰度图像的有损数据压缩算法。这种算法将图像分为以方块为单位,在每一方块中,在保持原有平均数和标准方差(即保持二阶矩)的同时,减少灰度等级,以达到压缩的目的。方块编码(英语:BlockTruncationCoding,缩写:BTC)是一种用于灰度图像的有损数据压缩算法。这种算法将图像分为以方块为单位,在每一方块中,在保持原有平均数和标准方差(即保持二阶矩)的同时,减少灰度等级,以达到压缩的目的。方块编码被认为是纹理压缩算法DXTC的前身;但在DXTC出现之前很久,方块编码已就被引入彩色图像的压缩,即色彩单
3.MATLAB核心程序
global oldbuf; %定义数组为全局变量 global M; %图像尺寸 global N; %图像尺寸 handle=get(gcf,'userdata'); set(gcf,'pointer','watch'); if Select==1 oldbuf=ReadImage(handle); else switch block %选择n*n子菜单 case 1 % 2×2 方块 n=2; subplot(2,2,2); %确定显示区域 str='2×2 方块编码图像'; case 2 % 4×4方块 n=4; subplot(2,2,3); str='4×4 方块编码图像'; case 3 % 8×8方块 n=8; subplot(2,2,4); str='8×8 方块编码图像'; end code(n,oldbuf) end set(gcf,'pointer','arrow'); %------------------------------------------------------------------------- function oldbuf=ReadImage(handle); % ************************************************************************* % 函数名称: % ReadImage() % 说明: % 打开对话框,读入原图像。 % ************************************************************************* [FileName,PathName]=uigetfile({... '*.BMP;*.JPG;*.JPEG;*.JPE;*.GIF;*.TIF;*.PNG';}); if isequal(FileName,0) | isequal(PathName,0) FullFileName=CurrentFullFileName; else FullFileName=strcat(PathName,FileName); subplot(2,2,1); str='原图像'; oldbuf=imread(FullFileName); imshow(oldbuf); title(str); set(handle(2),'Enable','on'); set(handle(3),'Enable','on'); set(handle(4),'Enable','on'); end