二维信号的卷积原理请参考另外一篇文章:http://blog.youkuaiyun.com/carson2005/article/details/43702241
这里直接给出参考代码:
void Conv2(int** filter, int** arr, int** res, int filterW, int filterH, int arrW, int arrH)
{
int temp;
for (int i=0; i<filterH+arrH-1; i++)
{
for (int j=0; j<filterW+arrW-1; j++)
{
temp = 0;
for (int m=0; m<filterH; m++)
{
for (int n=0; n<filterW; n++)
{
if ((i-m)>=0 && (i-m)<arrH && (j-n)>=0 && (j-n)<arrW)
{
temp += filter[m][n]*arr[i-m][j-n];
}
}
}
res[i][j] = temp;
}
}
}
void Conv2Test()
{
int filterW = 3;
int filterH = 3;
int arrW = 5;
int arrH = 5;
int resW = filterW + arrW - 1;
int resH = filterH + arrH - 1;
int** pFilter = new int*[filterH];
for (int i=0; i<filterH; i++)
{
pFilter[i] = new int[filterW];
}
int** arr = new int*[arrH];
for (int i=0; i<arrH; i++)
{
arr[i] = new int[arrW];
}
i