Javascript 弗洛伊德·斯坦伯格:索引颜色?

Javascript 弗洛伊德·斯坦伯格:索引颜色?,javascript,Javascript,我正在努力研究如何将2色Floyd Steinberg algol转换成X色算法。(索引?) 我认为计算必须从这一行: var rc = (cc<127?0:255); 是这样吗?我是否需要以某种方式调整误差扩散 function floydSteinberg8(sb, w, h){ for(var i=0; i<h-1; i++) for(var j=0; j<w; j++){ var ci = i*w+j; var cc = sb[ci

我正在努力研究如何将2色Floyd Steinberg algol转换成X色算法。(索引?)

我认为计算必须从这一行:

var rc = (cc<127?0:255);
是这样吗?我是否需要以某种方式调整误差扩散

function floydSteinberg8(sb, w, h){
  for(var i=0; i<h-1; i++)
    for(var j=0; j<w; j++){
      var ci = i*w+j;
      var cc = sb[ci];
          var rc = (cc<127?0:255); // This one changed to 
          var rc = lockedGreyscale[cc];// this one
      var err = cc-rc;
      sb[ci] = rc;
      sb[ci+1] += (err*7)>>4;
      sb[ci+w-1] += (err*3)>>4;
      sb[ci+w] += (err*5)>>4;
      sb[ci+w+1] += (err*1)>>4;
    }
}
函数floydSteinberg8(sb,w,h){
对于(var i=0;i>4;
sb[ci+w]+=(err*5)>>4;
sb[ci+w+1]+=(err*1)>>4;
}
}
编辑: 我一直在调整我的代码-这个算法行吗? 我认为indexedGreyscale中像素亮度的权重可能被关闭了? 就是这样-只是亮度的LUT!? (程序需要按下播放按钮、抖动并关闭颜色)

function floydSteinberg8(sb, w, h){
  for(var i=0; i<h-1; i++)
    for(var j=0; j<w; j++){
      var ci = i*w+j;
      var cc = sb[ci];
          var rc = (cc<127?0:255); // This one changed to 
          var rc = lockedGreyscale[cc];// this one
      var err = cc-rc;
      sb[ci] = rc;
      sb[ci+1] += (err*7)>>4;
      sb[ci+w-1] += (err*3)>>4;
      sb[ci+w] += (err*5)>>4;
      sb[ci+w+1] += (err*1)>>4;
    }
}