Giải quyết nhiễu khơng tỷ lệ và nhiễu khơng trắng

Một phần của tài liệu TIỂU LUẬN MÔN HỌC THIẾT KẾ BỘ LỌC & MÃ HÓA BĂNG CON BIẾN ĐỔI WAVELET MỘT CHIỀU VÀ ỨNG DỤNG (Trang 52 - 59)

CHƯƠNG 3: TỔ CHỨC CHƯƠNG TRÌNH THIẾT KẾ CÁC ỨNG DỤNG CỦA BIẾN ĐỔI WAVELET 1-D

3.2.5. Giải quyết nhiễu khơng tỷ lệ và nhiễu khơng trắng

Trong thực tế mơ hình cơ bản khơng thể được sử dụng trực tiếp. Matlab cung cấp cho chúng ta hai hàm sau:

Wden: thực hiện triệt nhiễu tự động tín hiệu 1-D dùng Wavelet.

Wdencmp: thực hiện nén hoặc triệt nhiễu tín hiệu một chiều hoặc tín hiệu

hình ảnh dùng Wavelet.

WDEN:

Hàm wden cĩ dạng sau:

sd = wden(s,tptr,sorh,scal,n,wav)

Hàm wden trả về phiên bản đã khử nhiễu sd của tín hiệu gốc s đạt được nhờ sử dụng quy tắc chọn ngưỡng tptr như đã nĩi trên.

Các tham số cần thiết khác là sorh (‘s’ soft hay ‘h’ hard), scal, n và wavelet name.

Tham số sorh chỉ ra việc đặt ngưỡng các hệ số chi tiết của phân tách tại mức n của tín hiệu s.

Tên wavelet được gọi là wav.

Tham số cịn lại là scal tương ứng với các phương pháp tái định tỷ lệ của ngưỡng.

Tùy chọn Mơ hình tương ứng

'one' Mơ hình cơ bản

'sln' Mơ hình cơ bản với nhiễu khơng tỷ lệ 'mln' Mơ hình cơ bản với nhiễu khơng trắng

Hàm wdencmp khác hàm WDEN ở chỗ thực hiện đặt ngưỡng các hệ số wavelet cho cả hai mục đích khử nhiễu và nén, trong khi xử lý trực tiếp dữ liệu một chiều và hai chiều. Hàm wdencmp cĩ dạng tổng quát:

xd = wdencmp(opt,x,wav,n,thr,sorh,keepapp) Dạng chi tiết: [XC,CXC,LXC,PERF0,PERF2]= wdencmp(‘gbl’,X,’Wname’,n,Thr,Sorh,KeepApp); [XC,CXC,LXC,PERF0,PERF2]= wdencmp(‘gbl’,C,L,’Wname’,Thr,Sorh,KeepApp); [XC,CXC,LXC,PERF0,PERF2]= wdencmp(‘lvd’,X,’Wname’,n, Thr,Sorh,KeepApp); [XC,CXC,LXC,PERF0,PERF2]= wdencmp(‘lvd’,C,L,’Wname’,Thr,Sorh,KeepApp);

Thơng số đầu ra:

Hàm trả về tín hiệu XC đã được khử nhiễu hay nén của tín hiệu X( X cĩ thể là một hay hai chiều) với các ngưỡng hệ số Wavelet, dùng ngưỡng Thr. Các vector đầu ra [CXC,LXC] là cấu trúc phân tích Wavelet của XC.

PERF0: tỷ lệ phần trăm phần tử 0 của mảng lưu trữ dữ liệu nén.

PERF2: tỷ lệ phần trăm lượng thơng tin khơi phục sau khi nén so với ban đầu. + ( ) ( ) 2 100 2= xnormnormCXCC 

PERF với [C,L] biểu diễn cấu trúc phân tích

Wavelet X

+ Nếu X là tín hiệu một chiều và ‘wname’ là tên wavelet trực giao thì

lượng thơng tin khơi phục lại được tính : 2 2 100 2 X XC x PERF =

+ Hiệu suất nén được tính theo cơng thức:

( ( )) (CXC) length CXC find length x PERF0=100 =0

Thơng số đầu vào:

X là tín hiệu cần triệt nhiễu.

Lệnh trên được thực hiện phân tích Wavelet tại mức N với Wavelet cĩ tên là ‘wname’.

opt = 'gbl' : Nén dùng ngưỡng tồn cục, cĩ nghĩa là một ngưỡng chung đặt cho các hệ số chi tiết, xấp xỉ.

opt = 'lvd' : Nén dùng ngưỡng cục bộ tức là từng thành phần chi tiết ( chi tiết dọc, ngang, chéo) và xấp xỉ cĩ một ngưỡng khác nhau.

Cĩ thể thay x bằng C,L: các hệ số phân tích Wavelet tín hiệu đầu vào. keepapp = 1 : các hệ số xấp xi khơng được đặt ngưỡng.

keepapp = 0 : các hệ số xấp sỉ được đặt ngưỡng. Thơng số thr, n, sorh giống ở hàm trên.

3.2.6.Viết chương trình khử nhiễu cho tín hiệu

3.2.6.1.Khử nhiễu tín hiệu 1D bằng ngưỡng cứng: Chương trình:

%% Tao tin hieu bi nhieu. load warma;

noise = warma; time = 1:100;

orsig = 50*sin(0.1*time); sig = orsig + warma(time); thr1 = thselect(sig,'rigrsure'); thr2= thselect(sig,'heursure'); thr3 = thselect(sig,'sqtwolog'); thr4 = thselect(sig,'minimaxi'); %yt = wthresh(sig,sorh,thr);

wname = 'sym4'; level = 5;

sorh = 's'; % dat nguơng mem de khu nhieu % khu nhieu tin hieu dung nguơng mem

% nguong nay duoc tinh theo thselect, co the tinh bang ddencomp cung % %duoc, hoac la so cho truoc.

thr = thr1;

[sigden_1,cxd,lxd,perf0,perfl2]= =

wdencmp('gbl',sig,wname,level,thr,sorh,1);

res = orsig-sigden_1; %%tinh do sai so cua tin hieu da khu nhieu % sigden_1 va tin hieu ban dau orsig.

%% bieu dien tin hieu nhieu va phan tich nhieu subplot(3,2,1);plot(noise,'r'); axis tight

title('Noised Signal');

subplot(3,2,3);plot(orsig,'r'); axis tight title('Original Signal')

%subplot(3,1,3);plot(res,'k'); axis tight %title('Residual');

subplot(3,2,2);plot(sig,'r'); axis tight title('Signal with Noise')

subplot(3,2,4);plot(sigden_1,'b'); axis tight title('Denoised Signal Using Soft Threshold'); subplot(3,1,3);plot(res,'k'); axis tight title('Residual');

Hình 3.5 Khử nhiễu tín hiệu bằng ngưỡng cứng 3.2.6.2.Khử nhiễu tín hiệu 1D bằng ngưỡng mềm

Chương trình:

%% Tao tin hieu bi nhieu. load warma;

noise = warma; time = 1:100;

orsig = 50*sin(0.1*time); sig = orsig + warma(time); thr1 = thselect(sig,'rigrsure'); thr2= thselect(sig,'heursure'); thr3 = thselect(sig,'sqtwolog'); thr4 = thselect(sig,'minimaxi');

wname = 'sym4'; level = 5;

sorh = 'h'; % dat nguơng cung de khu nhieu % khu nhieu tin hieu dung nguơng cung

% nguong nay duoc tinh theo thselect, co the tinh bang ddencomp cung % duoc, hoac la so cho truoc.

thr = thr1;

[sigden_1,cxd,lxd,perf0,perfl2] =

wdencmp('gbl',sig,wname,level,thr,sorh,1);

res = orsig-sigden_1; %% tinh do sai so cua tin hieu da khu nhieu % %sigden_1 va tin hieu ban dau orsig.

%% bieu dien tin hieu nhieu va phan tich nhieu subplot(3,2,1);plot(noise,'r'); axis tight

title('Noised Signal');

subplot(3,2,3);plot(orsig,'r'); axis tight title('Original Signal')

%subplot(3,1,3);plot(res,'k'); axis tight %title('Residual');

subplot(3,2,2);plot(sig,'r'); axis tight title('Signal with Noise')

subplot(3,2,4);plot(sigden_1,'b'); axis tight title('Denoised Signal Using Soft Threshold'); subplot(3,1,3);plot(res,'k'); axis tight title('Residual');

Một phần của tài liệu TIỂU LUẬN MÔN HỌC THIẾT KẾ BỘ LỌC & MÃ HÓA BĂNG CON BIẾN ĐỔI WAVELET MỘT CHIỀU VÀ ỨNG DỤNG (Trang 52 - 59)

w