4段階量子化ではなく、単純に2値化してみた。

左:しきい値47、 右:しきい値16

二値化 threshold:47二値化 threshold:16

Source Code (Processing 0124 Beta) and Image File

今回はキーボードの aとs で閾値を操作できる。



プログラム自体は、前の量子化のしきい値を減らしただけだ。

PImageimg,img_result;

floatr_ratio=0.299;//RGB比合計して1

floatg_ratio=0.587;

floatb_ratio=0.114;

intthreshold=128;//2値化の閾値

voidsetup(){

img=loadImage(“pileus-s.jpg”);

size(img.width*2,img.height);

image(img,0,0);

binarize();

}

voiddraw(){



}

voidbinarize(){

img_result=newPImage(img.width,img.height);



//2値化

floatlevel;

for(inti=0;i colorpix=img.pixels[i];

floatmed=(int)(r_ratio*red(pix)+g_ratio*green(pix)+b_ratio*blue(pix));

//floatmed=(int)(red(pix)+green(pix)+blue(pix));//RGB比を考慮しない

if(med>threshold)level=256;//白

elselevel=0;//黒

img_result.pixels[i]=color(level);

}

image(img_result,img.width,0);//表示

}

voidkeyPressed(){

//2値化閾値の調整

if(‘A’<=key&&key<='z'){

switch(key){

case’a’:

if(threshold>0)threshold–;

break;

case’s’:

if(threshold<255)threshold++;

break;

}

}

println(“threshold:”+threshold);

binarize();

}