МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
кафедра захисту інформації
/
Звіт
про виконання лабораторної роботи №3
на тему: «Застосування хвильового перетворення для обробки сигналів»
з курсу «Цифрова обробка сигналів та зображень»
Мета роботи: ознайомитися зі змістом хвилькового перетворення, основними можливостями хвилькової обробки реалізованими в програмному пакеті MatLab, отримати навики розрахунку дискретного хвилькового перетворення, декомпозиції сигналу на апроксимуючі та деталізуючі складові, хвилькова очищення сигналів від шумів.
Завдання:
1. Ознайомитись з теоретичним матеріалом.
2. Скласти програму в середовищі MatLab згідно завдання.
2.1. Провести очищення сигналу від шуму з використанням хвилькового перетворення відповідно до завдання у табл. 1.
табл.1
№
Тип вейвлету
Рівень
розкладу
Поріг
Тип
порогу
Масштабування
Сигнал
20 (4)
Добеші 4-го порядку
5
minimax
жорсткий
Тип 1
Lab_3_4.mat
Лістинг програми:
>> tn=(0:length(signal)-1); % вісь часу
>> w_name= 'db4'; % тип вейвлету
>> Lev= 5; % рівень розкладу
>> type= 'minimaxi'; % поріг
>> [L0_D, Hi_D, L0_R, Hi_R]=wfilters(w_name); % розрах-к фільтрів декомпозиції і реконструкції
% розрахунок АЧХ фільтрів
>> [h_D, f]=freqz(L0_D, 1, 0:0.001:1, 2);
>> h1_D=freqz(Hi_D, 1, 0:0.001:1, 2);
>> [h_R, f]=freqz(L0_R, 1, 0:0.001:1, 2);
>> h1_R=freqz(Hi_R, 1, 0:0.001:1, 2);
>> figure(1); plot(f, abs(h_D), f, abs(h1_D)); grid on; % графік АЧХ фільтрів декомпозиції
>> figure(2); plot(f, abs(h_R), f, abs(h1_R)); grid on; % графік АЧХ фільтрів реконструкції
>> [C, L]=wavedec(signal, Lev, w_name); % хвильковий розклад сигналу
>> cA5=appcoef(C, L, w_name, Lev); % добування коефіцієнтів апроксимації сА5
>> [cD5 cD4 cD3 cD2 cD1]=detcoef(C, L, [5 4 3 2 1]);% добування коефіцієнтів деталізації cD5, cD4, сD3, cD2, cD1
% Побудова графіків коефіцієнтів розкладу
>> figure(3);
>> subplot(611); plot(cA5); grid on; xlim([0 L(1)-1]); ylabel('cA5');
>> subplot(612); plot(cD5); grid on; xlim([0 L(2)-1]); ylabel('cD5');
>> subplot(613); plot(cD4); grid on; xlim([0 L(3)-1]); ylabel('cD4');
>> subplot(614); plot(cD3); grid on; xlim([0 L(4)-1]); ylabel('cD3');
>> subplot(615); plot(cD2); grid on; xlim([0 L(4)-1]); ylabel('cD2');
>> subplot(616); plot(cD1); grid on; xlim([0 L(6)-1]); ylabel('cD1');
>> A5=wrcoef('a', C, L, w_name, 5); % Обчислення апроксимуючої складової А5
>> D5=wrcoef('d', C, L, w_name, 5); % Обчислення деталізуючої складової D5
>> D4=wrcoef('d', C, L, w_name, 4); % Обчислення деталізуючої складової D4
>> D3=wrcoef('d', C, L, w_name, 3); % Обчислення деталізуючої складової D3
>> D2=wrcoef('d', C, L, w_name, 2); % Обчислення деталізуючої складової D2
>> D1=wrcoef('d', C, L, w_name, 1); % Обчислення деталізуючої складової D1
>> L_sig=length(signal); % Розмірність сигналу
% Побудова графіків сигналу та його часових складових
>> figure(4);
>> subplot(711); plot(signal); grid on; xlim([0 L_sig-1]); ylabel('S(n)');
>> subplot(712); plot(A5); grid on; xlim([0 L_sig-1]); ylabel('A5');
>> subplot(713); plot(D5); grid on; xlim([0 L_sig-1]); ylabel('D5');
>> subplot(714); plot(D4); grid on; xlim([0 L_sig-1]); ylabel('D4');
>> subplot(715); plot(D3); grid on; xlim([0 L_sig-1]); ylabel('D3');
>> subplot(716); plot(D2); grid on; xlim([0 L_sig-1]); ylabel('D2');
>> subplot(515); plot(D1); grid on; xlim([0 L_sig-1]); ylabel('D1');
% Оцінка рівня шуму деталізуючих коефіцієнтів
>> stdc=wnoisest(C, L, 1);
% Обчислення порогу для кожного рівня
>> for ii=1:Lev
thr(ii)=thselect(detcoef(C, L, ii)/stdc, type);
thr(ii)=thr(ii)*stdc;
end;
% Жорстке порогування коефіцієнтів cD1
>> for ii=1:length(cD1)
if (abs(cD1(ii))<thr)
cD1(ii)=0;
end;
end;
% Жорстке порогування коефіцієнтів cD2
>> for ii=1:length(cD2)
if (abs(cD2(ii))<thr)
cD2(ii)=0;
end;
end;
% Жорстке порогування коефіцієнтів cD3
>> for ii=1:length(cD3)
if (abs(cD3(ii))<thr)
cD3(ii)=0;
end;
end;
% Жорстке порогування коефіцієнтів cD4
>> for ii=1:length(cD4)
if (abs(cD4(ii))<thr)
cD4(ii)=0;
end;
end;
% Жорстке порогування коефіцієнтів cD5
>> for ii=1:length(cD5)
if (abs(cD5(ii))<thr)
cD5(ii)=0;
end;
end;
% Заміна первинних коефіцієнтів cD обчисленими
>> cD=[cD5 cD4 cD3 cD2 cD1];
>> C(L(1)+1:end)=cD;
% Побудова графіків коефіцієнтів після порогування
>> figure(5);
>> subplot(611); plot(0:L(1)-1, cA5); grid on; xlim([0 L(1)-1]); ylabel('cA5');
>> subplot(612); plot(0:L(2)-1, cD5); grid on; xlim([0 L(2)-1]); ylabel('cD5');
>> subplot(613); plot(0:L(3)-1, cD4); grid on; xlim([0 L(3)-1]); ylabel('cD4');
>> subplot(614); plot(0:L(4)-1, cD3); grid on; xlim([0 L(4)-1]); ylabel('cD3');
>> subplot(615); plot(0:L(5)-1, cD2); grid on; xlim([0 L(5)-1]); ylabel('cD2');
>> subplot(616); plot(0:L(6)-1, cD1); grid on; xlim([0 L(6)-1]); ylabel('cD1');
% Обчислення деталізуючих складових після порогування
>> D5=wrcoef('d', C, L, w_name, 5);
>> D4=wrcoef('d', C, L, w_name, 4);
>> D3=wrcoef('d', C, L, w_name, 3);
>> D2=wrcoef('d', C, L, w_name, 2);
>> D1=wrcoef('d', C, L, w_name, 1);
% Побудова графіків сигналу та його часових складових після порогування
>> figure(6);
>> subplot(711); plot(tn, signal); grid on; xlim([0 L_sig-1]); ylabel('S(n)');
>> subplot(712); plot(tn, A5); grid on; xlim([0 L_sig-1]); ylabel('A5');
>> subplot(713); plot(tn, D5); grid on; xlim([0 L_sig-1]); ylabel('D5');
>> subplot(714); plot(tn, D4); grid on; xlim([0 L_sig-1]); ylabel('D4');
>> subplot(715); plot(tn, D3); grid on; xlim([0 L_sig-1]); ylabel('D3');
>> subplot(716); plot(tn, D2); grid on; xlim([0 L_sig-1]); ylabel('D2');
>> subplot(717); plot(tn, D1); grid on; xlim([0 L_sig-1]); ylabel('D1');
% Обчислення очищенного від шуму сигналу
>> signal_d=waverec(C, L, w_name);
% Побудова графіків сигналу до і після очищення
>> figure(7); subplot(211); plot(tn, signal); grid on; xlim([0 L_sig-1]); ylabel('S(n)');
>> subplot(212); plot(tn, signal_d); grid on; xlim([0 L_sig-1]); ylabel('Denoised S(n)');
Графічні результати роботи
/
/
/
/
/
/
/
Висновок: у даній лабораторній роботі я ознайомився із змістом хвильового перетворення, основними можливостями хвильової обробки сигналів у програмному пакеті MatLab, здійснив очищення сигналу від шуму, а саме: здійснив декомпозицію сигналу на апроксимуючі та деталізуючі коефіцієнти, здійснив порогову обробку деталізуючих коефіцієнтів та реконструкцію сигналу. В результаті, я отримав графік, на якому зображено сигнал із шумом та очищений від шуму сигнал (figure 7).