微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在下面的这段代码应该模糊一个二维浮点数组,给定内核大小“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 举报,一经查实,本站将立刻删除。