【图像压缩】基于matlab二叉树和优化截断(BTOT)遥感图像压缩【含Matlab源码 2043期】
一、二叉树图像压缩简介
数字图像处理和编码压缩技术经过几十年的发展 , 已逐渐成熟并应用于数字通讯和信息处理之中。 随着计算机图形学和图像处理技术广泛应用到了工业生产的各个部门,对图像压缩技术提出了更高的要求。 如何充分利用图像分析和理解方法,合理地分解图像信号、提高压缩 比、降低 主观失真度 ,是当前图像编码研究的热门之一 。 新近在数字图像处理领域提 出的根据图像 区 域灰度分布特点 , 在二叉树管理之下 , 以一定的误差限度为准则,采用 四向递归二分法,逐渐将图像表面划分为若干个凸多边形,使之逼近原始图像,可获得较好的压缩效果。当多边形数目足够多时 ,它们的周边可体现图像的边缘特点,它们的形状、位置和平均灰度可反映图像的主要特点 , 通过对多边形 的平均灰度和划分方法进行编码,可以获得较高的压缩比。 基于上述思想的编码流程如下:
首先将原始图像经去噪等适当的预处理后,按四向递归二分法对图像进行分割,得到许多凸多边形,然后对它们进行编码,以便最大限度地压缩数据 。 经信道传输将数据送到地面后,对数据进行解码, 由解码后的数据重建图像并进行必要的后处理。图像的分割设原图为,可通过最小平方误差准则及四向递归二分法将图像分为和两个子图,使
为最小,其中为区域内图像灰度的均值。 对、作同样的分割,如此下去可在满足给定误差要求的条件下将分割成个子图。 编码、解码及后处理图像分割过程的规律性和递归性不仅简化了运算,也提高了编码的效率, 对最终的叶节点采用霍夫曼编码, 对中间的内节点采用变字长编码 。 此编码方法以多边形代替原图中相关性较 强的区域 , 其基本出发点仍是信源的统计特性和冗余度 。 图像分割采用非线性方法,结合视觉特性 ,考虑人类对方向的敏感性及纹理特性,以几何失真代替量化失真 ,可获得较好的主观质量和编码效率,提高了压缩 比。 按约定解码后,当用灰度的均值填充多边形后,代替原 图灰度会产生较明显的块状效应,此时可对相邻多边形的边界进行必要的灰度平滑处理,提高信噪比和视觉效果。 区域基图像编码方法,适应处理井下图像 ,压缩比较大时仍能使图像质量较好 。 图像分解主要使用计算机图形学的多边形处理技术 , 便于硬件实现提 高速度 。 井下摄取的图像数据压缩后送回地面 , 可有效地减少传输的数据量 , 有利于实现实时处理。
二、部分源代码
%
clc;clear;
%% ----------- Input ----------------
imname = ‘SanDiego.bmp’;
I_Orig = double(imread(imname));
[row, col] = size(I_Orig);
blksize = 64;
%% ----------- Wavelet Decomposition -------------
n_log = log2(row);
level = floor(n_log);
I_Dec = wavecdf97(I_Orig, level);
n_min = 1;
brates = [0.0625, 0.125, 0.25, 0.5, 1];
%% ----------- Coding ----------------
[out_code, blklen, n_max, n_min, out_S,out_R,out_N] = encode(I_Dec, blksize, n_min);
%% ----------- Decoding ----------------
disp([ ‘aa_BTOT_’ imname(1:end-4) ‘=[’]);
for rate=brates
I_DecR = decode(out_code, blklen, n_max, n_min, blksize, row, rate, out_S,out_R,out_N);
I_Rec = wavecdf97(I_DecR, -level);
MSE = sum(sum((I_Rec - I_Orig).^2))/(row*row);
PSNR = 10*log10(255*255/MSE);
disp([sprintf('%.4f',rate) ' ' sprintf('%.2f',PSNR)]);
- 1
- 2
- 3
- 4
end
disp(‘];’);
figure
subplot(211)
imshow(I_Orig,[])
title(‘原图’)
subplot(212)
imshow( I_Rec,[] )
title(‘压缩图’)
function blkorder = get_blkorder(row,blksize)
%
% Morton scanning order
%
blkorder = int32([1,1]);
levsize = blksize;
while levsize < row
hor = blkorder;
vor = blkorder;
dor = blkorder;
hor(:,2) = hor(:,2) + levsize;
vor(:,1) = vor(:,1) + levsize;
dor(:,1) = dor(:,1) + levsize;
dor(:,2) = dor(:,2) + levsize;
blkorder = [blkorder; hor; vor; dor];
levsize = levsize*2;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 冯桂,林其伟.基于区域二叉树压缩方法在井下图像数据处理中的应用[J].1997年中国地球物理学会第十三届学术年会论文集.
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/126511631
- 点赞
- 收藏
- 关注作者
评论(0)