阿里百秀 wordpress網(wǎng)站seo推廣營銷
1.基于小波變換的閾值收縮法去噪
該方法利用小波變換分離出信號中的噪聲成分,并通過設(shè)置合適的閾值對小波系數(shù)進(jìn)行收縮,保留主要信息的同時(shí),去除噪聲。
%基于小波變換的閾值收縮法去噪算法
clear
clc
I=imread('nana.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');
x_r = den(xr, 'sym4', 2);
x_g = den(xg, 'sym4', 2);
x_b = den(xb, 'sym4', 2);
x = cat(3, x_r, x_g, x_b);
subplot(121)
imshow(x_noise);title('加噪圖像');
subplot(122)
imshow(x);title('去噪后');
2.基于小波變換的模極大值法去噪算法
模極大值法通過分析小波變換中信號的極大值點(diǎn),提取信號的結(jié)構(gòu)特征,進(jìn)而有效去除噪聲,并且能保留信號的邊緣信息。
%基于小波變換的模極大值法去噪算法
clear
clc
I = imread('nana.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通道
%基于小波變換的模極大值法
[Cr, Sr] = wavedec2(xr, 2, 'sym4');
[Cg, Sg] = wavedec2(xg, 2, 'sym4');
[Cb, Sb] = wavedec2(xb, 2, 'sym4');
thr_lvd_r = momax(Cr, Sr); % R通道局部閾值
thr_lvd_g = momax(Cg, Sg); % G通道局部閾值
thr_lvd_b = momax(Cb, Sb); % B通道局部閾值
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);
x_soft_lvd = cat(3, x_soft_lvd_r, x_soft_lvd_g, x_soft_lvd_b); subplot(121)
imshow(x_noise); title('噪聲圖像');
subplot(122)
imshow(x_soft_lvd); title('模極大值去噪');
3.基于小波變換的相關(guān)法去噪算法
該算法基于小波變換后不同尺度信號間的相關(guān)性,利用噪聲和信號的統(tǒng)計(jì)特性來提取信號,達(dá)到去噪的目的。
%基于小波變換的相關(guān)法去噪算法
clear
clc
I = imread('nana.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通道
% 小波變換去相關(guān)計(jì)算閾值
thr_r = xiangguan(xr); % R通道全局閾值
thr_g = xiangguan(xg); % G通道全局閾值
thr_b = xiangguan(xb); % B通道全局閾值
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);
x_soft = cat(3, x_soft_r, x_soft_g, x_soft_b);
subplot(121)
imshow(x_noise); title('噪聲圖像');
subplot(122)
imshow(x_soft); title('相關(guān)法去噪');
4.改進(jìn)基于離散余弦變換的小波去噪算法
在傳統(tǒng)小波去噪的基礎(chǔ)上,結(jié)合離散余弦變換(DCT)的優(yōu)勢,對信號進(jìn)行進(jìn)一步處理,以提高去噪效果,特別適用于周期性或具有強(qiáng)局部特征的信號
%改進(jìn)基于離散余弦變換的小波去噪算法
clear
clc
init = 2055615866;
randn('seed',init);
img = imread('nana.png');
X = double(img);
x = X + 10*randn(size(X));%噪聲
x = uint8(x);
[h,w,c] = size(x);
R_channel = x(:,:,1);
G_channel = x(:,:,2);
B_channel = x(:,:,3);outimg1 = block_dct(R_channel,8,3);
outimg2 = block_dct(G_channel,8,3);
outimg3 = block_dct(B_channel,8,3);
[h,w] = size(outimg1)
outimg = zeros([h,w,3]);
outimg(:,:,1) = outimg1;
outimg(:,:,2) = outimg2;
outimg(:,:,3) = outimg3;subplot(121)
imshow(x);
xlabel('噪聲圖像');
subplot(122)
imshow(uint8(outimg))
xlabel('分塊DCT去噪');
5.基于最大熵原理的小波去噪算法
通過引入最大熵原理,該算法在去噪過程中對信號進(jìn)行最優(yōu)估計(jì),保持信號的信息量最大化,從而實(shí)現(xiàn)平衡信號和噪聲的去除
%基于最大熵原理的小波去噪算法
clear
clc
I = imread('nana.png');
X = rgb2gray(I);
X=imnoise(X,'salt & pepper',0.05);%加入椒鹽噪聲
vHist=imhist(X); %得到灰度直方圖
[m,n]=size(X);
p=vHist(find(vHist>0))/(m*n); %求每一不為零的灰度值的概率
Pt=cumsum(p); %計(jì)算出選擇不同t值時(shí),A區(qū)域的概率
Ht=-cumsum(p.*log(p)); %計(jì)算出選擇不同t值時(shí),A區(qū)域的熵
HL=-sum(p.*log(p)); %計(jì)算出全圖的熵
Yt=log(Pt.*(1-Pt)+eps)+Ht./(Pt+eps)+(HL-Ht)./(1-Pt+eps); %計(jì)算出選擇不同t值時(shí),判別函數(shù)的值
th=max(Yt); % th即為最佳閾值
[height width]=size(X);
X=im2double(X);
Y1=double(X);
A=imnoise(X,'salt & pepper',0.05);%加入椒鹽噪聲
wname='sym3 ';
n=3;
[c,s]=wavedec2(A,n,wname);
for i=1:3
step(i)=s((i+1),1)*s((i+1),2); %得到高頻每層分解系數(shù)的長度
end
num(1,1)=s(1,1)*s(1,2)+1; %獲取各層各高頻分量在c向量中的坐標(biāo) H|V|D
num(1,2)=num(1,1)+s(2,1)*s(2,2);
num(1,3)=num(1,2)+s(2,1)*s(2,2);
num(2,1)=num(1,3)+s(2,1)*s(2,2);
num(2,2)=num(2,1)+s(3,1)*s(3,2);
num(2,3)=num(2,2)+s(3,1)*s(3,2);
num(3,1)=num(2,3)+s(3,1)*s(3,2);
num(3,2)=num(3,1)+s(4,1)*s(4,2);
num(3,3)=num(3,2)+s(4,1)*s(4,2);
%m=0.02;
C=c;
Y=c;
for i=1:3
[H,V,D]=detcoef2('a',c,s,i);%提取第i層各高頻系數(shù),提取二維信號小波分解的細(xì)節(jié)分量
B=[H V D];
[L,T]=size(B);
for k=1:Lfor w=1:Tsigma=median(abs(B(k,w)))/0.6745;%噪聲方差end
end
ch=c(1,num(4-i,1):num(4-i,3)+step(4-i)-1);%確定高頻系數(shù)的范圍,為下一步閾值處理和更新高頻系數(shù)做準(zhǔn)備
chl=length(ch);
for j=1:chlif abs(ch(j))>=thch(j)=sign(ch(j))*(abs(ch(j))-th);%軟閾值處理函數(shù)elsech(j)=0;end
end
C(1,num(4-i,1):num(4-i,3)+step(4-i)-1)=ch(1,1:chl);
end
X0=waverec2(C,s,wname);
figure
subplot(121);imshow(X);title('加噪圖像')
subplot(122);imshow(X0,[]);title('最大熵法去噪后圖像')
6.基于主成分分析的小波去噪算法
主成分分析(PCA)被用來提取信號的主要特征,結(jié)合小波變換可以有效分離信號和噪聲,尤其適用于多維數(shù)據(jù)的去噪任務(wù)。
%基于主成分分析的小波去噪算法
clear;
clc;
A = imread('nana.png'); %讀取圖像
A=imnoise(A,'salt & pepper',0.05);%加入椒鹽噪聲
subplot(121)
imshow(A); title('加噪圖像');
k = PCA_Process(A);
subplot(122)
imshow(k,[]);title('去噪圖片');
7.BM3D去噪算法
%BM3D去噪算法
clear
clc
A = imread('nana.png'); %讀取圖像
A=rgb2gray(A);
A=imnoise(A,'salt & pepper',0.05);%加入椒鹽噪聲
subplot(121)
imshow(A); title('加噪圖像');
k = BM3D(A);
subplot(122)
imshow(k,[]);title('去噪圖片');
免費(fèi)獲取完整代碼:
Matlab數(shù)字信號處理——基于改進(jìn)小波變換的圖像去噪方法(7種去噪算法)
最后:
小編會(huì)不定期發(fā)布相關(guān)設(shè)計(jì)內(nèi)容包括但不限于如下內(nèi)容:信號處理、通信仿真、算法設(shè)計(jì)、matlab appdesigner,gui設(shè)計(jì)、simulink仿真......希望能幫到你!