MATLAB图像小波变换
为什么80%的码农都做不了架构师?>>>
小波变换与小波包变换
人脸图像f(x,y) 的一层小波变换如下图所示:
图中L 和H 分别表示低通滤波器和高通滤波器,l(n) 和h(n) 分别表示它们相应的脉冲响应,2↓1表示降2采样fLL和fHH分别表示双向低频和高频小波子空间图像,而fLH和fHL分别表示一个方向低频、另一个方向高频的小波子空间图像。
若继续对fLL 做小波分解,则称为二层小波变换;若对4个子图都继续做小波分解,则称为二层小波包变换。对只含有低频成分的子图做小波分解,则称为不完全小波包变换。
图像小波变换的Matlab代码
clc;
clear;
close all;Xa =[40,10,56,46]; % 56*2=112,46*2-92(图片分辨率为112*92)
Xh =[40,10,56,46];
Xv =[40,10,56,46];
Xd =[40,10,56,46];
for i = 1:40 % 40个人脸for j = 1:10 % 1人10个表情I = imread(strcat('D:\Faces\ORL\s',num2str(i),'\',num2str(j),'.bmp')); [c1,s1]=wavedec2(double(I),1,'db1'); % 分别做4个方向的小波分解ca = appcoef2(c1,s1,'db1',1);ch = detcoef2('h',c1,s1,1);cv = detcoef2('v',c1,s1,1);cd = detcoef2('d',c1,s1,1);% A = uint8([wcodemat(ca,255),wcodemat(ch,255);wcodemat(cv,255),wcodemat(cd,255)]);% subplot(2,5,j),imshow(A,[],'InitialMagnification',100);for k = 1:56for l = 1:46Xa(i,j,k,l) = ca(k,l);Xh(i,j,k,l) = ch(k,l);Xv(i,j,k,l) = cv(k,l);Xd(i,j,k,l) = cd(k,l);endendend
endfor i = 1:1 % 查看第1个人的10个表情图的小波分解效果for j = 1:10xa = [56,46];xh = [56,46];xv = [56,46];xd = [56,46];for k = 1:56for l = 1:46xa(k,l) = Xa(i,j,k,l);xh(k,l) = Xh(i,j,k,l);xv(k,l) = Xv(i,j,k,l);xd(k,l) = Xd(i,j,k,l);endendA = uint8([wcodemat(xa,255),wcodemat(xh,255);wcodemat(xv,255),wcodemat(xd,255)]);subplot(2,5,j),imshow(A,[],'InitialMagnification',100);end
end
效果图
后记
本例仅给出图像1层小波变换,可以根据实际项目需求做n层图像小波分解,用于提取人脸图像特征。例如:
[c,s] = wavedec2(double(ca),1,'db1');
a = appcoef2(c,s,'db1',1);
% 构造基本分类器D1
for m = 1:28for n = 1:23D1(i,j,m,n) = a(m,n);end
end
h = detcoef2('h',c,s,1);
v = detcoef2('v',c,s,1);
d = detcoef2('d',c,s,1);
具体可以参考论文《基于模糊积分的不完全小波包子空间集成人脸识别 翟俊海 王熙照 张素芳》。
Reference
Matlab小波变换的三级分解程序用于图像处理
帖中代码:
clc;clear;close all
I = imread('lena.bmp');
%subplot(221);
subplot(221),imshow(I,[],'InitialMagnification',100);
title('原始载体图像')%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%图像的一级小波分解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[c1,s1]=wavedec2(double(I),1,'db1');
ca88 = appcoef2(c1,s1,'db1',1);
ch88 = detcoef2('h',c1,s1,1);
cv88 = detcoef2('v',c1,s1,1);
cd88 = detcoef2('d',c1,s1,1);
A88 = uint8([wcodemat(ca88,255),wcodemat(ch88,255);wcodemat(cv88,255),wcodemat(cd88,255)]);
%subplot(222);
subplot(222),imshow(A88,[],'InitialMagnification',100);
title('图像的一级小波分解');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%图像的二级小波分解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[c,s]=wavedec2(double(I),2,'db1');
ca2 = appcoef2(c,s,'db1',2);
ch2 = detcoef2('h',c,s,2);
cv2 = detcoef2('v',c,s,2);
cd2 = detcoef2('d',c,s,2);
%ca1 = appcoef2(c,s,'db2',1);
ch1 = detcoef2('h',c,s,1);
cv1 = detcoef2('v',c,s,1);
cd1 = detcoef2('d',c,s,1);A1 = [ca2*4,ch2*4;cv2*4,cd2*4];
k=s(2,1)*2-s(3,1);
ch1 = padarray(ch1,[k k],1,'post');
cv1 = padarray(cv1,[k k],1,'post');
cd1 = padarray(cd1,[k k],1,'post');
%A = [A1,ch1*4; cv1*4,cd1*4];
A = uint8([wcodemat(A1,255),wcodemat(ch1*10,255); wcodemat(cv1*10,255),wcodemat(cd1*10,255)]);
% min = min(A(:));
% max = max(A(:));
%subplot(223);
subplot(223),imshow(A,[],'InitialMagnification',100);
title('图像的二级小波分解');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%图像的三级小波分解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[c,s]=wavedec2(double(I),3,'db1');
ca3 = appcoef2(c,s,'db1',3);
ch3 = detcoef2('h',c,s,3);
cv3 = detcoef2('v',c,s,3);
cd3 = detcoef2('d',c,s,3);
ch2 = detcoef2('h',c,s,2);
cv2 = detcoef2('v',c,s,2);
cd2 = detcoef2('d',c,s,2);
ch1 = detcoef2('h',c,s,1);
cv1 = detcoef2('v',c,s,1);
cd1 = detcoef2('d',c,s,1);
A2 = [ca3*4,ch3*4;cv3*4,cd3*4];
k=s(2,1)*2-s(3,1);
ch2 = padarray(ch2,[k k],1,'post');
cv2 = padarray(cv2,[k k],1,'post');
cd2 = padarray(cd2,[k k],1,'post');
A1= [A2,ch2*4; cv2*4,cd2*4];
k=s(2,1)*4-s(4,1);
ch1 = padarray(ch1,[k k],1,'post');
cv1 = padarray(cv1,[k k],1,'post');
cd1 = padarray(cd1,[k k],1,'post');
AA = uint8([wcodemat(A1,255),wcodemat(ch1*4,255); wcodemat(cv1*4,255),wcodemat(cd1*4,255)]);
% min = min(A(:));
% max = max(A(:));
%subplot(224);
subplot(224),imshow(AA,[],'InitialMagnification',100);
title('图像的三级小波分解');
效果图:
转载于:https://my.oschina.net/keyven/blog/552050
MATLAB图像小波变换相关推荐
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- matlab图像融合评价,MATLAB 图像融合评估算法
MATLAB 图像融合评价算法 function laplacian(ori_A,ori_B) path(path,'FusionEvaluation/') %Ori_A = imread('cloc ...
- matlab 图像操作函数的详解
转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...
- 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
matlab设计: 与单纯运用某种自适应算法相比,基于小波分解的自适应滤波算法在收敛速度和稳定性上都有了很大的提高 小波变换: 示意:尺度越大,采用越大的时间窗,尺度越小,采用越短的时间窗,即尺度与频 ...
- matlab图像融合
matlab图像融合 [r,c]=size(y1); %根据低频融合算法进行图像融合 for i=1:r %首先取两幅源图像相应的小波分解系数绝对值最大者的 ...
- matlab图像取反_matlab对图像操作函数的详解
一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif') 注:计算机E盘上要有w01相应的.tif文件. 2. imwrite i ...
- 【Matlab 图像】滤波器原理使用及测试效果
滤波器使用及测试效果 滤波器1:低通滤波 原理 代码 效果 滤波器2:高斯平滑 原理 代码 效果 滤波器3:自适应中值滤波 原理 代码 效果 滤波器4:维纳滤波 原理 代码 效果 滤波器5:最大值滤波 ...
- 【Matlab 图像】边缘检测算法及效果演示
[Matlab 图像]边缘检测算法及效果演示 边缘检测 检测图像中的边缘 Matlab 代码 代码效果如下 边缘算法:robert 边缘算法:sobel prewitt 边缘算法:laplacian ...
- 【Matlab 图像】bwlabel() 连通域及图像分割
[Matlab 图像]bwlabel 连通域及图像分割 1. 函数含义: 2. 示例代码: 2.1 regionprops() 函数 2.1.1 语法如下: 2.1.2 说明如下: 2.2 sort( ...
最新文章
- hadoop错误,重新格式化namenode后,出现java.io.IOException Incompatible clusterIDs
- SQL 基礎語句-case
- 转代码判断邮箱是否合法
- 《UML面向对象设计基础》—第1章1.5节消息
- Cloud for Customer的主页加载逻辑
- 抓住尾部的StackOverFlowError
- android 相册 标签,在Android标签上,如何在图片下方显示文字?
- 【Linux入门学习之】Linux文件权限与目录配置
- 我们一般用的正则表达式合集和工具 any-rule
- oracle normal索引类型,Oracle中有多少种索引类型?
- PDF编辑(PDF替换指定页)---亲测实用有效!!!
- 其实,我只是一个工程师
- 获取所有权_住房所有权经济学深入研究
- .NET发邮件(验证码)
- 优秀孩子的父母都有这五个特点
- VideoCapture,mfc读取视频并使用滚动条
- java itextpdf 5 基础知识
- 打开浏览器时主页被锁定怎么也改不掉的一个好办法
- python随机生成二维列表_对python产生随机的二维数组实例详解
- android手机应用程序开发,Android手机应用程序开发标准