Мне нужно сделать функцию свертки в C, и я потерялся. В основном мне нужно что-то вроде:

Моя функция должна быть подготовлена для квадратных матриц от 3x3 до даже 1000x1000. Вот что я пробовал:
int calcConv(int **matrix, int ** filter,int i, int j){
int calc=0;
for(int ii=i ; ii<i+3 ; ii++){ //Fixed posible Infinite Loop
for(int jj=j ; jj<j+3 ; jj++){
calc+= matrix[ii][jj] * filter[ii][jj];
}
}
return calc;
}
int ** convolucion(int **matrix, int **filter, int size){
int i,j;
int ** convMatrix = (int**)malloc( size * sizeof(int*));
for(i=0;i<size;i++){
convMatrix[i]= (int*)malloc( size * sizeof(int));
}
for(i=0;i<size;i++){
for(j=0;j<size;j++){
convMatrix[i][j]=matrix[i][j];
}
}
for(i=1;i<size-1;i++){
for(j=0;j<size-2;j++){
convMatrix[i][j+1]= calcConv(matriz,filter,i-1,j);
}
}
return convMatrix;
}
Любая помощь или совет очень признательны!