MATLAB图像小波变换
生活随笔
收集整理的這篇文章主要介紹了
MATLAB图像小波变换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
小波變換與小波包變換
? ? ? ? 人臉圖像f(x,y) 的一層小波變換如下圖所示:
? ? ? ? 圖中L 和H 分別表示低通濾波器和高通濾波器,l(n) 和h(n) 分別表示它們相應(yīng)的脈沖響應(yīng),2↓1表示降2采樣fLL和fHH分別表示雙向低頻和高頻小波子空間圖像,而fLH和fHL分別表示一個(gè)方向低頻、另一個(gè)方向高頻的小波子空間圖像。
? ? ? ? 若繼續(xù)對fLL?做小波分解,則稱為二層小波變換;若對4個(gè)子圖都繼續(xù)做小波分解,則稱為二層小波包變換。對只含有低頻成分的子圖做小波分解,則稱為不完全小波包變換。
圖像小波變換的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個(gè)人臉for?j?=?1:10????%?1人10個(gè)表情I?=?imread(strcat('D:\Faces\ORL\s',num2str(i),'\',num2str(j),'.bmp'));??????[c1,s1]=wavedec2(double(I),1,'db1');????%?分別做4個(gè)方向的小波分解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個(gè)人的10個(gè)表情圖的小波分解效果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層小波變換,可以根據(jù)實(shí)際項(xiàng)目需求做n層圖像小波分解,用于提取人臉圖像特征。例如:
[c,s]?=?wavedec2(double(ca),1,'db1'); a?=?appcoef2(c,s,'db1',1); %?構(gòu)造基本分類器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('圖像的三級小波分解');效果圖:
轉(zhuǎn)載于:https://my.oschina.net/keyven/blog/552050
總結(jié)
以上是生活随笔為你收集整理的MATLAB图像小波变换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内建模块_月隐学python第14课
- 下一篇: 类和对象_月隐学python第15课