小波總結
1.小波分析用于去噪
二維信號用二維小波分析的去噪步驟如下:
(1.)二維信號的小波分解。選擇一個小波和小波分解的層次N,然后計算信號s到第N層的分解。(2)對高斯系數(shù)進行閾值量化。對于從1到N的每一層,選擇一個閾值,并對這一層的高斯系數(shù)進行軟閾值量化處理。
(3)二維信號的重構。根據(jù)小波分解的第N層的低頻系數(shù)和經(jīng)過修改的從第1層到第N層的各層高頻系數(shù)計算二維信號的小波重構。
其中的重點是如何選取閾值和閾值的量化,本代碼中使用了ddendmp和wdencmp函數(shù)。代碼如下:
loaddetfingr%裝入圖像
init=3718025452;%下面進行噪聲的生成
randn("seed",init);%randn產(chǎn)生均值0,方差1的正態(tài)隨機噪聲Xnoise=X+18*(randn(size(X)));
colormap(map);%顯示原始圖像以及它的含噪聲的圖像subplot(221),image(wcodemat(X,192));title("原始圖像X");axissquare
subplot(222),image(wcodemat(Xnoise,192));title("含噪聲的圖像Xnoise");axissquare
[c,s]=wavedec2(X,2,"sym5");%用sym5小波對圖像信號進行二層的小波分解%下面進行圖像的去噪處理
%使用ddencmp函數(shù)來計算去噪的默認閾值和熵標準%使用wdencmp函數(shù)用小波來實現(xiàn)圖像的去噪和壓縮[thr,sorh,keepapp]=ddencmp("den","wv",Xnoise);
[Xdenoise,cxc,lxc,perf0,perfl2]=wdencmp("gbl",c,s,"sym5",2,thr,sorh,keepapp);subplot(223),image(Xdenoise);%顯示去噪后的圖像title("去噪后的圖像")axissquare
得到如下的圖形:
可以看出,最終得到的圖像在濾除噪聲的同時細節(jié)信息也損失嚴重。
2.小波用于圖像壓縮
一個圖像作小波分解以后,可得到一系列不同分辨率的圖像,不同分辨率的子圖像對應的頻率是不相同的。高分辨率(即高頻)子圖像上大部分點的數(shù)值都接近0,越是高頻這種現(xiàn)象越明顯。對于一個圖像來說,表現(xiàn)一個圖像最主要的部分是低頻部分,所以一個最簡單的壓縮方法是利用小波分解,去掉圖像的高頻部分,而只保留低頻部分。
代碼如下:
[X,map]=imread("lena.bmp");%調入圖像X=double(X)/255;%歸一化處理figure(1);subimage(X);%顯示圖像colormap(map)
[C,S]=wavedec2(X,2,"bior3.7");%對圖像用"bior3.7"進行2層小波分解thr=20;%設置小波系數(shù)閾值
ca1=appcoef2(C,S,"bior3.7",1);%提取小波分解結構中第一層的低頻系數(shù)和高頻系數(shù)ch1=detcoef2("h",C,S,1);cv1=detcoef2("v",C,S,1);cd1=detcoef2("d",C,S,1);
a1=wrcoef2("a",C,S,"bior3.7",1);%分別對各頻率成分進行重構h1=wrcoef2("h",C,S,"bior3.7",1);v1=wrcoef2("v",C,S,"bior3.7",1);d1=wrcoef2("d",C,S,"bior3.7",1);c1=[a1,h1;v1,d1];
%進行圖像壓縮處理,保留小波分解第一層低頻信息,進行圖像的壓縮%第一層的低頻信息為ca1,顯示第一層的低頻信息%首先對第一層信息進行量化編碼ca1=appcoef2(C,S,"bior3.7",1);ca1=wcodemat(ca1,440,"mat",0);ca1=0.5*ca1;
figure(2),image(ca1)%顯示第一次壓縮圖像colormap(map)
%保留小波分解第二層低頻信息,進行圖像的壓縮,此時壓縮比更大%第二層的低頻信息信息為ca2,顯示第二層的低頻信息ca2=appcoef2(C,S,"bior3.7",2);
%首先對第二層信息進行量化編碼ca2=wcodemat(ca2,440,"mat",0);%改變圖像的高度ca2=0.5*ca2;
%顯示第二次壓縮圖像figure(3),image(ca2);colormap(map)試驗結果如下:
第一幅為原圖,第二幅圖像是用小波分解的第一層低頻信息重構得到的。第三幅圖像是用小波分解的第二層低頻信息重構得到的。
3.小波用于邊界扭曲
代碼如下:
%調入圖像,設置DWT的填充模式為零填充,顯示圖像loadgeometry;
subplot(221),image(X);title("a,原始圖像");dwtmode("zpd");
%利用sym4小波基,調用wavedec2函數(shù)對圖像進行多級小波分解lev=3;
[C,S]=wavedec2(X,lev,"sym4");
%調用wrcoef2函數(shù)根據(jù)一維變換系數(shù)進行單支重構a1=wrcoef2("a",C,S,"sym4",lev);
subplot(222);image(a1);title("b,經(jīng)sym4小波變換三階重構后的圖像");%利用另一種邊界填充技術----光滑填充方法
%然后使用與上面同樣的小變換對填充圖像進行變換,并且顯示圖像dwtmode("spd");
[C,S]=wavedec2(X,lev,"sym4");a3=wrcoef2("a",C,S,"sym4",lev);
subplot(223),image(a3);title("c,經(jīng)光滑填充小波變換后的圖像");所得圖像如下:
4.使用小波包進行分解和重構
為了克服小波分解在高頻段的頻率分辨率較差,而在低頻段的時間分辨率較差的缺點,人們在小波分解的基礎上提出了小波包分解。小波包分解提高了信號的時頻分辨率。比小波分解更高級,對信號的分解重構更能體現(xiàn)多分辨率的特征。是一種更精細的信號分析方法。
小波包方法是小波分解的推廣,它提供了更豐富的信號分析方法。小波包元素是由三個參數(shù)確定波形,分別是:位置、尺度和頻率。
對一個給定的正交小波函數(shù),可以生成一組小波包基。每一個小波包基里提供一種特定的信號分析方法,它可以保存信號的能量并根據(jù)特征進行精確的重構。小波包可以對一個給定的信號進行大量不同的分解。在正交小波分解過程中,一般是將低頻系數(shù)分解為兩部分。分解后得到一個近似系數(shù)向量和一個細節(jié)系數(shù)向量。在兩個連續(xù)的近似系數(shù)中丟失的信息可以在細節(jié)系數(shù)中得到。下一步是將近似系數(shù)向量進一步分解為兩個部分,而細節(jié)系數(shù)向量不再分解。在小波包分解中,每一個細節(jié)系數(shù)向量也使用近似系數(shù)向量分解同樣的分法分為兩部分。因此它提供了更豐富的分析方法:在一維情況下,它產(chǎn)生一個完整的二叉樹;在二維情況下,它產(chǎn)生一個完整的四叉樹。代碼如下:clear;clc;
figure(1);
%讀出原始圖像subplot(1,2,1);input=imread("lena.jpg");imshow(input);title("原始圖像");%三色分離
input=double(input);inputr=input(:,:,1);inputg=input(:,:,2);
inputb=double(input(:,:,3));
%對原圖像R分量做小波包分解
wpr=wpdec2(inputr,2,"db2","shannon");%用db2小波對圖像小波包兩層分解%對原圖像G分量做小波包分解
wpg=wpdec2(inputg,2,"db2","shannon");%用db2小波對圖像小波包兩層分解%對原圖像B分量做小波包分解
wpb=wpdec2(inputb,2,"db2","shannon");%用db2小波對圖像小波包兩層分解%二維小波包分解的重構wpr=wprec2(wpr);wpg=wprec2(wpg);wpb=wprec2(wpb);
%合并原圖像的RGB三分量output(:,:,1)=wpr;output(:,:,2)=wpg;output(:,:,3)=wpb;subplot(1,2,2);B=uint8(output);imshow(B);
title("合成后原圖像");
試驗所得圖像如下圖所示:
小波包分解樹的結構如下圖所示:
5.使用小波進行圖像融合
代碼如下:
[X,map]=imread("AralSea-Kazahkstan.bmp");X1=X;map1=map;subplot(221);image(X1);
colormap(map1);title("lina");axissquare
[X,map]=imread("Cyprus-Europa.bmp");X2=X;map2=map;subplot(222);image(X2);
colormap(map2);title("couple");axissquare
[c1,s1]=wavedec2(X1,2,"sym4");sizec1=size(c1);fori=1:sizec1(2)c1(i)=1.2*c1(i);end
[c2,s2]=wavedec2(X2,2,"sym4");c=c1+c2;c=0.5*c;
xx=waverec2(c,s1,"sym4");subplot(223);image(xx);
title("融合圖象");axissquare
得到如下的融合圖像:
6.小波實現(xiàn)數(shù)字水印
數(shù)字水印(DigitalWatermarking)技術是將一些標識信息(即數(shù)字水印)直接嵌入數(shù)字載體(包括多媒體、文檔、軟件等)當中,但不影響原載體的使用價值,也不容易被人的知覺系統(tǒng)(如視覺或聽覺系統(tǒng))覺察或注意到。通過這些隱藏在載體中的信息,可以達到確認內(nèi)容創(chuàng)建者、購買者、傳送隱秘信息或者判斷載體是否被篡改等目的。數(shù)字水印是信息隱藏技術的一個重要研究方向。代碼如下:clc;clearall;closeall;img=imread("home.jpg");%Gettheinputimage
img=rgb2gray(img);%Converttograyscaleimageimg=double(img);
c=0.01;%InitialisetheweightofWatermarkingfigure,imshow(uint8(img)),title("OriginalImage");[pq]=size(img);
%Generatethekey生成密鑰n=awgn(img,4,3,"linear");N=imabsdiff(n,img);
figure,imshow(double(N)),title("Key");
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters("haar");%Obtainthefitersassociatedwithhaar生成haar小波的濾波器[ca,ch,cv,cd]=dwt2(img,Lo_D,Hi_D);%Compute2Dwavelettransform%Performthewatermarking執(zhí)行過程y=[cach;cvcd];
Y=y+c*abs(y).*N;p=p/2;q=q/2;fori=1:pforj=1:q
nca(i,j)=Y(i,j);ncv(i,j)=Y(i+p,j);nch(i,j)=Y(i,j+q);
ncd(i,j)=Y(i+p,j+q);endend
%DisplaytheWatermarkedimage顯示數(shù)字水印后的圖像wimg=idwt2(nca,nch,ncv,ncd,Lo_R,Hi_R);
figure,imshow(uint8(wimg)),title("WatermarkedImage");diff=imabsdiff(wimg,img);%求出兩幅圖像的絕對差值figure,imshow(double(diff));title("Differences");得到下圖的結果
圖一是原圖,圖二為帶加密的圖形,圖三為在原圖基礎上加密后所得的圖形,圖四為圖一和圖二的差值圖像。由圖一和圖三可以看出,從肉眼來看,兩幅圖形并沒有大的差異,圖三很好的將圖二的信息隱藏在圖一之中。
7.小波進行邊緣檢測
代碼如下:clearall;
loadwbarb;%小波變換邊緣提取程序I=ind2gray(X,map);%檢索圖轉成灰度圖imshow(I);
I1=imadjust(I,stretchlim(I),[0,1]);%調整圖像的像素值,可以改變對比度和顏色figure;
imshow(I1);[N,M]=size(I);
h=[0.125,0.375,0.375,0.125];g=[0.5,-0.5];delta=[1,0,0];J=3;
a(1:N,1:M,1,1:J+1)=0;dx(1:N,1:M,1,1:J+1)=0;dy(1:N,1:M,1,1:J+1)=0;d(1:N,1:M,1,1:J+1)=0;
a(:,:,1,1)=conv2(h,h,I,"same");%二維卷積dx(:,:,1,1)=conv2(delta,g,I,"same");dy(:,:,1,1)=conv2(g,delta,I,"same");x=dx(:,:,1,1);y=dy(:,:,1,1);
d(:,:,1,1)=sqrt(x.^2+y.^2);
I1=imadjust(d(:,:,1,1),stretchlim(d(:,:,1,1)),[01]);figure;imshow(I1);lh=length(h);lg=length(g);forj=1:J+lhj=2^j*(lh-1)+1;lgj=2^j*(lg-1)+1;hj(1:lhj)=0;gj(1:lgj)=0;forn=1:lh
hj(2^j*(n-1)+1)=h(n);end
forn=1:lg
gj(2^j*(n-1)+1)=g(n);end
a(:,:,1,j+1)=conv2(hj,hj,a(:,:,1,j),"same");dx(:,:,1,j+1)=conv2(delta,gj,a(:,:,1,j),"same");dy(:,:,1,j+1)=conv2(gj,delta,a(:,:,1,j),"same");x=dx(:,:,1,j+1);y=dy(:,:,1,j+1);
dj(:,:,1,j+1)=sqrt(x.^2+y.^2);
I1=imadjust(dj(:,:,1,j+1),stretchlim(dj(:,:,1,j+1)),[01]);figure;imshow(I1);end
所得如下圖像:
友情提示:本文中關于《小波總結》給出的范例僅供您參考拓展思維使用,小波總結:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權問題,請聯(lián)系我們及時刪除。