Как я могу сделать функцию свертки с матрицами с двойным указателем в C? - PullRequest
0 голосов
/ 07 мая 2020

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

enter image description here

Моя функция должна быть подготовлена ​​для квадратных матриц от 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;
}

Любая помощь или совет очень признательны!

...