waveletScattering2

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

Описание

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

Создание

Синтаксис

sf = waveletScattering2
sf = waveletScattering2(Name,Value)

Описание

пример

sf = waveletScattering2 создает среду для разложения рассеивания вейвлета изображений с двумя 2D наборами фильтров 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]) создает среду с семью вращениями на вейвлет в первом наборе фильтров и пятью вращениями на вейвлет во втором наборе фильтров.

Примечание

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

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

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

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

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

  • единственный Одинарная точность

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

scatteringTransformВейвлет 2D рассеивание преобразовывает
featureMatrixОтобразите рассеивающуюся матрицу функции
logНатуральный логарифм 2D рассеивания преобразовывает
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 2D Гауссовой функции масштабирования. Подтвердить масштабирующуюся функцию имеет ожидаемую пространственную ширину, сначала возьмите обратное преобразование Фурье phif. Используйте функцию помощника helperPlotPhiSurface, чтобы построить масштабирующуюся функцию со степенью шкалы инвариантности в обоих обозначенных X и Y. Исходный код для helperPlotPhiSurface предоставлен в приложении в конце этого примера.

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

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

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

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

Приложение

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

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] Бруна, A. и С. Маллэт. "Инвариантные Сети Свертки Рассеивания". Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Издание 35, Номер 8, 2013, стр 1872–1886.

[2] Sifre, L. и С. Маллэт. "Твердое движение, Рассеивающееся для Классификации Структуры". предварительная печать arXiv. 2014, стр 1–19. https://arxiv.org/abs/1403.1687.

[3] Sifre, L. и С. Маллэт. "Вращение, масштабирование и инвариант деформации, рассеивающийся для дискриминации структуры". 2 013 Конференций по IEEE по Компьютерному зрению и Распознаванию образов. 2013, стр 1233–1240.

Введенный в R2019a

Для просмотра документации необходимо авторизоваться на сайте