IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【现代信号处理第五次作业】 -> 正文阅读

[Python知识库]【现代信号处理第五次作业】

1. 二维小波的分解(dwt2)

二维小波分解原理,采用行列分别一维处理。行处理:每一行为一维信号,通过一维的高低通滤波器dwt分解;列处理:将上述结果的每一列当成一维信号,通过一维的高低通滤波器dwt分解;得到近似分量、水平细节分量、垂直细节分量和对角细节分量四组分量。
在这里插入图片描述
在这里插入图片描述

1.1 仿写的dwt22.m函数

% 二维小波分解
% 行处理:每一行为一维信号,通过一维的高低通滤波器dwt分解
% 列处理:将上述结果的每一列当成一维信号,通过一维的高低通滤波器dwt分解
% 得到近似分量、水平细节分量、垂直细节分量和对角细节分量四组分量;
function [a,h,v,d] = dwt22(x,wname)
% 获取原始信号的尺寸
[row,col]=size(x);
% 行处理
for i =1: row
    [aa(i,:),dd(i,:)]=dwt(x(i,:),wname);
end
% 获取变换后信号的尺寸
[row,col]=size(aa);
% 列处理
for i =1: col
    [a(:,i),h(:,i)]=dwt(aa(:,i),wname);
    [v(:,i),d(:,i)]=dwt(dd(:,i),wname);
end
end

1.2 对比dwt22_test.m程序

%% 

% dwt2函数
% 功能:二维离散小波变换

clc;clear;
load woman;
nbcol = size(map,1);%返回矩阵的行数和列数
[cA1,cH1,cV1,cD1] = dwt2(X,'db1');
[cA11,cH11,cV11,cD11] = dwt22(X,'db1');
cod_x=wcodemat(X,nbcol);%返回矩阵X的编码矩阵,nbcol为编码的最大值
cod_cA1=wcodemat(cA1,nbcol);
cod_cH1=wcodemat(cH1,nbcol);
cod_cV1=wcodemat(cV1,nbcol);
cod_cD1=wcodemat(cD1,nbcol);
cod_cA11=wcodemat(cA11,nbcol);
cod_cH11=wcodemat(cH11,nbcol);
cod_cV11=wcodemat(cV11,nbcol);
cod_cD11=wcodemat(cD11,nbcol);
dec2d=[cod_cA1,cod_cH1;cod_cV1,cod_cD1];
dec22d=[cod_cA11,cod_cH11;cod_cV11,cod_cD11];
figure(1);
subplot(1,2,1),imshow(cod_x,[]);
title('量化后的图像');
subplot(1,2,2),imshow(dec2d,[]);
title('二维离散小波分解后的图像');

figure(2);
subplot(1,2,1),imshow(cod_x,[]);
title('量化后的图像');
subplot(1,2,2),imshow(dec22d,[]);
title('二维离散小波分解后的图像');

1.3 效果:

在这里插入图片描述

2. 二维小波的重构(idwt2)

二维小波分解原理,与分解相似,采用列行分别一维处理。列处理:近似分量和水平细节分量每一列当成一维信号,垂直细节分量和对角细节分量同理,通过一维的高低通滤波器idwt重构得到两组信号行处理:将上述两组信号结果的每一行为一维信号,再通过一维的高低通滤波器idwt重构得到原始信号。
在这里插入图片描述

2.1 仿写的idwt22.m函数

% 二维小波重构
% 列处理:近似分量和水平细节分量每一列当成一维信号,垂直细节分量和对角细节分量同理,通过一维的高低通滤波器idwt重构得到两组信号
% 行处理:将上述两组信号结果的每一行为一维信号,再通过一维的高低通滤波器idwt重构得到原始信号。
function x = idwt22(a,h,v,d,wname)
% 获取分解的尺寸
[row,col]=size(a);
% 列处理:
for i =1: col
    aa(:,i)=idwt(a(:,i),h(:,i),wname);
    dd(:,i)=idwt(v(:,i),d(:,i),wname);
end
% 获取重构的尺寸
[row,col]=size(aa);
% 行处理:
for i =1: row
    x(i,:)=idwt(aa(i,:),dd(i,:),wname);
end
end

2.2 对比idwt22_test.m程序

%% 

%% 
% idwt2函数
% 功能:二维离散小波反变换
clc;clear;
load woman;
sX=size(X);
[cA1,cH1,cV1,cD1]=dwt2(X,'db4');
A0=idwt2(cA1,cH1,cV1,cD1,'db4');
A1=idwt22(cA1,cH1,cV1,cD1,'db4');
subplot(1,3,1),imshow(X,[])
title('原始图像');
subplot(1,3,2),imshow(A0,[])
title('由二维小波分解重构后的图像');
subplot(1,3,3),imshow(A1,[])
title('二维小波自定义重构后的图像');

2.3 效果:

在这里插入图片描述
通过自定义分解和重构加深小波变换的认识,与matalb自带函数表现基本一致,达到对应效果。

参考文献:二维小波变换MATLAB实现

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:04:45  更:2022-06-25 18:05:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:09:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码