2D Свертка

Вычислите 2D дискретную свертку двух входных матриц

Библиотека

Фильтрация

visionfilter

Описание

2D блок Convolution вычисляет двумерную свертку двух входных матриц. Примите, что матрица А имеет размерности (Ma, Na), и матрица B имеет размерности (Mb, Nb). Когда блок вычисляет полный выходной размер, уравнение для 2D дискретной свертки

C(i,j)=m=0(Ma1)n=0(Na1)A(m,n)*B(im,jn)

где 0i<Ma+Mb1 и 0j<Na+Nb1.

ПортВвод/выводПоддерживаемые типы данныхПоддерживаемые комплексные числа

I1

Матрица значений интенсивности или матрица, которая представляет одну плоскость видеопотока RGB

  • Плавающая точка двойной точности

  • Плавающая точка с одинарной точностью

  • Фиксированная точка

  • 8-, 16-, 32-битное целое число со знаком

  • 8-, 16-, 32-битное беззнаковое целое

Да

I2

Матрица значений интенсивности или матрица, которая представляет одну плоскость видеопотока RGB

То же самое как порт I1

Да

Вывод

Свертка входных матриц

То же самое как порт I1

Да

Если тип данных входа является плавающей точкой, вывод блока имеет совпадающий тип данных.

Размерности вывода диктует параметр Output size. Примите, что вход в порте I1 имеет размерности (Ma, Na), и вход в порте I2 имеет размерности (Mb, Nb). Если для параметра Output size вы выбираете Full, вывод является полной двумерной сверткой с размерностями (Ma +Mb-1, Na +Nb-1). Если для параметра Output size вы выбираете Same as input port I1, вывод является центральной частью свертки с теми же размерностями как вход в порте I1. Если для параметра Output size вы выбираете Valid, вывод является только теми частями свертки, которые вычисляются без дополненных нулем ребер любого входа. Этот вывод имеет размерности (Ma-Mb+1, Na-Nb+1). Однако, если all(size(I1)<size(I2)), блочные ошибки.

Если вы устанавливаете флажок Normalized output, вывод блока разделен на sqrt(sum(dot(I1p,I1p))*sum(dot(I2,I2))), где I1p является фрагментом матрицы I1, которая выравнивается с матрицей I2. Смотрите Пример 2 для получения дополнительной информации.

Примечание

Когда вы устанавливаете флажок Normalized output, вход блока не может быть фиксированной точкой.

Типы данных с фиксированной точкой

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

Можно установить продукт вывод, аккумулятор и типы выходных данных в маске блока, как обсуждено в Параметрах.

Вывод множителя находится в типе выходных данных продукта, если по крайней мере одни из входных параметров ко множителю действительны. Если оба из входных параметров ко множителю являются комплексными, результат умножения находится в типе данных аккумулятора. Для получения дополнительной информации на комплексном выполняемом умножении, обратитесь к Типам данных Умножения.

Примеры

Пример 1

Предположим, что I1, первая входная матрица, имеет размерности (4,3), и I2, вторая входная матрица, имеет размерности (2,2). Если для параметра Output size вы выбираете Full, блок использует следующие уравнения, чтобы определить количество строк и столбцов выходной матрицы:

Получившаяся матрица

Если для параметра Output size вы выбираете Same as input port I1, вывод является центральной частью Cfull с теми же размерностями как вход в порте I1, (4,3). Однако начиная с 4 3 матрица не может быть извлечена от точного центра Cfull, блок оставляет больше строк и столбцов на главной и левой стороне Cfull матрица и выходные параметры:

Если для параметра Output size вы выбираете Valid, блок использует следующие уравнения, чтобы определить количество строк и столбцов выходной матрицы:

В этом случае всегда возможно извлечь точный центр Cfull. Поэтому блок выходные параметры

Пример 2

В свертке значение выходного элемента вычисляется как взвешенная сумма соседних элементов.

Например, предположите, что первая входная матрица представляет изображение и задана как

I1 = [17  24   1   8  15
     23   5   7  14  16
      4   6  13  20  22
     10  12  19  21   3
     11  18  25   2   9]

Вторая входная матрица также представляет изображение и задана как

I2 = [8   1   6
     3   5   7
     4   9   2]

Следующие данные показывают, как вычислить (1,1) выходной элемент (основанная на нуле индексация) использующий эти шаги:

  1. Вращайте вторую входную матрицу, I2, 180 градусов о его центральном элементе.

  2. Двигайте центральный элемент I2 так, чтобы это нашлось сверху (0,0) элемент I1.

  3. Умножьте каждый элемент вращаемой матрицы I2 элементом I1 внизу.

  4. Суммируйте отдельные продукты от шага 3.

Следовательно (1,1) выходной элемент 02+09+04+07+175+243+06+231+58=220.

Вычисление (1,1) Вывод свертки

Нормированной сверткой (1,1) выходной элемент является 220/sqrt(sum(dot(I1p,I1p))*sum(dot(I2,I2))) = 0.3459, где I1p = [0 0 0; 0 17 24; 0 23 5].

Параметры

Output size

Этот параметр управляет размером выходного скаляра, вектора или матрицы, произведенной в результате свертки между двумя входными параметрами. Если вы выбираете Full, вывод имеет размерности (Ma +Mb-1, Na +Nb-1). Если вы выбираете Same as input port I1, вывод имеет те же размерности как вход в порте I1. Если вы выбираете Valid, выводите, имеет размерности (Ma-Mb+1, Na-Nb+1).

Normalized output

Если вы устанавливаете этот флажок, вывод блока нормирован.

Rounding mode

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

Overflow mode

Выберите режим Overflow для операций фиксированной точки.

Product output

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

  • Когда вы выбираете Same as first input, эти характеристики совпадают с теми из первого входа к блоку.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробную длину продукта вывод в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в битах и наклоне продукта вывод. Смещение всех сигналов в программном обеспечении Computer Vision Toolbox™ 0.

Продукт Вывод наследовал свой знак согласно входным параметрам. Если или или оба входа I1 и I2 будут подписаны, продукт, то Вывод будет подписан. В противном случае продукт Вывод без знака. Следующая таблица показывает все случаи.

Знак входа I1Знак входа I2Знак продукта Вывод
без знакабез знакабез знака
без знакасо знакомсо знаком
со знакомбез знакасо знаком
со знакомсо знакомсо знаком

Accumulator

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

  • Когда вы выбираете Same as product output, эти характеристики совпадают с теми из продукта вывод.

  • Когда вы выбираете Same as first input, эти характеристики совпадают с теми из первого входа к блоку.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробную длину аккумулятора в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в битах и наклоне аккумулятора. Смещение всех сигналов в программном обеспечении Computer Vision Toolbox 0.

Output

Выберите, как задать размер слова и дробная продолжительность вывода блока:

  • Когда вы выбираете Same as first input, эти характеристики совпадают с теми из первого входа к блоку.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробная продолжительность вывода в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в битах и наклоне вывода. Смещение всех сигналов в программном обеспечении Computer Vision Toolbox 0.

Lock data type settings against change by the fixed-point tools

Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили типы данных, которые вы задаете на маске блока. Для получения дополнительной информации смотрите fxptdlg, страницу с описанием на Fixed-Point Tool в документации Simulink®.

Смотрите также

2D КИХ-фильтр

Программное обеспечение Computer Vision Toolbox

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Представлено до R2006a