exponenta event banner

waveletScattering2

Вейвлетное рассеяние изображения

Описание

Используйте waveletScattering2 объект создать сеть для изображения небольшой волны, рассеивающего разложение, используя 2-е небольшие волны Morlet со сложным знаком.

Создание

Описание

пример

sf = waveletScattering2 создает сеть для разложения рассеивания небольшой волны изображения с двумя 2-ми банками фильтра Morlet со сложным знаком и изотропной масштабной инвариантностью. Оба блока фильтров имеют коэффициенты качества по одному вейвлету на октаву. Для каждого вейвлет-фильтра имеется шесть вращений, линейно разнесенных между 0 и δ радиан. По умолчанию waveletScattering2 предполагает размер входного изображения 128 на 128. Инвариантность шкалы равна 64.

sf = waveletScattering2(Name,Value) создает сеть для рассеяния вейвлет-изображений со свойствами, заданными одним или несколькими Name,Value аргументы пары. Свойства могут быть указаны в любом порядке как Name1,Value1,...,NameN,ValueN. Заключить каждое имя свойства в отдельные кавычки (' ') или двойные цитаты (" ").

Примечание

За исключением OptimizePath и OversamplingFactor, нельзя изменить значение свойства существующей сети рассеяния. Например, при создании сети sf с ImageSize установить в значение [256 256], нельзя назначить другой ImageSize кому sf.

Свойства

развернуть все

Размер изображения для сети вейвлет-рассеяния изображения, заданного как двухэлементный целочисленный вектор [numrows numcolumns]. Изображения должны быть не менее 10 на 10.

Если вводимые данные представляют собой изображение RGB, не требуется указывать третье измерение. waveletScattering2 поддерживает только цветные изображения с размером третьего размера 3.

Пример: sf = waveletScattering2('ImageSize',[100 200]) создает сеть для изображений «100 на 200» и цветных изображений «100 на 200 на 3».

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

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

Пример: sf = waveletScattering2('ImageSize',[101 200]) создает фреймворк с InvarianceScale равно 51.

Число вращений на вейвлет на группу фильтров в сети рассеяния, указанное как целочисленный вектор. Укажите одно целое число, меньшее или равное 12, для каждого набора фильтров в сети рассеяния.

Для каждого вейвлета в каждом наборе фильтров существуют NumRotations линейно разнесенные углы между 0 и δ радиан. Вейвлет поворачивают в направлении по часовой стрелке. Длина вектора, указанного в NumRotations должна равняться длине вектора, указанного в QualityFactors.

Пример: sf = waveletScattering2('NumRotations',[7 5]) создает сеть с семью вращениями на вейвлет в первом блоке фильтров и пятью вращениями на вейвлет во втором блоке фильтров.

Примечание

2-я сеть рассеивания небольшой волны построена, вращая 2-е небольшие волны Morlet в направлении по часовой стрелке. Противоположное соглашение используется в Toolbox™ обработки изображений. Создание набора фильтров Габора для применения к изображению включает поворот фильтра Габора против часовой стрелки. См. раздел Параметр наклона и gabor(Панель инструментов обработки изображений) в панели инструментов обработки изображений.

Коэффициенты качества банка фильтров рассеяния, заданные как целочисленный вектор. Коэффициент качества - количество вейвлет-фильтров на октаву. Количество блоков вейвлет-фильтров в сети рассеяния равно количеству элементов в QualityFactors. Допустимые коэффициенты качества - целые числа, меньшие или равные 4. Если QualityFactors указывается как вектор, элементы QualityFactors должно быть нерастущим.

Длина вектора, указанного в QualityFactors должна равняться длине вектора, указанного в NumRotations.

Пример: sf = waveletScattering2('QualityFactors',[2 1])

Точность коэффициентов рассеяния и фильтров:

  • 'single' - Единичная точность

  • 'double' - Двойная точность

Примечание

  • Все вычисления, включающие сеть вейвлет-рассеяния, выполняются в Precision.

  • Точность выходных данных scatteringTransform функция не превышает точность waveletScattering2 объект.

Коэффициент избыточной дискретизации, указанный как неотрицательное целое число или Inf. Коэффициент определяет, насколько коэффициенты рассеяния изображения избыточно дискретизированы относительно критически пониженных значений. Коэффициент избыточной выборки имеет масштаб log2. Например, если sf = waveletScattering2('OversamplingFactor',1), преобразование рассеяния возвращает 21около-21около-P столько же коэффициентов для каждого пути рассеяния относительно критически дискретизированного числа. Вы можете использовать coefficientSize для определения количества коэффициентов, полученных для сети рассеяния. По умолчанию OversamplingFactor имеет значение 0, что соответствует критическому понижению дискретизации коэффициентов.

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

Из-за вычислительной сложности преобразования рассеяния рекомендуемая настройка для OversamplingFactor имеет значение 0, 1 или 2. Значения 1 и 2 указывают на 21около-21около-P и 22около-22около-P увеличение числа коэффициентов рассеяния на траекторию, соответственно.

Пример: sf.OversamplingFactor = 1 устанавливает OversamplingFactor свойства существующей сети для 1.

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

Когда OptimizePath имеет значение true, путь рассеяния вычисляется только в том случае, если полоса пропускания родительского узла значительно перекрывается с полосой пропускания дочернего узла. «Значимая» в этом контексте определяется следующим образом: для коэффициента качества 1, 1/2 3-dB полоса пропускания дочернего узла вычитается из частоты вейвлет-центра дочернего узла. Если это значение меньше 3-dB полосы пропускания родительского объекта, вычисляется путь рассеяния. Для коэффициентов качества, превышающих 1, значительное перекрытие определяется как перекрытие между центральной частотой нижестоящего элемента минус 3-dB полоса пропускания нижестоящего элемента. Если это перекрывается с 3-dB полосой пропускания родительского объекта, вычисляется путь рассеяния.

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

Пример: sf.OptimizePath = false устанавливает OptimizePath свойства существующей сети для false.

Функции объекта

scatteringTransformВейвлет 2-D преобразование рассеяния
featureMatrixМатрица признаков рассеяния изображения
logНатуральный логарифм преобразования рассеяния 2-D
filterbankВейвлет-фильтры и фильтры масштабирования
littlewoodPaleySumСумма Литтлвуд-Пейли
coefficientSizeРазмер коэффициентов рассеяния изображения
numordersКоличество порядков рассеяния
numfilterbanksКоличество банков фильтров рассеяния
pathsПути рассеяния

Примеры

свернуть все

Создайте сеть рассеяния вейвлет-изображений с настройками по умолчанию. Размер изображения по умолчанию - 128 на 128, а масштаб инвариантности по умолчанию - 64.

sf = waveletScattering2
sf = 
  waveletScattering2 with properties:

             ImageSize: [128 128]
       InvarianceScale: 64
          NumRotations: [6 6]
        QualityFactors: [1 1]
             Precision: 'single'
    OversamplingFactor: 0
          OptimizePath: 1

Используйте filterbank для получения преобразования Фурье масштабирующей функции, вейвлет-фильтров и центральных пространственных частот вейвлет-фильтров.

[phif,psif,f] = filterbank(sf);

Шкала инвариантности даёт ширину в направлениях x - и y 2-D гауссовой функции масштабирования. Чтобы подтвердить, что функция масштабирования имеет ожидаемую пространственную ширину, сначала возьмите обратное преобразование Фурье из phif. Использовать функцию помощника helperPlotPhiSurface для построения графика масштабной функции с масштабом инвариантности, обозначенным как x, так и y. Исходный код для helperPlotPhiSurface приводится в приложении в конце этого примера.

phi = ifftshift(ifft2(phif));
figure
helperPlotPhiSurface(sf,phi)

Figure contains an axes. The axes with title $\phi(x,y)$ contains 5 objects of type surface, line.

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

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

psiF = psif{2}(:,:,end);
psiL = ifftshift(ifft2(psiF));
figure
helperPlotPsiSurface(sf,psiL)

Figure contains an axes. The axes with title $\frac{1}{2^{2J}}\psi(x/2^J,y/2^J)$ contains 6 objects of type surface, line.

Приложение

В этом примере используются следующие вспомогательные функции.

helperPlotPhiSurface

function helperPlotPhiSurface(scatFrame,data)
halfscale = scatFrame.InvarianceScale/2;
surf(data)
shading interp
view(-20,35)
Ysize = size(data,1);
Xsize = size(data,2);
Ycenter = Ysize/2;
Xcenter = Xsize/2;
hold on
plot([Xcenter-halfscale Xcenter-halfscale],[0 Ysize],'r','LineWidth',2);
plot([Xcenter+halfscale Xcenter+halfscale],[0 Ysize],'r','LineWidth',2);
plot([0 Xsize],[Ycenter-halfscale Ycenter-halfscale],'r','LineWidth',2);
plot([0 Xsize],[Ycenter+halfscale Ycenter+halfscale],'r','LineWidth',2);
title('$\phi(x,y)$','FontSize',14,'Interpreter','Latex');
xlabel('$x$','FontSize',14,'Interpreter','Latex')
ylabel('$y$','FontSize',14,'Interpreter','Latex')
end

helperPlotPsiSurface

function helperPlotPsiSurface(scatFrame,data)
halfscale = scatFrame.InvarianceScale/2;
Ysize = size(data,1);
Xsize = size(data,2);
Ycenter = Ysize/2;
Xcenter = Xsize/2;
surf(real(data))
shading interp
view(-5,13)
hold on
surf(imag(data))
shading interp
plot([Xcenter-halfscale Xcenter-halfscale],[0 Ysize],'r','LineWidth',2);
plot([Xcenter+halfscale Xcenter+halfscale],[0 Ysize],'r','LineWidth',2);
plot([0 Xsize],[Ycenter-halfscale Ycenter-halfscale],'r','LineWidth',2);
plot([0 Xsize],[Ycenter+halfscale Ycenter+halfscale],'r','LineWidth',2); 
title('$\frac{1}{2^{2J}}\psi(x/2^J,y/2^J)$','FontSize',14,...
    'Interpreter','Latex');
xlabel('$x$','FontSize',14,'Interpreter','Latex')
ylabel('$y$','FontSize',14,'Interpreter','Latex')
view(-10,51)
end

Ссылки

[1] Бруна, J. и С. Маллэт. «Инвариантные сети свертки рассеяния». Транзакции IEEE по анализу шаблонов и машинному интеллекту. т. 35, № 8, 2013, с. 1872-1886.

[2] Сифре, Л. и С. Маллат. «Рассеяние жесткого движения для классификации текстур». arXiv препринт. 2014, стр 1–19. https://arxiv.org/abs/1403.1687.

[3] Сифре, Л. и С. Маллат. Конференция IEEE 2013 по компьютерному зрению и распознаванию образов. 2013, стр. 1233-1240.

Представлен в R2019a