如何将黑色像素转换为白色,将白色转换为黑色以用于 Sobel 过滤器 Javascript

问题描述

我正在研究 sobel 文件管理器。为此,我将以下代码作为参考。 Sobel Reference Code.

使用此代码,我得到白色的 sobel 边缘,它的范围和图像的其余部分为黑色。我试图获得黑色的 sobel 边缘,它的范围和图像的其余部分为白色。为此,我尝试更改以下循环,但没有成功。

  for (y = 0; y < height; y++) {
  for (x = 0; x < width; x++) {
    var pixelX = (
        (kernelX[0][0] * pixelAt(x - 1,y - 1)) +
        (kernelX[0][1] * pixelAt(x,y - 1)) +
        (kernelX[0][2] * pixelAt(x + 1,y - 1)) +
        (kernelX[1][0] * pixelAt(x - 1,y)) +
        (kernelX[1][1] * pixelAt(x,y)) +
        (kernelX[1][2] * pixelAt(x + 1,y)) +
        (kernelX[2][0] * pixelAt(x - 1,y + 1)) +
        (kernelX[2][1] * pixelAt(x,y + 1)) +
        (kernelX[2][2] * pixelAt(x + 1,y + 1))
    );

    var pixelY = (
      (kernelY[0][0] * pixelAt(x - 1,y - 1)) +
      (kernelY[0][1] * pixelAt(x,y - 1)) +
      (kernelY[0][2] * pixelAt(x + 1,y - 1)) +
      (kernelY[1][0] * pixelAt(x - 1,y)) +
      (kernelY[1][1] * pixelAt(x,y)) +
      (kernelY[1][2] * pixelAt(x + 1,y)) +
      (kernelY[2][0] * pixelAt(x - 1,y + 1)) +
      (kernelY[2][1] * pixelAt(x,y + 1)) +
      (kernelY[2][2] * pixelAt(x + 1,y + 1))
    );

    var magnitude = Math.sqrt((pixelX * pixelX) + (pixelY * pixelY))>>>0;
    sobelData.push(magnitude,magnitude,255);
  }
}

如何获得黑色边缘和白色像素的其余部分?

解决方法

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

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

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