waveletScattering2

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

Описание

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

Создание

Описание

пример

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) в Image Processing Toolbox.

Рассеивание добротностей набора фильтров в виде вектора с целочисленным знаком. Добротностью является количество фильтров вейвлета на октаву. Количество наборов фильтров вейвлета в рассеивающейся сети равно числу элементов в 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 дБ дочернего узла вычтен из частоты центра вейвлета дочернего узла. Если то значение меньше полосы пропускания на 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)

Figure contains an axes object. The axes object with title phi leftParenthesis x , y rightParenthesis 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 object. The axes object with title StartFraction 1 over 2 toThePowerOf 2 J baseline EndFraction psi leftParenthesis x slash 2 toThePowerOf J baseline , y slash 2 toThePowerOf J baseline rightParenthesis 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] Sifre, L. и С. Маллэт. "Твердое движение, Рассеивающееся для Классификации Структуры". предварительная печать arXiv. 2014, стр 1–19. https://arxiv.org/abs/1403.1687.

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

Введенный в R2019a