2階調化
Binarization
ランダムディザ法による変換式
if ( Lij > (0~255の乱数) ) | Lij’= 255(白) |
else | Lij’= 0(黒) |
単純2値化による変換式
if ( Lij > 127 ) | Lij’= 255(白) |
else | Lij’= 0(黒) |
ソースコード
window.addEventListener('load', function(){
const canvas=Array(3);
const context=Array(3);
for(let c=0;c < 3; c++){
canvas[c]=document.getElementById('canvas'+c.toString());
canvas[c].height = canvas[c].width*1.333;
context[c]= canvas[c].getContext('2d');
}
const image = new Image();
image.src = 'ip/original.jpg';
image.addEventListener("load", function(){
for(let c=0;c < 3; c++){
context[c].drawImage(image,0,0);
const x = context[c].getImageData(0,0,
canvas[c].width,canvas[c].height);
for (let i=0; i < x.data.length; i+=4) {
const gray=x.data[i]*0.299
+x.data[i+1]*0.587+x.data[i+2]*0.114;
if(c==0) x.data[i]=x.data[i+1]=x.data[i+2]=gray;
else if(c==1) x.data[i]=x.data[i+1]=x.data[i+2]
=gray>Math.random()*255?255:0;
else x.data[i]=x.data[i+1]=x.data[i+2]=gray>127?255:0;
}
context[c].putImageData(x,0,0);
}
});
});
This site is powered by