目录
conv2函数是求二维卷积。
语法
C = conv2(A,B)
C = conv2(u,v,A)
二维卷积
对于离散的二维变量 A 和 B,以下方程定义 A 和 B 的卷积:
p 和 q 会遍历所有可得到 A(p,q) 和 B(j-p+1,k-q+1) 的合法下标的值。
说明
C = conv2(A,B) 返回矩阵 A 和 B 的二维卷积。
C = conv2(u,v,A) 首先求 A 的各列与向量 u 的卷积,然后求每行结果与向量 v 的卷积。
C = conv2(___,shape) 根据 shape 返回卷积的子区。例如,C = conv2(A,B,'same') 返回卷积中大小与 A 相同的中心部分。
示例
二维卷积
在图像处理等应用程序中,它可用于将卷积的输入直接与输出进行比较。conv2 函数允许您控制输出的大小。
创建一个 3×3 随机矩阵 A 和一个 4×4 随机矩阵 B。计算 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 求边运算利用二维卷积来检测图像的边和其他二维数据。
创建并绘制一个内部高度等于 1 的二维台座。
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))