1. 程式人生 > >數字影象處理--小波變換MATLAB程式

數字影象處理--小波變換MATLAB程式

小波變換(wavelet transform,WT)是一種新的變換分析方法,它繼承和發展了短時傅立葉變換區域性化的思想,同時又克服了視窗大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的“時間-頻率”視窗,是進行訊號時頻分析和處理的理想工具。它的主要特點是通過變換能夠充分突出問題某些方面的特徵,能對時間(空間)頻率的區域性化分析,通過伸縮平移運算對訊號(函式)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻訊號分析的要求,從而可聚焦到訊號的任意細節,解決了Fourier變換的困難問題,成為繼Fourier變換以來在科學方法上的重大突破。(摘自百度百科)

1 小波變換MATLAB程式

//小波變換
I=imread('66.jpg');
subplot(2,2,1);
imshow(I);
title('原始影象');
J=rgb2gray(I);
subplot(3,2,2);
imshow(J);
colormap(map);
title('灰度影象');
 [cA1,cH1,cV1,cD1] = dwt2(J,'bior3.7');   
A1 = upcoef2('a',cA1,'bior3.7',1); 
H1 = upcoef2('h',cH1,'bior3.7',1);
V1 = upcoef2('v',cV1,'bior3.7',1);
D1 = upcoef2('d',cD1,'bior3.7',1);
subplot(3,2,3); image(wcodemat(A1,192));
title('近似係數 A1')
subplot(3,2,4); image(wcodemat(H1,192));
title('水平細節 H1')
subplot(3,2,5); image(wcodemat(V1,192));
title('垂直細節 V1')
subplot(3,2,6); image(wcodemat(D1,192));
title('對角線細節 D1')
Y1=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,2);image(Y1);title('一重小波重構影象');

處理之後的影象

2 多重小波變換MATLAB程式

//多重小波變換
I=imread('66.jpg');
subplot(2,2,1);
imshow(I);
title('原始影象');
J=rgb2gray(I);
 [cA1,cH1,cV1,cD1] = dwt2(J,'bior3.7');    
A1 = upcoef2('a',cA1,'bior3.7',1); 
H1 = upcoef2('h',cH1,'bior3.7',1);
V1 = upcoef2('v',cV1,'bior3.7',1);
D1 = upcoef2('d',cD1,'bior3.7',1);
Y=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,2);image(Y);title('一重小波重構影象');
A1 = upcoef2('a',cA1,'bior3.7',2); 
H1 = upcoef2('h',cH1,'bior3.7',2);
V1 = upcoef2('v',cV1,'bior3.7',2);
D1 = upcoef2('d',cD1,'bior3.7',2);
Y=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,3);image(Y);title('二重小波重構影象');
A1 = upcoef2('a',cA1,'bior3.7',3); 
H1 = upcoef2('h',cH1,'bior3.7',3);
V1 = upcoef2('v',cV1,'bior3.7',3);
D1 = upcoef2('d',cD1,'bior3.7',3);
Y=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,4);image(Y);title('三重小波重構影象');

實驗結果

下一篇數字影象處理--影象的增強