Обнаружение разрывов и точек разбиения

Сигналы с очень быстрыми эволюциями, такими как переходные сигналы в динамических системах, могут подвергаться резким изменениям, таким как переход или резкое изменение первой или второй производной. Анализ Фурье обычно не может обнаружить эти события. Цель этого примера состоит в том, чтобы показать, как анализ вейвлетами может обнаружить точный момент, когда сигнал меняется, а также тип (разрыв сигнала или резкое изменение его первой или второй производной) и амплитуду изменения. При обработке изображений одним из основных приложений является обнаружение ребра, которое также включает в себя обнаружение резких изменений.

Разбивка по частотам

Короткие вейвлеты часто более эффективны, чем длинные таковые, в обнаружении разрыва сигнала. Поэтому, чтобы идентифицировать разрыв сигнала, мы будем использовать вейвлет Haar. Прерывистый сигнал состоит из медленной синусоиды, за которой резко следует средняя синусоида.

load freqbrk
x = freqbrk;

Вычислите многоуровневое 1-D вейвлет на уровне 1.

level = 1;
[c,l] = wavedec(x,level,'haar');

Извлеките коэффициенты детализации на уровне 1 из разложения вейвлета и визуализируйте результат. Интерполируйте коэффициенты детализации, чтобы они и сигнал имели одинаковую длину.

d1 = detcoef(c,l,level);
subplot(2,1,1)
plot(x)
subplot(2,1,2)
plot(interpft(d1,2*length(d1)))
ylabel('d1')

Детали первого уровня (d1) наиболее четко показать разрыв, потому что разрыв содержит высокочастотную деталь. Разрыв локализуется очень точно около времени = 500.

Наличие шума усложняет идентификацию разрывов. Если более мелкие уровни разложения могут использоваться, чтобы устранить большую часть шума, разрыв иногда виден на более грубых уровнях при разложении.

Вторая разбивка деривации

Цель этого примера состоит в том, чтобы показать, как анализ вейвлетами может обнаружить разрыв в одной из производных сигнала. Сигнал, хотя, по-видимому, единственная гладкая кривая, на самом деле состоит из двух отдельных экспоненциалов.

load scddvbrk;
x = scddvbrk;
level = 2;
[c,l] = wavedec(x,level,'db4');
[d1,d2] = detcoef(c,l,1:level);
d1up = dyadup(d1,0);
d2up = dyadup(dyadup(d2,0),0);
subplot(3,1,1)
plot(x)
xlim([400 600])
subplot(3,1,2)
plot(d1up)
ylabel('d1')
xlim([400 600])
subplot(3,1,3)
plot(d2up)
ylabel('d2')
xlim([400 600])

Мы увеличили среднюю часть сигнала, чтобы более четко показать, что происходит вокруг времени = 500. Детали высоки только в середине сигнала и незначительны в другом месте. Это предполагает наличие высокочастотной информации - внезапное изменение или разрыв - около времени = 500.

Обратите внимание, что чтобы обнаружить особенность, выбранный вейвлет должен быть достаточно регулярным, что подразумевает более длительную импульсную характеристику фильтра. Регулярность может быть важным критерием при выборе вейвлета. Мы решили использовать db4, что является достаточно регулярным для этого анализа. Если бы мы выбрали вейвлет Haar, разрыв не был бы обнаружен. Если вы попытаетесь повторить этот анализ с помощью вейвлета Haar на втором уровне, вы заметите, что детали равны нулю в момент времени = 500.

Обнаружение ребер

Для изображений двумерное дискретное вейвлет приводит к разложению коэффициентов аппроксимации на уровне j в четырёх компонентах: приближение на уровне j + 1 и детали в трёх ориентациях (горизонтальной, вертикальной и диагональной).

load tartan;
level = 1;
[c,s] = wavedec2(X,level,'coif2');
[chd1,cvd1,cdd1] = detcoef2('all',c,s,level);
subplot(1,2,1)
image(X)
colormap(map)
title('Original Image')
subplot(1,2,2)
image(chd1)
colormap(map)
title('Horizontal Edges')

subplot(1,2,1)
image(cvd1)
colormap(map)
title('Vertical Edges')
subplot(1,2,2)
image(cdd1)
colormap(map)
title('Diagonal Edges')

См. также

|