为什么我的模糊函数会将值向下和向右移动?

问题描述

我在下面的这段代码应该模糊一个二维浮点数组,给定内核大小“blurRad”,但是在使用它时,值似乎向下和向右移动,有什么解释吗?

void blur() {
    blurw(blurh());
}

float[][] blurh() {
  float[][] t = new float[width][height];
  for (int i = 0; i < width; i++) {
    for (int j = 0; j < height; j++) {
      float total = 0;
      for (int k = -blurRad; k < blurRad; k++) {
        if (i+k > width || i+k < 0)
        continue;
        total += grid[i+k][j];
      }
      total -= grid[i][j];
      t[i][j] = total / (blurRad * 2 - 1);
    }
  }
  return t;
}

void blurw(float[][] t) {
  for (int i = 0; i < width; i++) {
    for (int j = 0; j < height; j++) {
      float total = 0;
      for (int k = -blurRad; k < blurRad; k++) {
        if(j+k > height || j + k < 0)
        continue;
        total += t[i][j+k];
      }
      total -= t[i][j];
      grid[i][j] = total / (blurRad * 2 - 1);
    }
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)