我正在尝试在 Android 应用程序的彩色图像上实现均值过滤器。当我在所选图像上应用滤镜时。
原图:
过滤后的图像
在您从 读取颜色值的每个像素处pixels[index]
,但 index 变量是过滤后数组的索引,而不是原始图像。您应该在 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];
}