基于Matlab的图像方块编码(BTC)

  • DIP实验6:方块编码(BTC)
    • 实验目的
    • 实验内容
    • 参考代码
    • 实验结果

DIP实验6:方块编码(BTC)

实验目的

掌握方块编码的基本方法及压缩性能。

实验内容

1)编程实现子块为n×n的方块编码算法;
2)分别取n=4和8的方块尺寸进行实验,计算重建图像的PSNR和压缩比。

输出图像排列格式如下:

原图像 4×4BTC重建图像 8×8BTC重建图像

参考代码

figure('NumberTitle', 'off', 'Name', '实验6:方块编码(BTC)');
OI = imread('lena.bmp');    % 原始图像读取
[len, wid] = size(OI);rebuildImg1 = BTC2(OI, 4);
rebuildImg2 = BTC2(OI, 8);subplot(1,3,1); imshow(OI); title('原图像');
subplot(1,3,2); imshow(rebuildImg1); title('4×4BTC重建图像');
subplot(1,3,3); imshow(rebuildImg2); title('8×8BTC重建图像');[PSNR1, cr1] = Para(OI, rebuildImg1, 4)
[PSNR2, cr2] = Para(OI, rebuildImg2, 8)function rebuildImg = BTC1(OI, N)% rebuildImg    重建图像% OI    原始图像% N    子块大小为 m = N * Nm = N * N;OI = double(OI);[len, wid] = size(OI);% 判断len, wid是否能都被N整除if (len/N ~= round(len/N)) || (wid/N ~= round(wid/N))OI = Pad(OI, N);[len, wid] = size(OI);endrebuildImg = zeros(len, wid);for x = 1 : len/Nfor y = 1 : wid/Nblock = OI((x-1)*N+1 : (x*N), (y-1)*N+1 : (y*N));Xt = mean(mean(block));    % 计算均值q = 0;    % 计算q值: 比均值大的方块的个数for i = 1 : Nfor j = 1 : Nif block(i, j) >= Xtq = q + 1;endendend% 计算子块的标准差sigmasigma = sqrt(mean(mean(block .* block)) - Xt^2);if m == qa1 = Xt;a0 = Xt;elsea0 = round(Xt - sigma * sqrt(q/(m-q)));a1 = round(Xt + sigma * sqrt((m-q)/q));endfor i = 1 : Nfor j = 1 : Nif block(i, j) > Xtblock(i, j) = a1;elseblock(i, j) = a0;endendendrebuildImg((x-1)*N+1 : (x*N), (y-1)*N+1 : (y*N)) = block(1:N, 1:N);endendrebuildImg = uint8(rebuildImg);
endfunction rebuildImg = BTC2(OI, N)% rebuildImg    重建图像% OI    原始图像% N    子块大小为 m = N * Nm = N * N;OI = double(OI);[len, wid] = size(OI);rebuildImg = zeros(len, wid);for x = 1 : len/Nfor y = 1 : wid/Nblock = OI((x-1)*N+1 : (x*N), (y-1)*N+1 : (y*N));Xt = mean(mean(block));    % 计算均值q = 0;    % 计算q值: 比均值大的方块的个数u_xi = 0;d_xi = 0;for i = 1 : Nfor j = 1 : Nif block(i, j) > Xtq = q + 1;u_xi = u_xi + block(i, j);elsed_xi = d_xi + block(i, j);endendenda0 = round(d_xi/(m-q));a1 = round(u_xi/(q));for i = 1 : Nfor j = 1 : Nif block(i, j) > Xtblock(i, j) = a1;elseblock(i, j) = a0;endendendrebuildImg((x-1)*N+1 : (x*N), (y-1)*N+1 : (y*N)) = block(1:N, 1:N);endendrebuildImg = uint8(rebuildImg);
endfunction [PSNR, cr]= Para(I1, I2, N)
% 计算重建图像的PSNR和压缩比P = 8;                %编码一个像素用多少二进制位max = 2^P - 1;          %图像有多少灰度级I1 = double(I1);I2 = double(I2);[len, wid] = size(I1);m = N * N;% 峰值信噪比MSE = sum(sum((I1-I2).^2)) / (len * wid);PSNR = 20 * log10(max/sqrt(MSE));% 压缩比cr = P / (1 + 2 * P / m);
end% 若无法恰好分割,填充边缘
function newImg = Pad(OI, N)[len, wid] = size(OI);newImg(1:len,1:wid) = OI(1:len,1:wid);if mod(len, N) ~= 0padRow = N - mod(len, N);newImg(len+1:len+padRow) = OI(len-padRow:len);endif mod(wid, N) ~= 0padCol = N - mod(wid, N);newImg(wid+1:wid+1+padCol) = OI(wid-padCol:wid);end
end

实验结果

数字图像处理 实验六:方块编码(BTC)相关推荐

  1. 数字图像处理第六章 ——彩色图像处理(下)

    数字图像处理第六章 数字图像处理---彩色图像处理 (五) 彩色图像的空间滤波 5.1 彩色图像的平滑处理 5.2 彩色图像的锐化处理 (六) 直接在 RGB 矢量空间中处理 6.1 使用梯度的彩色边 ...

  2. 数字图像处理——第六章 彩色图像处理

    数字图像处理--第六章 彩色图像处理 文章目录 数字图像处理--第六章 彩色图像处理 1 彩色模型 1.1 RGB彩色模型 1.2 CMY 和CMYK彩色模型 1.3 HSI彩色模型 2 伪彩色图像处 ...

  3. 数字图像处理第六章——彩色图像处理(上)

    数字图像处理第六章 数字图像处理---彩色图像处理 (一) 在 MATLAB 中彩色图像的表示 1.1 RGB图像 1.2 索引图像 1.3 处理 RGB图像和索引 (二)彩色空间之间的转换 2.1 ...

  4. 【计算机视觉】数字图像处理(六)—— 图像压缩

    数字图像处理(六)-- 图像压缩 一.图像压缩概述 (一).图像编码技术的研究背景 1. 信息信息传输方式发生了很大的改变 2. 图像传输与存储需要的信息量空间 (1)彩色视频信息 (2)传真数据 3 ...

  5. matlab数字图像实验报告,数字图像处理实验报告(matlab)

    数字图像处理实验报告(matlab) 学院:自动化学院 班级:电081班 姓名:李林树 学号:40850099 2011年10月 实验一 直方图均衡化 一. 实验目的: 1. 熟悉图像数据在计算机中的 ...

  6. 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...

    数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...

  7. 数字图像处理实验(总计23个)汇总

    以下这些实验中的代码全部是我自己编写调试通过的,到此,最后进行一下汇总. 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Half ...

  8. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  9. 数字图像处理实验——Python语言实现

    数字图像处理实验--Python语言实现 实验一:数字图像处理入门 实验二:直方图均衡 实验三:线性平滑和锐化--掩模法 实验四:非线性平滑--中值滤波 实验五:非线性锐化--梯度法 GitHub地址 ...

最新文章

  1. 985博导给学生改论文,第一篇心态就崩了!
  2. linux centos 修改主机名
  3. 让服务器iis支持.apk文件下载的设置方法
  4. 计数排序Counting sort
  5. docker安装elasticsearch2.4.4
  6. Gstreamer之跨平台element(十六)
  7. 孙燕姿:(Hello, I'm Stefanie...)
  8. 录屏软件——大黄蜂,rar压缩包,解压后直接安装使用即可
  9. 墨卡托经纬度坐标转换
  10. 怎么用python制作随机点名软件_利用Python实现课堂点名器!辅导员大大的夸赞了我!...
  11. Nexus5刷Firefox OS 2.0
  12. Windows 11系统设置文件夹默认显示方式为“大图标”的方法
  13. Redis设计与实现——对象
  14. 基于openmv的小车
  15. 工作就是不让自己闲着
  16. caffe im2col 详解
  17. iconfont、svg图标字体下载并使用
  18. 搜狗拼音输入法词库是怎样炼成的
  19. 电解电容的ESR,想说三句话
  20. 【民生银行】直销银行的机遇与挑战

热门文章

  1. 举个栗子~Minitab 技巧(4):自定义缩放图形或数据显示
  2. 单机游戏c语言种类,这都是回忆!网吧里流行过的二十款经典游戏
  3. js 根据路径判断文件是否存在
  4. Linux后台开发系列之「01.安装 Linux 软件的 3 种方法」
  5. 《程序员》 -- 计算几何的魅力:美术馆问题
  6. 手机号可以用交换机来使用吗
  7. C++ 删除C盘中的用户(坑人必备,极度危险)
  8. [半监督学习] FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence
  9. ROS Nonetic: 机械臂UR5 + RobotIQ FT300 传感器 配置
  10. CT117E LCD操作 学习笔记