[0,0,0,0,2,0,0,0,0] - матрица фильтра.
Я уже реализовал код, но теоретически не понимаю, что происходит.
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
temp1=0;
temp2=0;
for(k=-M2;k<=M2;k++){
for(l=-M2;l<=M2;l++){
if(i+k<0||i+k>499||j+l<0||j+l>499){ /*handling the boundary problem by assuming values of pixels outside the image to be zero*/
temp1+=0;
temp2+=0;
}
else{
temp1+=in_buf[i+k][j+l]*mask1[k+M2][l+M2];
temp2+=in_buf[i+k][j+l]*mask2[k+M2][l+M2];
}
}
}
if(i==251 && j<150) out_buf1[i][j]=(unsigned char)((int)(temp1));
printf("%d\t%d\n",in_buf[i][j],out_buf1[i][j]);
out_buf2[i][j]=(unsigned char)((int)(temp2)/9);
}
}
Так я реализовал свой код. Я не знаю, как он справляется с переполнением, потому что это просто умножение.