硬阈值和软阈值区别分析及选取技巧
侧边栏壁纸
  • 累计撰写 192,421 篇文章
  • 累计收到 3 条评论

硬阈值和软阈值区别分析及选取技巧

admin
2022-12-16 / 0 评论 / 0 阅读 / 正在检测是否收录...

阀值化处理就是当灰度值低于一个值(阀值,根据你的需要设定)时,让其成为一个小的值;当灰度值大于一个值(阀值)时,让其成为一个大的值。

比如:灰度在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

评论 (0)

取消