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

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

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

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');

Figure contains an axes. The axes with title Angle = 0 Radians contains an object of type surface.

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

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

Figure contains an axes. The axes with title Angle = pi/2 Radians contains an object of type surface.

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

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');

Figure contains an axes. The axes with title Angle = 0 Radians contains an object of type surface.

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

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

Figure contains an axes. The axes with title Angle = pi/2 Radians contains an object of type surface.

Примените мексиканскую шляпу и Морлет вейвлеты к обнаружению шаблона в шуме. Создайте шаблон, состоящий из сегментов линии, соединенных под углом 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;

Figure contains an axes. The axes contains an object of type image.

Получите 2-D CWT в шкалах от 3 до 8 с шагом 0,5 с мексиканским вейвлетом шляпы. Визуализируйте квадратные 2-D вейвлет в шкале 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;

Figure contains an axes. The axes contains an object of type surface.

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

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 contains an axes. The axes contains an object of type surface.

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

Figure contains an axes. The axes contains an object of type surface.