Двумерный CWT шумного шаблона

В этом примере показано, как обнаружить шаблон в шумном изображении с помощью 2D непрерывного вейвлета преобразовывает (CWT). Пример использует и изотропные (ненаправленные) и анизотропные (направленные) вейвлеты. Изотропный вейвлет не чувствителен к ориентации функции, в то время как направленный вейвлет.

Используйте изотропный (ненаправленный) мексиканский вейвлет шляпы, также известный как вейвлет Ricker и анизотропный (направленный) вейвлет Morlet. Продемонстрируйте, что мексиканский вейвлет шляпы с действительным знаком не зависит от угла.

Y = zeros(32,32);
Y(16,16) = 1;
cwtmexh = cwtft2(Y,'wavelet','mexh','scales',1,...
    'angles',[0 pi/2]);
surf(real(cwtmexh.cfs(:,:,1,1,1)));
shading interp; title('Angle = 0 Radians');

Извлеките вейвлет, соответствующий углу π/2 радианы. Вейвлет является изотропным и поэтому не дифференцирует ориентированные функции в данных.

surf(real(cwtmexh.cfs(:,:,1,1,2)));
shading interp; title('Angle = pi/2 Radians');

Повторите предыдущие шаги для вейвлета Morlet с комплексным знаком. Вейвлет Morlet имеет большую пространственную поддержку, чем мексиканский вейвлет шляпы, поэтому этот пример использует большую матрицу. Вейвлет с комплексным знаком, таким образом, модуль построен.

Y = zeros(64,64);
Y(32,32) = 1;
cwtmorl = cwtft2(Y,'wavelet','morl','scales',1,...
    'angles',[0 pi/2]);
surf(abs(cwtmorl.cfs(:,:,1,1,1)));
shading interp; title('Angle = 0 Radians');

Извлеките вейвлет, соответствующий углу π/2 радианы. В отличие от мексиканского вейвлета шляпы, вейвлет Morlet не является изотропным и поэтому является чувствительным к направлению функций в данных.

surf(abs(cwtmorl.cfs(:,:,1,1,2)));
shading interp; title('Angle = pi/2 Radians');

Примените мексиканскую шляпу и вейвлеты Morlet к обнаружению шаблона в шуме. Создайте шаблон, состоящий из линейных сегментов, к которым соединяют в углу в 90 градусов. Амплитуда шаблона равняется 3, и это происходит в дополнении N (0,1) белый Гауссов шум.

X = zeros(256,256);
X(100:200,100:102) = 3;
X(200:202,100:125) = 3;
X = X+randn(size(X));
imagesc(X); axis xy;

Получите 2D CWT в шкалах 3 - 8 с 0,5 шагом с мексиканским вейвлетом шляпы. Визуализируйте 2D коэффициенты вейвлета в квадрате величиной в шкале 3.

cwtmexh = cwtft2(X,'wavelet','mexh','scales',3:0.5:8);
surf(abs(cwtmexh.cfs(:,:,1,3,1)).^2);
view(0,90); shading interp; axis tight;

Используйте направленный вейвлет Morlet, чтобы извлечь вертикальные и горизонтальные линейные сегменты отдельно. Вертикальный линейный сегмент извлечен одним углом. Горизонтальный линейный сегмент извлечен другим углом.

cwtmorl = cwtft2(X,'wavelet','morl','scales',3:0.5:8,...
    'angles',[0 pi/2]);
surf(abs(cwtmorl.cfs(:,:,1,4,1)).^2);
view(0,90); shading interp; axis tight;

figure;
surf(abs(cwtmorl.cfs(:,:,1,4,2)).^2);
view(0,90); shading interp; axis tight;