當前位置:首頁 » 操作系統 » dwt演算法

dwt演算法

發布時間: 2022-05-12 21:01:46

A. 小波變換 多解析度分析 和小波包分析的區別

這分類真讓人五體投地,作吧,作到沒人玩了就老實了!


小波變換的概念是相對於FT這種大波變換提出的,最開始專指CWT,它是脫胎於有局部化分析能力的STFT,STFT完成的是WT中的平移概念,後來加入尺度伸縮就變為了CWT。


CWT在實際分析使用中功能不強,不夠完備,於是很多搞數學的研究者就搞了個mallat演算法,將信號可以分成低頻的逼近和高頻的細節來分析,其中高頻的細節的作用與CWT類似,多了個低頻的逼近信息,並且還完善了它們的重構理論,這就是傳說中的DWT。小波變換是個很寬泛的概念,從最開始的CWT到DWT,再到SWT等,目前凡是與小波概念沾點邊的都被扯進了小波變換的范疇,有些玩濾波器的,和小波濾波器沾點邊也叫小波變換,其實和CWT,DWT等經典演算法定義連一點關系都沒有。


在DWT中由於mallat演算法理論比較易於計算和推導,尤其與濾波器掛鉤後,DWT的計算再也不用像CWT那樣計算積分。因此,容易計算逆變換(DWT的重構),而CWT是很難計算逆變換的,需要其它數學條件,有時甚至從數學上就沒有逆變換,那麼得到的CWT小波系數就沒法轉換為有實際意義的信號,只能大致分析一下奇異點特徵等簡單的信息。再就是用了mallat演算法容易將一維推廣到二維甚至高維,在數學領域很常見的方法都是張量積,這也是DWT數學理論較完備和計算較便利的結果,所以DWT的應用遠遠多於CWT,多分辨分析多指的就是DWT。


當把多層分解的DWT中的每層細節小波系數再分解一次,就得到了所謂的WP。它可以分解得到更多的高頻信息,所以更多用於高頻信息的研究,如去噪。拿一個三層WP舉例,

DWT能夠得到A1,AA2,AAA3和D1,DA2,DAA3,而WP卻能得到以上所有的信息,均分S的整個頻帶。

B. 什麼是DWT

DWT是DEADWEIGHTTONNAGE的縮寫,是表示「載重噸」。

C. matlab dwt函數和swt函數有什麼不同

連續小波是尺度可連續取值的小波,裡面的a一般取整數,而不像二進小波a取2的整數冪。從連續小波到二進小波再到正交離散小波,其實就是a、b都連續,a不連續、b連續,a、b都不連續的過程。操作他們的快速演算法也就是卷積(快速傅里葉),多孔(a trous),MALLAT。在MATLAB里,也就是CWT,SWT,DWT。SWT稱平穩小波變換、二進小波變換、或者非抽取小波變換。

從冗餘性上:CWT>SWT>DWT,前面兩個都冗餘,後面的離散小波變換不冗餘。

從應用上:CWT適合相似性檢測、奇異性分析;SWT適合消噪,模極大值分析;DWT適合壓縮

D. 一維DWT的分解過程能否用多次低通濾波器實現

哈哈,這問題有意思!DWT滴實現除了通常同時使用低頻和高頻(帶通)濾波器組之外,還有兩種方式:
其一,對S只使用高頻(帶通)分解濾波器,下采樣丟掉近一半結果數據後再用高頻(帶通)重構濾波器,得到D1,然後用S-D1得到A1。對A1使用同一高頻(帶通)分解濾波器再這樣來一次得到D2,用A1-D2得到A2,以此類推得到所有A和D;
其二,對S只使用低頻分解濾波器,下采樣丟掉近一半結果數據後再用低頻重構濾波器,得到A1,然後用S-A1得到D1。對A1使用同一低頻分解濾波器再這樣來一次得到A2,用A1-A2得到D2,以此類推得到所有A和D;
上面兩種方式與DWT通常做法滴結果在實驗中一般只有精度上滴極小偏差,也就是說,使用構造好滴小波濾波器組即使丟掉近一半結果數據,仍然可保持比較滿意滴精度,這應是mallat演算法和小波濾波器組構造時考慮比較完善周到滴原因。如果使用N個不同截止頻率的普通低通濾波器串聯,個人認為,由於沒有如此完善滴濾波器構造,可能難以達到這樣的效果,每層誤差滴累計,可能造成較大誤差,甚至造成結果滴不穩定和很強滴吉布斯效應問題,同時N個不同截止頻率的普通低通濾波器使用時本身可能就很麻煩,例如截止頻率和頻率混迭問題,諸多意想不到滴很小問題都會對結果造成很大影響,計算效率問題更可能不如mallat演算法簡便快捷。
普通濾波器使用和構造多與付氏變換緊密相關,而其與小波變換中CWT滴連續小波級數一樣,對幾何造型(信號波形)滴逼近由於穩定性問題(吉布斯效應)都很不成功,而一個信號時域的幾何波形特徵往往在研究中比其頻域特徵重要得多,從而以實現分類和識別等實際問題,這就是為何要發展以非連續正交函數系為基礎滴DWT滴原因,這方面可參看科學出版社《非連續正交函數--U-系統、V-系統、多小波及其應用》。
這是偶回答滴第1000個問題,有一些一直想講一講滴燒腦問題,以茲紀念!我本清都山水郎,天教懶漫帶疏狂!猶如蓮華不著水,亦如日月不住空!Alles Gute!

E. 小波變換的序列展開裡面的參數意義

你這是使用mallat演算法的DWT的數學表達式,按照CWT的數學定義推到DWT的。
j0是尺度?這樣說並不合適,這個數學表達式並沒有強調一點,這或許是現在有些參考書的小波公式與原來經典公式相比令人頭疼和費解的地方,也使得現在的小波文獻的概念比較混亂,亂用專有稱謂名詞。實際上,在DWT中是不講「尺度」一詞的,而講分解「階次、層數」,只有CWT才講「尺度」一詞。通常的DWT都是二進小波變換,尺度與階次之間是2的冪次的關系,CWT的尺度與DWT的階次的對應關系是尺度a=2^j,所以j稱為階次或層數更恰當。但它就這么寫了,就姑且認為這種混亂的概念是對的吧。
k按照cwt的理論就是用來完成小波變換中平移操作的參數,將小波函數在時間或空間軸上移動一個單位時間(或空間)K,得到一個小波變換系數,直到平移到信號終止的長度,得到一系列在這一階次(尺度)下的所有小波系數,完成這一階次(尺度)下的小波變換。
j在數學公式中可以到無窮大,實際應用中要根據實際情況選擇適當的最大階次(尺度)。可參看http://..com/question/552250815013322852.html?oldq=1
在matlab裡面,根本就不用這種數學公式實現DWT,因為數學公式在計算方面很麻煩,而其在實際小波應用中會產生邊界效應和吉布斯效應等一系列問題,使得小波變換的結果不能得到令人滿意的效果。當信號處理中濾波器組的理論開始發展的時候,DWT才取得了能夠滿足實際需要的實用方法。matlab也是通過設計分解和重構濾波器組,用信號與濾波器的卷積實現DWT的。這樣實際的計算比較簡單,卷積的過程就完成了小波理論中的平移,然後通過隔點采樣縮簡訊號長度,就相當於完成了小波函數的伸縮,得到各個階次(尺度)下的小波系數,完成整個DWT的計算。關於CWT,DWT和SWT的matlab實現處理方式可以參看http://..com/question/743930408880075452.html?oldq=1

F. 小弟畢業設計matlab基於擴頻的dwt水印嵌入 求大神給個程序代碼啊!

%% ---------------------------------------------------------------------%%
% 基於小波變換的擴頻圖象數字水印-->水印嵌入
%% ---------------------------------------------------------------------%%
start_time=cputime;
k=0.6;
file_name='E:\zy\lena.bmp';
iCover = imread(file_name);
dCover = double(iCover);
dOrigCover = dCover;
Mc=size(iCover,1);
Nc=size(iCover,2);
file_name='E:\zy\right.bmp';
iWatermark = imread(file_name);
dWatermark = double(iWatermark);
Mm=size(iWatermark,1);
Nm=size(iWatermark,2);
dWatermarkVector=round(reshape(dWatermark,Mm*Nm,1)./256);
file_name='key.bmp';
key=double(imread(file_name))./256;
rand('state',key);
h = waitbar(0,'Embedding, please wait...');
[cA1,cH1,cV1,cD1] = dwt2(dCover,'haar');
[cA2,cH2,cV2,cD2] = dwt2(cH1,'haar');
[cA3,cH3,cV3,cD3] = dwt2(cV1,'haar');
iLength = length(dWatermarkVector);
for (kk=1:iLength)
pn_sequence_h2=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v2=round(2*(rand(Mc/4,Nc/4)-0.5));

pn_sequence_h3=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v3=round(2*(rand(Mc/4,Nc/4)-0.5));

if (dWatermarkVector(kk) == 0)
cH2=cH2+k*pn_sequence_h2;
cV2=cV2+k*pn_sequence_v2;
cH3=cH3+k*pn_sequence_h3;
cV3=cV3+k*pn_sequence_v3;
end
waitbar(kk/iLength,h);
end
close(h);
cH1 = idwt2(cA2,cH2,cV2,cD2,'haar',[Mc/2,Nc/2]);
cV1 = idwt2(cA3,cH3,cV3,cD3,'haar',[Mc/2,Nc/2]);
dEmbed = idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);
uEmbed = uint8(dEmbed);
imwrite(uEmbed,'dwt.bmp','bmp');
PSNR = psnr(dOrigCover,dEmbed);
elapsed_time=cputime-start_time
figure(1),imshow(iCover,[]);
title('Original Image');
figure(2),imshow(uEmbed,[]);
title(strcat('Watermarked Image',',PSNR=',num2str(PSNR)));
%% END------------------------------------------------------------------%%
%% ---------------------------------------------------------------------%%
% 基於小波變換的擴頻圖象數字水印-->水印檢測
%% ---------------------------------------------------------------------%%
start_time=cputime;
k=0.6;
file_name='~dwt.bmp';
iEmbed = imread(file_name);
dEmbed = double(iEmbed);
Mc=size(iEmbed,1);
Nc=size(iEmbed,2);
file_name='right.bmp';
iWatermark = imread(file_name);
dWatermark = double(iWatermark);
ddWatermark=dWatermark;
Mw=size(iWatermark,1);
Nw=size(iWatermark,2);
file_name='key.bmp';
key=double(imread(file_name))./256;
rand('state',key);
MessageVector=ones(1,Mw*Nw);
h = waitbar(0,'Detecting, please wait...');
[cA1,cH1,cV1,cD1] = dwt2(dEmbed,'haar');
[cA2,cH2,cV2,cD2] = dwt2(cH1,'haar');
[cA3,cH3,cV3,cD3] = dwt2(cV1,'haar');
iLength = length(MessageVector);
for (kk=1:iLength)
pn_sequence_h2=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v2=round(2*(rand(Mc/4,Nc/4)-0.5));

pn_sequence_h3=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v3=round(2*(rand(Mc/4,Nc/4)-0.5));

correlation_h2(kk)=corr2(cH2,pn_sequence_h2);
correlation_v2(kk)=corr2(cV2,pn_sequence_v2);
correlation_h3(kk)=corr2(cH3,pn_sequence_h3);
correlation_v3(kk)=corr2(cV3,pn_sequence_v3);

correlation(kk)=(correlation_h2(kk)+correlation_h3(kk)+correlation_v2(kk)+correlation_v3(kk))/4;
waitbar(kk/iLength,h);
end
for (kk=1:iLength)
if (correlation(kk)> mean(correlation))
MessageVector(kk)=0;
end
end
close(h);
DDetect=reshape(255*MessageVector,Mw,Nw);
Detect = uint8(DDetect);
imwrite(Detect,'watermark jiancai.bmp','bmp');
PSNR = psnr(ddWatermark,DDetect);
elapsed_time=cputime-start_time
CN=corr2(ddWatermark,DDetect);
figure(1),imshow(iWatermark,[]);
title('Original Watermark');
figure(2),imshow(Detect,[])
title(strcat('Detected Watermark',',PSNR=',num2str(PSNR),'CN=',num2str(CN)));
%% END------------------------------------------------------------------%%
% Function:計算PSNR
function PSNR = psnr(ImageA,ImageB)
if (size(ImageA,1) = size(ImageB,1)) or (size(ImageA,2) = size(ImageB,2))
error('ImageA <> ImageB');
dPSNR = 0;
return ;
end
M = size(ImageA,1);
N = size(ImageA,2);

d = 0 ;
for i = 1:M
for j = 1:N
d = d + (ImageA(i,j) - ImageB(i,j)).^2 ;
end
end

dPSNR = -10*log10(d/(255*255*M*N)) ;
return

G. matlab dwt演算法

http://www.math.org.cn/forums/index.php?showforum=28

建議你到這里去問,網路這里大多是Dota,WOW的高手啊!....

H. 一種基於DWT的非自適應數字水印演算法及其MATLAB實現

你這個很簡單啊,提取時有原始圖像,在圖片在網上搜索《lena圖像》應該能搜到。

至於水印圖,自己可以用畫圖工具,做一個32x32的,在matlab上處理一下做成2值圖。

至於代碼部分,開始段,[cA1,cH1,cV1,cD1]=dwt2(x,'db1') % x 是原圖處理過的灰度圖。

這就沒什麼了啊。已經都告訴你了。

流程是這樣的。

嵌入過程:

  1. 讀取原圖。

  2. 對原圖做灰度處理。

  3. 讀取水印。

  4. 對水印圖做2值處理。

  5. 對灰度圖做3次DWT。

  6. 設置嵌入強度。

  7. 根據嵌入演算法將水印嵌入到需要的部分。

  8. 將嵌入後的部分,替換原來的部分後做IDWT。

提取過程:

  1. 讀取原圖,做3次DWT。

  2. 讀取嵌入水印的圖片,做3次DWT。

  3. 取出原來嵌入的部分,和原圖為嵌入的部分根據演算法提取水印。


大體是這樣,奉勸你一句,不要抄他的,這個演算法很小白,抄也要抄有前途的啊。這個很白痴啊。嵌入水印在[cA3,cH3,cV3,cD3]中,哪有嵌入到cD3中的?白痴啊。一般選擇嵌入也是選中間的cH3或cV3或這兩個都選。還有,提取時還需要原圖片,很無語了,需要原圖片還需要做什麼別的演算法嗎?簡單的加減乘除就搞定了。裡面還添加了for運算,matlab里for的運算速度是最慢了。

I. 小波高低頻子空間是正交的嗎,正交小波又是什麼意思

你提到空間,那麼就專指使用mallat演算法的DWT概念。對於使用mallat演算法DWT,最早需要分解後高、低頻的小波系數是正交,為的是高、低頻空間中的信息沒有重疊,這樣為分解後的解釋和計算有很多好處。
於是從最早的haar小波開始,凡是要用於進行DWT的小波函數(db(包括haar),coif,sym,meyr,樣條小波等)都是正交小波,其分解後高、低頻子空間是正交的。後來放寬條件還設計了雙正交的小波系(bior,rbio),雖然不正交,然而仍然可以使用mallat演算法,於是也可用於DWT。
剩下的小波函數就因為不正交所以都只能用於CWT,用不了mallat演算法那麼也就沒有什麼子空間的問題了。水平有限,僅供參考!

熱點內容
安卓平板和蘋果的平板有什麼區別 發布:2024-10-09 20:26:37 瀏覽:425
上傳速度對網速的影響嗎 發布:2024-10-09 20:09:38 瀏覽:561
密碼鎖芯在哪裡能買到 發布:2024-10-09 20:05:33 瀏覽:452
傳奇伺服器強行下線是什麼意思 發布:2024-10-09 20:05:11 瀏覽:920
sqljoinas 發布:2024-10-09 19:48:01 瀏覽:391
文本編輯器沒有編譯器可以嗎 發布:2024-10-09 19:39:36 瀏覽:996
linux環境變數oracle 發布:2024-10-09 19:24:36 瀏覽:318
pythonimport找不到模塊 發布:2024-10-09 19:23:45 瀏覽:510
安卓怎麼卸載插件 發布:2024-10-09 19:07:13 瀏覽:933
see腳本 發布:2024-10-09 19:07:12 瀏覽:424