之前也学过,但没有个具体总结,忘差不多了。


DCT变换
一、

DCT变换的全称是离散余弦变换(DCT),主要用于数据或者图像的压缩,由于DCT能够将空域的信号转换到频域上,因此具有良好的去相关性的性能。DCT变换本身是无损的且具有对称性。对原始图像进行离散余弦变换,变换后DCT系数能量主要集中在左上角,其余大部分系数接近于零。将变换后的DCT系数进行门限操作,将小于一定值系数归零,这就是图像压缩中的量化过程,然后进行逆DCT运算,可以得到压缩后的图像。

我们常见的JPEG静态图像编码以及MJPEG、MPEG动态编码等标准中都使用了DCT变换。

二、公式

二维DCT变换:

f(i,j)是原始的信号,F(u.v)是变换后的系数,N是原始图像的点数,此处为N*N,矩形时可改为N*M。

例如:(假如为N*M矩阵)F(0,0)=ΣΣf(i,j)  /   根号(N*M)

二维DCT反变换:

三、dct变换的特征:

    一个图像的DCT低频系数分布在DCT系数矩阵的左上角,高频系数分布在右下角;

    低频系数的绝对值大于高频系数的绝对值;

    图像的低频部分集中了图像的大部分能量,鲁棒性强但不可见性差;

    图像的高频部分体现了图像的细节,不可见性强但鲁棒性差。

但并不是所有的二维矩阵都有这些特征。

四、问:为什么高频是次要的

DCT变换对图像进行压缩的原理是减少图像中的高频分量,高频主要是对应图像中的细节信息,而我们人眼对细节信息并不是很敏感,因此可以去除高频的信息量。另外,去掉50%的高频信息存储部分,图像信息量的损失不到5%。

五、code and result

clc;
clear;X=imread("youziyin.png");
X0=rgb2gray(X);[a,b]=size(X0);
Y1=blkproc(X0,[8 8],'dct2');
X1=blkproc(Y1,[8 8],'idct2');subplot(2,3,1);
imshow(uint8(X));
title('原始彩色图');subplot(2,3,2);
imshow(uint8(Y1));
title('分块DCT变换图');subplot(2,3,3);
imshow(uint8(X1));
title('分块DCT恢复图');Y2=dct2(X0);
X2=idct2(Y2);subplot(2,3,4);
imshow(uint8(X0));
title('原始灰度图');subplot(2,3,5);
imshow(uint8(Y2));
title('DCT变换图');subplot(2,3,6);
imshow(uint8(X2));
title('DCT反变换恢复图');

reference: https://www.cnblogs.com/wyuzl/p/7880124.html

八、基函数

https://www.h3399.cn/201803/564043.html


DWT变换

一、小波变换

搜狗百科介绍的小波:https://baike.sogou.com/v207283.htm?fromTitle=%E5%B0%8F%E6%B3%A2%E5%8F%98%E6%8D%A2

这三个也可以用来参考理解:

https://blog.csdn.net/shenziheng1/article/details/52973715

https://blog.csdn.net/carson2005/article/details/40981939

https://mp.weixin.qq.com/s?src=3&timestamp=1586331975&ver=1&signature=ApxbrqJNHSesYNQ2UF1VYl3WwA0qgIacTPzCkimq1PHAoGAkMZ3SchwHYuOvcMxolyPugp3CvzE3WscMnHKr1xDOWnfuGIwUnqprUBmQt29cEjG6HoBxh9vzz5ojrXvUlO3gNS*vlzbWVOEF0rg1OzOLsHbpn2E7FNGXNp5U5m8=

傅里叶变换可以得到信号的频域信息,小波变换可以得到时频信息(短时傅里叶变换也可得到这些信息)。小波可以实现正交化,短时傅里叶变换不能。

对于突变信号,傅里叶变换会产生吉布斯效应,而衰减的小波会解决这一问题。

2D 小波变换

             

二、二维离散小波

A是低频信息,H是水平高频信息,V是垂直高频信息、D是对角高频信息。

一维haar小波

二维haar小波

从水平和竖直两个方向进行高通和低通滤波,图a表示原图,图b表示经过一级小波变换的结果,h1 表示水平反向的细节,v1 表示竖直方向的细节,c1表示对角线方向的细节,b表示下2采样的图像。图c中表示继续进行Haar小波变换。

三、MATLAB实现

https://zhuanlan.zhihu.com/p/29482162

一层分解:

pic=imread('lena.jpg');
picg=rgb2gray(pic);
[cA,cH,cV,cD]=dwt2(picg,'haar');%使用haar小波figure
imshow(picg);
title('原图');figure
subplot(2,2,1);imshow(uint8(cA)),title('低频分量');
subplot(2,2,2);imshow(uint8(cH)),title('水平细节分量');
subplot(2,2,3);imshow(uint8(cV)),title('垂直细节分量');
subplot(2,2,4);imshow(uint8(cD)),title('对角线细节分量');

result:从工作区可以看出,生成的每个子图都变成了原图像的1/4大小。

    

两层分解:

[C,S]=wavedec2(X,N,'wname')%使用指定的小波基函数对矩阵X进行N层分解
[C,S]=wavedec2(X,N,Lo_D,Hi_D)%使用指定的低通滤波器Lo_D和高通滤波器Hi_D分解信号为N层;%C为各层分解系数,S为各层分解系数的大小(行数及列数)

X0=imread('lena.jpg');
X=rgb2gray(X0);[c,s]=wavedec2(X,2,'db1');%进行2尺度二维离散小波分解。分解小波函数-db1
[cH1,cV1,cD1]=detcoef2('all',c,s,1);%尺度1的所有方向的高频系数
[cH2,cV2,cD2]=detcoef2('all',c,s,2);%尺度2的所有方向的高频系数
cA1=appcoef2(c,s,'db1',1);%尺度1的低频系数
cA2=appcoef2(c,s,'db1',2);%尺度2的低频系数figure;
subplot(3,3,1);imshow(X);title('原图');
subplot(3,3,2);imshow(uint8(cA1));axis off;title('尺度1的低频系数图像');
subplot(3,3,3);imshow(uint8(cA2));axis off;title('尺度2的低频系数图像');figure;
subplot(3,3,4),imshow(uint8(cH1));axis off;title('尺度1水平方向高频系数');
subplot(3,3,5),imshow(uint8(cV1));axis off;title('尺度1垂直方向高频系数');
subplot(3,3,6),imshow(uint8(cD1));axis off;title('尺度1斜线方向高频系数');
subplot(3,3,7),imshow(uint8(cH2));axis off;title('尺度2水平方向高频系数');
subplot(3,3,8),imshow(uint8(cV2));axis off;title('尺度2垂直方向高频系数');
subplot(3,3,9),imshow(uint8(cD2));axis off;title('尺度2斜线方向高频系数');

result:进行一层分解后,对尺度一的低频系数图像继续分解得到尺度二的四个子图。

从工作区可以看到,一层子图是原图的1/4,二层子图是原图的1/16(也就是一层子图的1/4)

这是c和s的数据,因为原图512*512,所以c就是262144

DCT变换 / DWT变换 ----课堂笔记相关推荐

  1. (附Matlab程序)(二)基于DCT编码的图像压缩:对分解后的每个数据小方块进行DCT及IDCT变换

    问题一:随机选取一幅图像x.jpg,先将图像分解为8x8个数据块,然后分别对分解后的每个数据小方块进行DCT及IDCT变换,分别保留左上角3.10.15.32个系数进行处理,并对结果进行对比分析. c ...

  2. 图形学笔记(四)变换——三维变换(三维旋转与欧拉角)、MVP变换、视图变换、投影变换(正交投影与透视投影)

    图形学笔记(三)变换--缩放.镜像.切变 图形学笔记(五)光栅化--屏幕.像素.屏幕空间.视口变换.基础图元与三角形.采样.包围盒.锯齿或走样 文章目录 1 三维空间中的变换 1.1 三维空间中的齐次 ...

  3. dct变换java_DCT变换的基函数与基图像(图)

    DCT变换的基函数与基图像(图) 07-25栏目:技术 TAG:dct变换 dct变换 1. 图像变换的基函数 在图像的二维变换中,如果图像本身是正方形的(图像的长与宽相等),并且图像的变换核满足课可 ...

  4. 变换Transformation(2)(笔记)

    文章目录 三.三维变换 预览 三维旋转变换 欧拉角(Euler angles) 罗德里格旋转公式(Rodrigues' Rotation Formula) 四.视图/摄像机变换(View/Camera ...

  5. 变换Transformation(1)(笔记)

    文章目录 一.二维变换 线性变换和矩阵 缩放 对称(Reflection) 切变(Shear) 旋转(Rotate) 平移(Translate) 二.齐次坐标(Homogenous Coordinat ...

  6. 管理系统中计算机应用第四章重点,管理系统中计算机应用课堂笔记第四章(4)...

    管理系统中计算机应用课堂笔记第四章(4) 分类:自考 | 更新时间:2016-07-08| 来源:转载 这个分析和抽象工作可分以下三步进行: 5.2.1数据流程图的绘制 数据流程图既是对原系统进行分析 ...

  7. AI公开课:19.04.18俞益洲—深睿医疗CS《计算机视觉的应用与落地》课堂笔记以及个人感悟

    AI公开课:19.04.18俞益洲-深睿医疗CS<计算机视觉的应用与落地>课堂笔记以及个人感悟 导读       俞益洲,现为深睿医疗联合创始人.首席科学家(Chief Scientist ...

  8. 计算机网络微课堂笔记

    计算机网络 计算机网络微课堂 笔记总结 视频地址:https://www.bilibili.com/video/BV1c4411d7jb 文章目录 计算机网络 第一章 概述 1.1 计算机网络在信息时 ...

  9. javaweb课堂笔记(一)

    文章目录 javaweb课堂笔记(一) 一.tomcat服务器 二.JSP 1.JSP执行特点 2.JSP语法特点 4.指令 1)page 2)指令 三.表单(登录) 1.表单 2.异常 3.登录界面 ...

最新文章

  1. AngularJS中的指令全面解析(必看)
  2. netflix ribbon概述
  3. 思科路由PPPOE基本配置
  4. 360桌面计算机,360桌面管理软件
  5. java xstream jar_Java库使用----xstream1.3.1
  6. matlab瓶盖盖严检查,盖检机|瓶盖检测|外观检测设备|誉阵科技
  7. 数据结构之顺序队列的优化
  8. Web Hacking 101 中文版 十四、XML 外部实体注入(一)
  9. Android Junit测试
  10. asp.net弹出对话框
  11. 有关wxGLCanvas的问题
  12. 德标螺纹规格对照表_德标、欧标、国际、国标对照表
  13. macOS Big Sur 11.6.5 (20G527) Boot ISO 原版可引导镜像
  14. 设置电脑保护视力的颜色
  15. 比林志玲cute的katee
  16. svg配合css3动画_如何使用CSS制作节日SVG图标动画
  17. 物联网考计算机是跨专业,2014考研计算机等专业 加入物联网技术方向_跨考网
  18. android5.1设置ip,android5.1 imx6q接并口摄像头(IPU1-CSI1)怎么配置
  19. 【测绘程序设计】——潮汐调和分析
  20. Java反射面试总结(二)

热门文章

  1. 已解决!!!“Error parsing the file for keys”
  2. HTML三十条最佳实践
  3. 执行git commit命令时提示Please tell me who you are.
  4. matlab之bar图只有一组数据时,如何让每个bar都有不同的颜色?
  5. Educational Codeforces Round 65 (Rated for Div. 2)A. Telephone Number
  6. win10默认浏览器不显示谷歌浏览器_浅析win10系统谷歌浏览器网页显示不正常的应对办法...
  7. python导入常见问题和处理
  8. 心态决定命运(别让心态毁了你自己)
  9. 使用VLD查找内存泄漏
  10. 码农二代有多强?学区房?不存在的!