2D Свертка
возвращает двумерную свертку матриц 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'
Часть свертки в виде одного из этих значений:
'full'
— Возвратите полную 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).
Указания и ограничения по применению:
Если shape
'full'
(значение по умолчанию), затем входные параметры A
и B
не должно быть пустым, и только один их может быть длинным массивом.
Если shape
'same'
или 'valid'
, затем B
не может быть длинный массив.
u
и v
не могут быть длинные массивы.
Для получения дополнительной информации см. Раздел "Высокие массивы".
backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
Указания и ограничения по применению:
Входные векторы u
и v
не должны быть распределенные массивы.
Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.