waveletScattering2

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

Описание

Используйте waveletScattering2 объект для создания сети для разложения вейвлет-рассеяния изображений с использованием комплексных 2-D вейвлетов Морле.

Создание

Описание

пример

sf = waveletScattering2 создает сеть для разложения вейвлета изображения рассеяния с двумя комплексно-значимыми 2-D банками фильтров Морле и изотропной инвариантностью шкалы. Обе группы фильтров имеют коэффициент качества один вейвлет на октаву. Для каждого вейвлет существует шесть оборотов, линейно разнесенных между 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-D вейвлет сеть построена путем вращения 2-D вейвлеты в направлении по часовой стрелке. Противоположное соглашение используется в Image Processing Toolbox™. Создание банка фильтров Габора для применения к изображению включает вращение фильтра Габора в направлении против часовой стрелки. См. «Наклонный параметр», и gabor (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-by-21-by- P Как много коэффициентов для каждого пути рассеяния относительно критически дискретизированного числа. Вы можете использовать coefficientSize для определения количества коэффициентов, полученных для рассеивающей сети. По умолчанию OversamplingFactor установлено в 0, что соответствует критическому понижению дискретизации коэффициентов.

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

Из-за вычислительной сложности преобразования рассеяния, рекомендуемая настройка для OversamplingFactor свойство имеет значения 0, 1 или 2. Значения 1 и 2 указывают на 21-by-21-by- P и a 22-by-22-by- 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. Используйте функцию helper 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] Бруна, Дж., и С. Маллат. «Инвариантные сети свертки рассеяния». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 35, № 8, 2013, с. 1872-1886.

[2] Sifre, L., and S. Mallat. «Твердое рассеяние движения для классификации текстур». arXiv препринт. 2014, стр 1–19. https://arxiv.org/abs/1403.1687.

[3] Sifre, L., and S. Mallat. «Вращение, масштабирование и деформация инвариантного рассеяния для дискриминации текстур». 2013 IEEE Conference on Компьютерное Зрение and Pattern Recognition. 2013, стр. 1233-1240.

Введенный в R2019a