Java 这个3x3平均值过滤器有什么问题?

Java 这个3x3平均值过滤器有什么问题?,java,android,arrays,bitmap,Java,Android,Arrays,Bitmap,我正在尝试为Android应用程序在彩色图像上实现一个均值过滤器。当我在所选图像上应用过滤器时 原始图像: 过滤后的图像 在每个像素处,从像素[index]读取颜色值,但index变量是过滤数组的索引,而不是原始图像的索引。您应该在索引x+filterX+width*(y+filterY)处读取像素数据,并注意图像边缘 更大的问题是红色、绿色和蓝色的总和永远不会重置为0,这意味着它们将继续累积像素值。这应该可以解释变色的原因。加: sumR = 0; sumG

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

原始图像:

过滤后的图像

在每个像素处,从
像素[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];
        }
sumR=0;
sumG=0;
sumB=0;
for(int i=0;i
您认为颜色空间有什么问题?我认为变色可能是由颜色空间问题引起的,但这可能是另一回事(没有将红、绿、蓝的总和重置为零)。当我更改像素时,程序因某种原因崩溃[索引]部分和重置sumR/G/B。如果程序崩溃,它一定有一些错误。很抱歉,“由于某种原因崩溃”并不是足够的信息。当滤镜窗口包含图像外的像素时,在图像边缘做什么?如果不处理这种情况,将出现“数组索引超出范围”错误。可能重复的