我正在尝试在Android应用程序的彩色图像上实现均值过滤器。当我在所选图像上应用滤镜时。
原始图片:
过滤后的图像
答案 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];
}