当前位置: 首页 > news >正文

数字图像处理-图像编码

1 实验题目

       对图像用离散余弦变换进行块编码和解码,并分析块大小的对于细节的影响影响, 给出 RMSE 重建误差曲线。

2 程序源代码

clc;
close all;
clear all;
% 读取图像
img = imread('photo.jpg');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 将图像分成 8x8 的块
blocks = im2col(gray_img, [8 8], 'distinct');
% 对每个块进行 DCT 变换
dct_blocks = dct2(blocks);
% 对 DCT 系数进行量化
quantized_blocks = round(dct_blocks / 4);%定义量化步长为 4
% 对量化后的 DCT 系数进行反量化
dct_blocks = quantized_blocks * 4;
% 对每个块进行 IDCT 变换
idct_blocks = idct2(dct_blocks);
% 将块重新组合成图像
reconstructed_img = col2im(idct_blocks, [8 8], size(gray_img), 'distinct');
% 计算重建误差
error = double(gray_img) - reconstructed_img;
% 计算均方根误差(RMSE)
rmse = sqrt(mean(error(:).^2));
figure;
subplot(121),imshow(quantized_blocks),title('块编码');
subplot(122),imshow(reconstructed_img),title('块解码');
% 绘制重建误差曲线
figure;
plot(error(:));
xlabel('Pixel');
ylabel('Reconstruction Error');
title(['RMSE: ', num2str(rmse)]);

3 运行结果

       块大小对细节的影响,较小的块大小可以更好地保留图像细节,因为小块更能够 适应图像中的细微变化。然而,较小的块大小也会增加编码和解码的计算量,并且可 能导致一些块边界的伪影。较大的块大小可以减少计算量,但可能会导致细节的丢失。


文章转载自:

http://OxAm6jiO.mysmz.cn
http://rCfgkf82.mysmz.cn
http://T9I2dKnL.mysmz.cn
http://tQotANbs.mysmz.cn
http://uiC0Srsh.mysmz.cn
http://EJSetvRF.mysmz.cn
http://wwN3gu0C.mysmz.cn
http://rxMHN9C8.mysmz.cn
http://ZjiLxhlU.mysmz.cn
http://oOmbKxex.mysmz.cn
http://yRRXijBK.mysmz.cn
http://w1OZu02m.mysmz.cn
http://2uxKSw1F.mysmz.cn
http://q5xjt8a8.mysmz.cn
http://9cFTmWXA.mysmz.cn
http://AG29NSm3.mysmz.cn
http://METfbarU.mysmz.cn
http://BvxBkQ7q.mysmz.cn
http://LbGfQIFj.mysmz.cn
http://a8mrQ5K5.mysmz.cn
http://QnYVC2g3.mysmz.cn
http://EzWlHypQ.mysmz.cn
http://ynJFmwIh.mysmz.cn
http://qzLlhHqc.mysmz.cn
http://DHNMY2MS.mysmz.cn
http://E07nnh7q.mysmz.cn
http://SJ9L43Ky.mysmz.cn
http://J5wn6xOg.mysmz.cn
http://vlGnmwNK.mysmz.cn
http://CuVveamf.mysmz.cn
http://www.dtcms.com/a/376872.html

相关文章:

  • 基于RDMA 通信的可负载均衡高性能服务架构
  • java多线程场景3-并发处理和异步请求
  • <uniapp><指针组件>基于uniapp,编写一个自定义箭头指针组件
  • 新手向:中文语言识别的进化之路
  • Jakarta EE 课程 --- 微型资料投递与分发(Mini Drop-off Box)
  • 【船类】监控录像下船舶类别检测识别数据集:近7k图像,6类,yolo标注
  • 《UE5_C++多人TPS完整教程》学习笔记51 ——《P52 使用我们的瞄准偏移(Using Our Aim Offsets)》
  • 腾讯云远程桌面连接不上?5步排查法解决RDP连接失败
  • ffplay播放pcm
  • 计算机毕业设计 基于Hadoop的B站数据分析可视化系统的设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 【Halcon 】Halcon 裁剪尺寸的像素陷阱全解析:为什么要 -0.5,为什么要 -1,而圆却不用?
  • 机器视觉质检数据融合PLM:产品缺陷根因分析新范式
  • 【超详细图文教程】2025年最新Win10 系统安装 MySQL 教程
  • 医疗行业面临的网络安全挑战及应对策略
  • JVM CMS垃圾回收器深度解析
  • 鸿蒙Next ArkWeb进程解析:多进程架构如何提升Web体验
  • Credo发布专为低功耗、高带宽与超低时延的AI网络打造的Bluebird 1.6T光DSP芯片
  • Shell 循环语句与函数全解析
  • Zookeeper核心知识全解:节点类型、集群架构与选举机制
  • Android 项目中 Gradle 配置实战:多渠道打包、签名配置、版本管理
  • 新手向:实现验证码程序
  • 【小程序】微信小程序隐私协议
  • LeetCode 刷题【71. 简化路径】
  • 【LeetCode 每日一题】1493. 删掉一个元素以后全为 1 的最长子数组——(解法一)预处理
  • Java代理模式详解
  • 【论文阅读】MEDDINOV3:如何调整视觉基础模型用于医学图像分割?
  • 超声波探伤的所用到的频段?
  • 关于ping不通,如何排查?
  • const allImages = { ...leftCategoryImages, ...rightCategoryImages }; 是是什么用法
  • 论文阅读:arxiv 2023 Large Language Models are Not Stable Recommender Systems