阀值化处理就是当灰度值低于一个值(阀值,根据你的需要设定)时,让其成为一个小的值;当灰度值大于一个值(阀值)时,让其成为一个大的值。
比如:灰度在0-255, 当灰度小于128时赋值为0,大于128时赋值为255,即亮的地方更亮,暗的地方更暗。即实现了阀值分割。这样图像就黑白分明,对比度加大了。
硬阀值:是被检测数据所不能逾越的阀值。
软阀值:则规定被检测数据的变动范围。
软阈值,硬阈值及当今各种阈值计算方法和阈值函数处理方法的性能
小波阈值去噪,比较了软阈值,硬阈值及当今各种阈值计算方法和阈值函数处理方法的性能,通过信噪比及均方差的比较,得出各种的算法的优劣。
clear;clc;
从程序的运行结果来看,文献1,3,4的去噪效果比较好
其中文献4对高信噪比的的情况不是很好,在高信噪比时,软硬阈值的效果最好
测试数据的选取
fun=‘blocks’;
snr=5;
jN=5; 分解的层数
N=13; 数据长度为2^N
[x,s]=wnoise(4,N,sqrt(snr));
ps=sum(x.^2)/length(x);
sigma_noise=abs(sqrt(ps/(10^(snr/10))));
noise=sigma_noise*randn(1,length(x));noise噪声的方差是(sigma_noise.^2)
s=x+noise;
figure,
subplot(211);plot(x);
subplot(212);plot(s);
subplot(211);plot(x);TItle(‘纯净信号x’);
subplot(212);plot(s);TItle(‘混合信号x’);
调幅信号,纯净信号
TIc;
fs=5e+6; 采样率50M
ts=1/fs;
fc=10.7e+6; 载频10.7M
t0=2; 数据长度N=t0*fs;
t=[0:ts:t0]; 模拟信号的数字化
m=sinc(100*t); 消息信号
c=cos(2*pi*fs.*t);载波信号
x=m.*c;
N=t0*fs;
toc;
t0=.2; signal duraTIon
ts=0.001; sampling interval
fc=250; carrier frequency
snr=20; SNR in dB (logarithmic)
fs=1/ts; sampling frequency
t=[-t0/2:ts:t0/2]; time vector
m=sinc(100*t); the message signal
c=cos(2*pi*fc.*t); the carrier signal
x=m.*c; the DSB-AM modulated signal
N=t0*fs;
-------------------------BPSK信号,数字调制-----------------------------------
codes=6; 码元个数,即输入调制信号的长度
sigma=1; 调制信号的幅度
fs=600e3; 采样率600KHz
fb=1e3; 波特率1KHz,fb表示对输入调制信号的采样率
fc=100e3; 载频100KHz
Modulate=2; 为选择调制方式
N0=fs/fb; 一个码元周期内的采样点数,一个输入信号长度内的采样点数
N=N0*codes; 总的采样点数(已调信号的长度)
p0=pi*rand(1,1); 产生初始相位
symbols=randint(1,codes,[0,1]); 产生基带码元
x_B = ones(N0,1)*symbols;
x_BB = x_B(:)‘; 根据波特率要求产生码元
signal_base = x_BB; 产生基带信号
signal=sigma*dmod(symbols,fc,fb,[fs p0],’psk‘,Modulate);
产生psk调制信号,p0是载频的初始相位
x=si
gnal;
-------------------------加入指定强度的噪声---------------------------------
snr=5;
ps=sum(x.^2)/N;
sigma_noise=abs(sqrt(ps/(10^(snr/10))));
nn=randn(1,N);
enn=sum(nn)/N; 随机数nn的均值
nn=nn-enn; 使nn均值为0
noise=sigma_noise*nn;
s=x+noise;
wname=’db7‘;
jN=6; 分解的层数
[c,l]=wavedec(s,jN,wname);
snrs=20*log10(norm(x)/norm(s-x));
mmses=mmse(s-x);
高频分量的索引
first = cumsum(l)+1;
first1=first;
first = first(end-2:-1:1);
ld = l(end-1:-1:2);
last = first+ld-1;
评论 (0)