2D Свертка
C = conv2(A,B)
C = conv2(u,v,A)
C = conv2(___,shape)
возвращает двумерную свертку матриц C
= conv2(A
,B
)A
и B
.
В приложениях, таких как обработка изображений, может быть полезно сравнить вход свертки непосредственно к выводу. Функция conv2
позволяет вам управлять размером вывода.
Создайте 3х3 случайный матричный A
и случайный матричный B
4 на 4. Вычислите полную свертку A
и B
, который является 6 6 матрица.
A = rand(3); B = rand(4); Cfull = conv2(A,B)
Cfull = 6×6
0.7861 1.2768 1.4581 1.0007 0.2876 0.0099
1.0024 1.8458 3.0844 2.5151 1.5196 0.2560
1.0561 1.9824 3.5790 3.9432 2.9708 0.7587
1.6790 2.0772 3.0052 3.7511 2.7593 1.5129
0.9902 1.1000 2.4492 1.6082 1.7976 1.2655
0.1215 0.1469 1.0409 0.5540 0.6941 0.6499
Вычислите центральную часть свертки Csame
, который является субматрицей Cfull
с тем же размером как A
. Csame
равен Cfull(3:5,3:5)
.
Csame = conv2(A,B,'same')
Csame = 3×3
3.5790 3.9432 2.9708
3.0052 3.7511 2.7593
2.4492 1.6082 1.7976
Находящая ребро операция Sobel использует 2D свертку, чтобы обнаружить ребра в изображениях и других 2D данных.
Создайте и постройте 2D опору с внутренней высотой, равной одной.
A = zeros(10); A(3:7,3:7) = ones(5); mesh(A)
Примените операцию свертки к строкам A
с векторным u
, и затем примените операцию свертки к строкам результата с векторным v
. Свертка извлекает горизонтальные ребра опоры.
u = [1 0 -1]'; v = [1 2 1]; Ch = conv2(u,v,A); mesh(Ch)
Чтобы извлечь вертикальные ребра опоры, инвертируйте порядок свертки с u
и v
.
Cv = conv2(v,u,A); mesh(Cv)
Вычислите и постройте объединенные ребра опоры.
figure mesh(sqrt(Ch.^2 + Cv.^2))
A
Входной массивВходной массив, заданный как вектор или матрица.
Типы данных: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Поддержка комплексного числа: Да
B
Второй входной массивВторой входной массив, заданный как вектор или матрица, чтобы применить операцию свертки с A
. Массив B
не должен быть одного размера как A
.
Типы данных: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Поддержка комплексного числа: Да
u
Входной векторВходной вектор, заданный как строка или вектор-столбец. u
применяет операцию свертки с каждым столбцом A
.
Типы данных: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Поддержка комплексного числа: Да
v
Второй входной векторВторой входной вектор, заданный как строка или вектор-столбец. v
применяет операцию свертки с каждой строкой свертки u
со столбцами A
.
Типы данных: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Поддержка комплексного числа: Да
shape
— Подраздел свертки'full'
(значение по умолчанию) | 'same'
| 'valid'
Часть свертки, заданная как одно из этих значений:
полный
Возвратите полную 2D свертку.
'same'
— Возвратите центральную часть свертки, которая одного размера как A
.
'valid'
— Возвратите только части свертки, которые вычисляются без дополненных нулем ребер.
C
2D Свертка2D свертка, возвращенная как вектор или матрица. Когда A
и B
являются матрицами, затем свертка, C = conv2(A,B)
имеет размер size(A)+size(B)-1
. Когда [m,n] = size(A)
, p = length(u)
и q = length(v)
, затем свертка C = conv2(u,v,A)
имеют строки m+p-1
и столбцы n+q-1
.
Когда один или несколько входных параметров к conv2
имеют тип single
, затем вывод имеет тип single
. В противном случае conv2
преобразовывает входные параметры, чтобы ввести double
и возвращается, вводят double
.
Типы данных: double | single
Для дискретных, двумерных переменных A и B следующее уравнение задает свертку A и B:
p и q работают на основе всех значений, которые приводят к легальным индексам A(p,q) и B(j-p+1,k-q+1).
Указания и ограничения по применению:
Аргумент A
не должен быть пустым, если аргументом shape
является 'full'
(значение по умолчанию).
Аргумент B
не может быть длинным массивом.
Для синтаксиса conv2(u,v,A)
только A
может быть длинным массивом.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).
Указания и ограничения по применению:
Входные векторы u
и v
не должны быть распределенными массивами.
Для получения дополнительной информации смотрите функции MATLAB Выполнения с Распределенными Массивами (Parallel Computing Toolbox).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.