这个3x3平均滤波器我做错了什么?

时间:2013-08-01 06:54:51

标签: java android arrays bitmap

我正在尝试在Android应用程序的彩色图像上实现均值过滤器。当我在所选图像上应用滤镜时。

原始图片:

enter image description here 过滤后的图像 enter image description here

1 个答案:

答案 0 :(得分:2)

在每个像素处,您从pixels[index]读取颜色值,但索引变量是已过滤数组的索引,而不是原始图像。您应该在索引x+filterX+width*(y+filterY)处读取像素数据,并注意图像的边缘。

更大的问题是红色,绿色和蓝色的总和永远不会重置为0,这意味着它们将继续累积像素值。这应该解释褪色。添加:

        sumR = 0;
        sumG = 0;
        sumB = 0;

        for (int i = 0; i < RArray.length; i++) {
            sumR += RArray[i];
            sumG += GArray[i];
            sumB += BArray[i];
        }