日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小波图像分解与重构程序存在的问题与解决办法

發布時間:2024/6/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小波图像分解与重构程序存在的问题与解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(思遠老師的好文章留著) 轉載自http://blog.csdn.net/chenyusiyuan/article/details/2513126

去年11月發布了一系列有關小波變換和圖像處理的文章,把學習小波過程中的心得體會和編寫的程序放在網上和大家共享交流。半年來,感謝大家的關注和幫助,在相互的討論交流中,我不斷地從大家提出的問題中拓展自己的知識面,對小波的理論及其應用有了更深入的了解和掌握。的確,分享,才是知識永恒之道!

接下來有新的課題,并且要準備考博,研學征途馬上要展開新的探索。在此之前,得先整理下博客文章,根據和大家討論交流中發現的問題,對博客中的程序進行修正。今天發布的文章,就是對小波圖像分解和重構程序作出重要的修正,這個程序是了解小波、使用小波最根本的,希望對大家學習小波有所幫助。

首先指出我原來發布的小波圖像分解重構的文章中存在的問題。相關的文章有:

1、自己動手編寫小波信號分解與重構的Matlab程序
http://blog.csdn.net/chenyusiyuan/archive/2007/11/13/1881781.aspx

2、用自編的程序實現小波圖像分解與重構
http://blog.csdn.net/chenyusiyuan/archive/2007/11/13/1881940.aspx

其存在的問題有:

(1)程序所用的小波函數只有非標準的Haar小波,其濾波器組為 Lo_D=[1/2 1/2], Hi_D=[-1/2 1/2],是固化在 mydwt2.m 的程序中的,不能選擇其他的小波函數

(2)非標準的Haar小波,其分解出來的系數矩陣中,高頻系數的細節內容(輪廓、邊緣等特征)不明顯

(3)函數 mydwt2 中列變換的矩陣對象為輸入矩陣,這是錯誤的,其矩陣對象應該是行變換后的緩存矩陣;

(4)函數 mydwt2 的輸出用[LL,HL,LH,HH]表示,不是很規范,應改為[cA,cV,cH,cD]來表示,即一級小波變換輸出的系數矩陣有4個部分:平均部分、垂直細節部分、水平細節部分和對角線細節部分。

(5)函數 mydwt2 的輸出[LL,HL,LH,HH]中,HL 取的是小波行變換和列變換后所得矩陣的左下角部分,即垂直細節部分,但在最終的顯示結果中 HL 是在右上角的位置的;類似地,LH 取行、列變換所得矩陣的右上角部分,即水平細節部分,但最終顯示位置是在左下角,當時這樣定義,是我從教材中看到小波一級分解后所得矩陣的平均、細節部分分布從上到下、從左到右依次為:平均部分、水平細節部分、垂直細節部分、對角線細節部分。但通過編程實現和仔細分析,我發現其分布次序應該是平均部分、垂直細節部分、水平細節部分、對角線細節部分才對,即水平和細節的位置對調,具體過程下文會給出圖示,希望能和大家討論下哪個次序才是正確的。

(5)函數 mywavedec2 的輸出 y 是與輸入矩陣 x 相同大小的矩陣,并且已將N級分解后所有的平均、細節系數組合成一體的。實際上,這種定義只對Haar小波有效。因為對于Haar小波來說,其濾波器長度僅為2,輸入序列與濾波器系數卷積后,輸出序列與輸入序列長度是相同的(在Matlab中,若信號長度為n,濾波器長度為2N,則小波分解后cA、cD的長度均為:lnf = floor((n-1)/2)+N,若2N=2,則 lnf*2 = n),從而使小波系數矩陣與圖像矩陣的大小相同。若使用其它類型的小波,由于 2N > 2,lnf*2 > n,這樣函數 mydwt2 輸出的系數矩陣將比輸入矩陣大,那么 mywavedec2 的輸出 y 將會顯示出平均與細節部分邊界重疊的問題。這說明了試圖把平均和細節系數組合成一體,以顯示小波分解的塔式結構,理論上是不可行的,至少對于Matlab來說是不可行的。當然,由公式 lnf = floor((n-1)/2)+N ,我們可以對卷積后的序列進行截取,使卷積輸出序列與輸入序列長度相同,但通過編程實現發現,截取會找出下一級分解錯誤,所以函數 mywavedec2 的輸出 y 的格式要作適當調整。

(6)原程序中要調用 modmat 函數對圖像矩陣進行修剪,使之能被 2 的 N 次方整除,主要是為了生成塔式結構圖像而設的,對上述問題修正后,這個?modmat 函數已不需使用了。

針對上述問題,我對程序作了以下幾點修正:

(1)函數 mywavedec2 / mywaverec2 的輸入參數增加了小波函數'wname',可以選擇任意類型的小波函數來對圖像進行小波分解和重構。相應地,調用Matlab函數 wfilters 來求取小波函數的分解濾波器組系數[Lo_D,Hi_D]和重構濾波器組系數[Lo_R,Hi_R]。

(2)函數?mydwt2 的輸出應改為[cA,cV,cH,cD]來表示,注意這4個部分的位置分布:cA 在系數矩陣的左上角,cV 在右上角,cH 在左下角,cD 在右下角。

(3)函數?mydwt2 的列變換,其處理對象由輸入矩陣 x 改為 行變換后的緩存矩陣 x1,列變換后得到緩存矩陣 x2。輸出 cA 取 x2 的左上角1/4部分,cV 取 x2 的右上角1/4部分,cH 取 x2 的左下角1/4部分,cD 取 x2 的右下角1/4部分。

(4)函數?mywavedec2 的輸出 y 格式改為與Matlab的 wavedec2 類似,但我的是以“細胞矩陣”的格式,而 wavedec2 是以“向量序列”的格式輸出小波系數。小波分解的結果顯示方式不再使用塔式結構方式,而是用 subplot 函數把各級平均、細節系數顯示出來。

(5)重構函數 mywaverec2 根據分解函數 mywavedec2 的輸出格式做了相應的修改,程序更簡潔、易懂和合理。并且?mywaverec2 的重構級數可以與分解級數不同,能夠實現不同級別的小波重構。


(6)函數?myidwt2 的行、列變換中,卷積后要對卷積輸出序列進行裁剪,消除分解濾波器和重構濾波器對序列長度的影響,使重構矩陣的大小與上一分解級的系數矩陣大小一致。

以上是主要的修正點,更詳細的修改信息請看下一篇文章給出的程序及其注釋。


轉載于:https://www.cnblogs.com/cyxcw1/archive/2012/05/25/3051303.html

總結

以上是生活随笔為你收集整理的小波图像分解与重构程序存在的问题与解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。