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)

Масштабирующаяся функция больше, чем 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] Бруна, 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