【问题标题】:What am I doing wrong with this 3x3 Mean filter? [closed]这个 3x3 均值过滤器我做错了什么? [关闭]
【发布时间】:2013-08-01 06:54:51
【问题描述】:

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

原图:

过滤后的图像

【问题讨论】:

标签: java android arrays bitmap


【解决方案1】:

您从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];
        }

【讨论】:

  • 你认为色彩空间有什么问题?
  • 我认为变色可能是由色彩空间问题引起的,但这可能是另一回事(不是将红色、绿色和蓝色的总和重置为零)
  • 当我更改像素[索引] 部分并重置 sumR/G/B 时,程序由于某种原因崩溃。
  • 如果程序崩溃它一定有一些错误。
  • 我很抱歉,但“由于某种原因崩溃”并不是真正足够的信息。在过滤器窗口包含图像外部像素的图像边缘处,您会做什么?如果你不处理这种情况,你会得到“数组索引越界”错误。
猜你喜欢
  • 2012-05-12
  • 2012-11-07
  • 2013-02-08
  • 2020-02-04
  • 2014-07-27
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
相关资源
最近更新 更多