МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
кафедра захисту інформації
Лабораторна робота №3
на тему: «ЗАСТОСУВАННЯ ХВИЛЬКОВОГО ПЕРЕТВОРЕННЯ
ДЛЯ ОБРОБКИ СИГНАЛІВ»
з курсу «Цифрова обробка сигналів та зображень»
Мета роботи: ознайомитися зі змістом хвилькового перетворення, основними можливостями хвилькової обробки реалізованими в програмному пакеті MatLab, отримати навики розрахунку дискретного хвилькового перетворення, декомпозиції сигналу на апроксимуючі та деталізуючі складові, хвилькова очищення сигналів від шумів.
Завдання:
1. Ознайомитись з теоретичним матеріалом.
2. Скласти програму в середовищі MatLab згідно завдання.
2.1. Провести очищення сигналу від шуму з використанням хвилькового перетворення відповідно до завдання у табл. 2. Сигнал зберігається у файлі Lab_3_варіант у змінній signal.
Варіант
Тип вейвлету
Рівень
роз-кладу
Поріг
Тип
порогу
Масшта-бування
Сигнал
1.
Добеші 3-го порядку
3
rigrsure
жорсткий
Тип 1
Lab_3_1.mat
Лістинг програми:
load Lab_3_11; % Завантаження сигналу
tn = (0 : length(signal)-1); % вісь часу
w_name = 'coif5'; % тип вейвлету
Lev = 5; % рівень розкладу
type = 'rigrsure'; % поріг
[Lo_D, Hi_D, Lo_R, Hi_R] = wfilters(w_name); % розрах-к фільтрів декомпозиції і реконструкції
% розрахунок АЧХ фільтрів
[h_D, f] = freqz(Lo_D, 1, 0:0.001:1, 2);
h1_D = freqz(Hi_D, 1, 0:0.001:1, 2);
[h_R, f] = freqz(Lo_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(611); plot(cD2); grid on; xlim([0 L(5)-1]); ylabel('cD2');
subplot(612); 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(717); plot(D1); grid on; xlim([0 L_sig-1]); ylabel('D1');
% Оцінка рівня шуму деталізуючих коефіцієнтів
stdc = wnoisest(C, L, Lev);
% Обчислення порогу для кожного рівня
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(1))
cD1(ii) = 0;
else
cD1(ii) = cD1(ii) - sign(cD1(ii)) * thr(1);
end;
end;
% М’яке порогування коефіцієнтів cD2
for ii = 1 : length(cD2)
if (abs(cD2(ii)) < thr(2))
cD2(ii) = 0;
else
cD2(ii) = cD2(ii) - sign(cD2(ii)) * thr(2);
end;
end;
% М’яке порогування коефіцієнтів cD3
for ii = 1 : length(cD3)
if (abs(cD3(ii)) < thr(3))
cD3(ii) = 0;
else
cD3(ii) = cD3(ii) - sign(cD3(ii)) * thr(3);
end;
end;
% М’яке порогування коефіцієнтів cD4
for ii = 1 : length(cD4)
if (abs(cD4(ii)) < thr(4))
cD4(ii) = 0;
else
cD4(ii) = cD4(ii) - sign(cD4(ii)) * thr(4);
end;
end;
% М’яке порогування коефіцієнтів cD5
for ii = 1 : length(cD5)
if (abs(cD5(ii)) < thr(5))
cD5(ii) = 0;
else
cD5(ii) = cD5(ii) - sign(cD5(ii)) * thr(5);
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, отримала навики розрахунку дискретного хвилькового перетворення, декомпозиції сигналу на апроксимуючі та деталізуючі складові, хвилькова очищення сигналів від шумів.