如何将黑色像素转换为白色,将白色转换为黑色以用于 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...