Что происходит, когда изображение фильтруется с использованием фильтра, который удваивает интенсивность каждого значения пикселя и, возможно, вызывает переполнение? - PullRequest
0 голосов
/ 16 октября 2019

[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);
    }
}

Так я реализовал свой код. Я не знаю, как он справляется с переполнением, потому что это просто умножение.

...