矩阵卷积运算的三种方式及C语言实现

卷积的三种模式:full,same,valid

这三种模式是对卷积核移动范围的不同限制

1、full mode

橙色部分为image(大小为N1*M1),蓝色部分为filter(大小为N2*M2),full模式下输出矩阵大小为(N1+N2-1)*(M1+M2-1)

即从filter右下角一个单元与image的第一个单元重叠开始计算,依次将filter的右下角单元与image的每一个单元重叠并计算。

2、same mode

将filter中心与image左上角单元重合,并依次与image的每个单元重合计算,最终输出结果为N1*M1

3、valid mode

filter在image内部进行卷积运算

C语言代码实现

#include

#define N1 3
#define M1 3
#define N2 3
#define M2 3

//x需要运算的矩阵
//y卷积核
//z(full模式的输出)
//z2(same模式的输出)
int x[N1][M1];//需要运算矩阵 
int y[N2][M2];//卷积核 
int z[N1+N2-1][M1+M2-1];//full模式下的输出 
int z2[N1][M1];//same模式下的输出

void conv2(int x[N1][M1],int y[N2][M2],int z[N1+N2-1][M1+M2-1],int z2[N1][M1])
{
    int i,j;
    int n,m;
    for(i=0; i=0&&(i-m)=0&&(j-n)

 

你可能感兴趣的:(图像处理,C/C++,图像处理,卷积运算,c语言,矩阵)