首页 > 编程语言 >C++中的图像处理与变换总结

C++中的图像处理与变换总结

时间:2023-12-14 13:13:02浏览次数:46  
标签:变换 归一化 C++ 像素 图像处理 图像 掩码 随机噪声 DCT

个人总结

图像加法去噪是对同一场景的多幅图像求平均值,以降低加性随机噪声。随机噪声在不同的图像中是独立的,而场景信息是相同的。因此,通过将多幅图像相加并求平均,可以使场景信息保持不变,而噪声的影响则会减小。这是因为随机噪声的期望值为零,所以多幅图像的平均值会使噪声趋向于零。如下图:

在变换编码中,一个可逆的DCT为

首先先将输入图像转换为灰度图,若图像无法被完整地8 * 8分块,则进行边缘复制填充,使其能够完整地8 * 8分块。
将图像细分为不重叠的多个8 * 8像素块。随后按从左到右、从上到下的顺序处理这些像素块。处理完8 * 8块后,其64个像素都通过减去2m-1做灰度级移动,其中2m是图像中的灰度级数,并且计算其DCT变换。然后,得到的系数根据侠士同时去归一化并量化。
式中T是去归一化并量化后的系数,是图像的8*8块的DCT,是变换后的归一化数组。通过标定,可以得到各种压缩比和重建的图像质量。
DCT变换后,构造mask掩码矩阵,将其左上角赋值为1,其余部分赋值为0,然后将掩码矩阵与图像上每个块做点乘,达到舍弃高频系数的作用。接着就只需要将进行掩码操作后的矩阵进行复原,即DCT逆变换。操作后得到压缩后的图像。
由于此前进行了边缘复制填充,因此需要将其边缘填充部分像素舍弃,恢复原图像大小。

标签:变换,归一化,C++,像素,图像处理,图像,掩码,随机噪声,DCT
From: https://www.cnblogs.com/yuan-f/p/17900962.html

相关文章

  • C++ 快速加载 Dll 里的 API
    最近项目里要重新编写程序加载器,也就是编译出一个可执行文件,在Windows上是.exe为什么要程序加载器?个人理解是,可执行文件大小最好是越小越好,功能都可以由dll文件执行而程序加载器里最重要的是两个win32函数,分别是LoadLibrary和GetProcAddress前者是加载dll并返回i......
  • C++基础 -6- 二维数组,数组指针
    ———————二维数组,数组指针——————— ......
  • C++ Qt开发:Slider滑块条组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Slider滑块条组件的常用方法及灵活运用。当涉及到C++Qt开发中的Slider滑块条组件时,你可能会用到......
  • C++学习笔记九:值,常量,常表达式和常初始化
    1.值:Literal:Datathatisdirectlyrepresentedincodewithoutgoingthroughsomeothervariablestoredinmemory.值:直接在代码中表示的数据,无需通过内存中存储的其他变量。值不在内存中进行存储,而是直接在二进制的可执行文件中产生。1.1整型//Literaltypes:ua......
  • 算法战斗第二天C++2
    A.NextRound"Contestantwhoearnsascoreequaltoorgreaterthanthek-thplacefinisher'sscorewilladvancetothenextround,aslongasthecontestantearnsapositivescore..."—anexcerptfromcontestrules.Atotalofnpartic......
  • 快速傅里叶变换 | FFT 初学
    FFT前置多项式:形如\(A(x)=\sum\limits_{i=0}^{n-1}a_ix^i\)的式子,其中\(n\)表示项数。多项式乘法:\[\begin{aligned}C(x)&=A(x)\cdotB(x)\\&=\sum\limits_{i=0}^{2n-2}c_ix^i\end{aligned}\]其中,\(c_i=\sum\limits_{j=0}^ia_jb_{i-j}\)。多项式表示法:系数表示......
  • 算法战斗第二天C++1
    A.TeamOnedaythreebestfriendsPetya,VasyaandTonyadecidedtoformateamandtakepartinprogrammingcontests.Participantsareusuallyofferedseveralproblemsduringprogrammingcontests.Longbeforethestartthefriendsdecidedthattheywi......
  • C++ 析构函数 virtual 虚析构
    结论:当父类存在virtual函数时,则需要实现虚析构函数。直接上代码:#include<iostream>#include<memory>classAAA{public:AAA(){printf("AAA构造...\n");}//virtual~AAA(){printf("AAA析构...\n");}virtualvoidSayOk()=0;};cl......
  • C++ Qt开发:CheckBox多选框组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍CheckBox单行输入框组件的常用方法及灵活运用。QCheckBox是Qt中用于实现复选框的组件,它提供了......
  • 嵌入式图像处理:算法、应用与性能优化
    嵌入式系统在现代科技中扮演着重要的角色,广泛应用于医疗设备、汽车、工业控制、智能家居等领域。嵌入式图像处理作为其中的一个关键组成部分,为许多应用提供了视觉感知能力。本文将介绍嵌入式图像处理的算法、应用以及性能优化方法,并提供相关的代码示例。嵌入式图像处理算法图像采集......