【圖像去噪】基于改進(jìn)小波閾值實(shí)現(xiàn)圖像去噪matlab代碼
【圖像去噪】基于改進(jìn)小波閾值實(shí)現(xiàn)圖像去噪matlab代碼
TT_Matlab
每天分享一點(diǎn)Matlab資料,一起成長(zhǎng)進(jìn)步。需要定制程序添加qq1575304183
1 簡(jiǎn)介
基于 Donoho經(jīng)典小波閾值去除圖像噪聲基本思路,分析常用硬閾值法和軟閾值法在圖像去噪中的缺陷。針對(duì)這些缺陷,提出一種改進(jìn)的閾值去噪法,該方法不僅可克服硬閾值不連續(xù)的缺點(diǎn),還能夠有效解決小波分解預(yù)估計(jì)系數(shù)與真實(shí)小波系數(shù)間存有的恒定誤差。通過(guò) Matlab仿真實(shí)驗(yàn),使用改進(jìn)的小波閾值法對(duì)圖像去噪處理后,除 噪效果比較理想,在去噪性能指標(biāo)上,PSNR(峰值信噪比)和 EPI(邊緣保護(hù)指數(shù))均好于傳統(tǒng)閾值方法。
采集、編碼或者傳輸圖像時(shí),圖像容易遭受噪聲污染,因此圖像去噪尤為重要。隨著對(duì)小波理論研究的深入,其應(yīng)用也日趨廣泛,利用小波變換進(jìn)行圖像去噪成為研究熱點(diǎn)。目前,小波圖像去噪 基 本 方 法 有:①利用小波變換模極大值方法進(jìn)行圖像去噪;②利用小波變換尺度相關(guān)性方法進(jìn)行圖像去 噪;③利用小波閾值去噪法進(jìn)行圖像去噪。上述3種基 本 方 法 中,小波閾值去噪法相對(duì)于小波模極大值法與小波變換尺度相關(guān)性法,其 運(yùn) 算 量 小,實(shí)現(xiàn)簡(jiǎn)單且使用廣泛。小波閾值去噪法也有其不足:在小波硬閾值去噪處理過(guò)程中,獲取的小波系 數(shù) 預(yù) 估 計(jì) 連 續(xù) 性 差,會(huì) 造 成 重 構(gòu) 信號(hào)波動(dòng),而軟閾值法算出的估計(jì)小波系數(shù)雖然連續(xù)性較好,但其與真實(shí)小波系數(shù)有恒定偏差,造成重構(gòu)信號(hào)精度變低,導(dǎo)致圖像模糊。本文結(jié)合經(jīng)典硬閾值和軟閾值法各自的優(yōu)缺點(diǎn),提出一種改進(jìn)的小波閾值圖像去噪算法。
2 部分代碼
% 對(duì)彩色圖像進(jìn)行去噪 clc clear all close all I = imread ( ’lena_color.png’ , ’png’ ); % 讀入圖像 X = im2double ( I ); % 轉(zhuǎn)換成雙精度類型 x_noise = noise ( X , ’gaussian’ , 0.01 ); % 加入高斯噪聲 % 提取三個(gè)通道信息 xr = x_noise (:, :, 1 ); % R通道 xg = x_noise (:, :, 2 ); % G通道 xb = x_noise (:, :, 3 ); % B通道 % 估計(jì)三個(gè)通道的閾值 [ Cr , Sr ] = wavedec2 ( xr , 2 , ’sym4’ ); [ Cg , Sg ] = wavedec2 ( xg , 2 , ’sym4’ ); [ Cb , Sb ] = wavedec2 ( xb , 2 , ’sym4’ ); thr_r = Donoho ( xr ); % R通道全局閾值 thr_g = Donoho ( xg ); % G通道全局閾值 thr_b = Donoho ( xb ); % B通道全局閾值 thr_lvd_r = Birge_Massart ( Cr , Sr ); % R通道局部閾值 thr_lvd_g = Birge_Massart ( Cg , Sg ); % G通道局部閾值 thr_lvd_b = Birge_Massart ( Cb , Sb ); % B通道局部閾值 % 對(duì)三個(gè)通道分別進(jìn)行去噪=================================================== % Donoho全局閾值 軟閾值公式---------------------------------------------- x_soft_r = wdenoise ( xr , ’gbl’ , ’s’ , thr_r , ’sym4’ , 2 ); x_soft_g = wdenoise ( xg , ’gbl’ , ’s’ , thr_g , ’sym4’ , 2 ); x_soft_b = wdenoise ( xb , ’gbl’ , ’s’ , thr_b , ’sym4’ , 2 ); % ----------------------------------------------------------------------- % Donoho全局閾值 硬閾值公式---------------------------------------------- x_hard_r = wdenoise ( xr , ’gbl’ , ’h’ , thr_r , ’sym4’ , 2 ); x_hard_g = wdenoise ( xg , ’gbl’ , ’h’ , thr_g , ’sym4’ , 2 ); x_hard_b = wdenoise ( xb , ’gbl’ , ’h’ , thr_b , ’sym4’ , 2 ); % ----------------------------------------------------------------------- % Bige-Massa策略 軟閾值公式---------------------------------------------- x_soft_lvd_r = wdenoise ( xr , ’lvd’ , ’s’ , thr_lvd_r , ’sym4’ , 2 ); x_soft_lvd_g = wdenoise ( xg , ’lvd’ , ’s’ , thr_lvd_g , ’sym4’ , 2 ); x_soft_lvd_b = wdenoise ( xb , ’lvd’ , ’s’ , thr_lvd_b , ’sym4’ , 2 ); % ----------------------------------------------------------------------- % Bige-Massa策略 硬閾值公式---------------------------------------------- x_hard_lvd_r = wdenoise ( xr , ’lvd’ , ’h’ , thr_lvd_r , ’sym4’ , 2 ); x_hard_lvd_g = wdenoise ( xg , ’lvd’ , ’h’ , thr_lvd_g , ’sym4’ , 2 ); x_hard_lvd_b = wdenoise ( xb , ’lvd’ , ’h’ , thr_lvd_b , ’sym4’ , 2 ); % ----------------------------------------------------------------------- % 半軟閾值--------------------------------------------------------------- x1_r = den1 ( xr , ’sym4’ , 2 , thr_r ); x1_g = den1 ( xg , ’sym4’ , 2 , thr_g ); x1_b = den1 ( xb , ’sym4’ , 2 , thr_b ); % ----------------------------------------------------------------------- % 半軟閾值 + 均值濾波---------------------------------------------------- x1_5_r = den1_5_1 ( xr , ’sym4’ , 2 , thr_r , 0.5 * thr_r ); x1_5_g = den1_5_1 ( xg , ’sym4’ , 2 , thr_g , 0.5 * thr_g ); x1_5_b = den1_5_1 ( xb , ’sym4’ , 2 , thr_b , 0.5 * thr_b ); % ----------------------------------------------------------------------- % 自適應(yīng)閾值------------------------------------------------------------- x4_r = den4 ( xr , ’sym4’ , 2 ); x4_g = den4 ( xg , ’sym4’ , 2 ); x4_b = den4 ( xb , ’sym4’ , 2 ); % ----------------------------------------------------------------------- % ========================================================================= % 恢復(fù)去噪后的圖像========================================================= x_soft = cat ( 3 , x_soft_r , x_soft_g , x_soft_b ); % Donoho 軟閾值 x_hard = cat ( 3 , x_hard_r , x_hard_g , x_hard_b ); % Donoho 硬閾值 x_soft_lvd = cat ( 3 , x_soft_lvd_r , x_soft_lvd_g , x_soft_lvd_b ); %Birge-Massart 軟閾值 x_hard_lvd = cat ( 3 , x_hard_lvd_r , x_hard_lvd_g , x_hard_lvd_b ); % Birge-Massart 硬閾值 x1 = cat ( 3 , x1_r , x1_g , x1_b ); % 半軟閾值 x1_5 = cat ( 3 , x1_5_r , x1_5_g , x1_5_b ); % 半軟閾值 + 均值濾波 x4 = cat ( 3 , x4_r , x4_g , x4_b ); % 自適應(yīng)閾值 % ========================================================================= psnr_soft = PSNR_color ( x_soft , X ); psnr_hard = PSNR_color ( x_hard , X ); psnr_soft_lvd = PSNR_color ( x_soft_lvd , X ); psnr_hard_lvd = PSNR_color ( x_hard_lvd , X ); psnr1 = PSNR_color ( x1 , X ); psnr1_5 = PSNR_color ( x1_5 , X ); psnr4 = PSNR_color ( x4 , X ); figure ; subplot ( 341 ); imshow ( X ); title ( ’原圖像’ ); subplot ( 342 ); imshow ( x_noise ); title ( ’帶噪聲圖像’ ); subplot ( 343 ); imshow ( x_soft ); title ([ ’Donoho 軟閾值,信噪比=’ , num2str ( psnr_soft )]); subplot ( 344 ); imshow ( x_hard ); title ([ ’Donoho 硬閾值,信噪比=’ , num2str ( psnr_hard )]); subplot ( 345 ); imshow ( x_soft_lvd ); title ([ ’Birge-Massart 軟閾值,信噪比=’ , num2str ( psnr_soft_lvd )]); subplot ( 346 ); imshow ( x_hard_lvd ); title ([ ’Birge-Massart 硬閾值,信噪比=’ , num2str ( psnr_hard_lvd )]); subplot ( 347 ); imshow ( x1 ); title ([ ’半軟閾值,信噪比=’ , num2str ( psnr1 )]) ’ ; subplot ( 348 ); imshow ( x1_5 ); title ([ ’半軟閾值+均值濾波,信噪比=’ , num2str ( psnr1_5 )]); subplot ( 349 ); imshow ( x4 ); title ([ ’自適應(yīng)閾值,信噪比=’ , num2str ( psnr4 )]); % 中值濾波 均值濾波======================================================== f = ones ( 3 ); % filter2函數(shù)用于圖像均值濾波 x_mean_r = meanfilter ( xr , f ); x_mean_g = meanfilter ( xg , f ); x_mean_b = meanfilter ( xb , f ); x_mean = cat ( 3 , x_mean_r , x_mean_g , x_mean_b ); % medfilt2函數(shù)用于圖像中值濾波 x_med_r = medfilter ( xr , f ); x_med_g = medfilter ( xg , f ); x_med_b = medfilter ( xb , f ); x_med = cat ( 3 , x_med_r , x_med_g , x_med_b ); psnr_mean = PSNR_color ( x_mean , X ); psnr_med = PSNR_color ( x_med , X ); subplot ( 3 , 4 , 10 ); imshow ( x_mean ); title ([ ’均值濾波,信噪比=’ , num2str ( psnr_mean )]); subplot ( 3 , 4 , 11 ); imshow ( x_med ); title ([ ’中值濾波,信噪比=’ , num2str ( psnr_med )]); % =========================================================================
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]林東升. 基于Matlab的小波閾值圖像去噪方法研究[J]. 電腦知識(shí)與技術(shù), 2013(4X):3.
微信掃一掃贊賞作者
贊賞
發(fā)送給作者
人贊賞
長(zhǎng)按二維碼向我轉(zhuǎn)賬
受蘋果公司新規(guī)定影響,微信 iOS 版的贊賞功能被關(guān)閉,可通過(guò)二維碼轉(zhuǎn)賬支持公眾號(hào)。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
CAD外部參照無(wú)法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
