ディザ法

ディザ法、二値化する課題で書きましたが・・・。
なんとも適当だな。
C言語なんてこのありざまだよ。

void improc(int *image, int width, int height){
//  ディザ行列を閾値にして二値化して値を設定する
//  行列の定義
int dither[2][2] = { { 51, 153}, { 204, 102} };
//  配列で処理
int i, j;
for( i = 0; i < width * height - 3; i+=2 ){
//  0/2/4,,,行目は行列の一行目で行う
if( ( i / width ) % 2 == 0 ){
//printf("A:%d %d\n", i, i+1);
image[i]   = image[i]   > dither[0][0] ? 255 : 0;
image[i+1] = image[i+1] > dither[0][1] ? 255 : 0;
//  1/3/5,,,行目は行列の二行目で行う
}else{
//printf("B:%d %d\n", i, i+1);
image[i]   = image[i]   > dither[1][0] ? 255 : 0;
image[i+1] = image[i+1] > dither[1][1] ? 255 : 0;
}
}
}
入力画像はこんなやつ。
rackey.jpg
犬。
出力するとこんなんなっちゃうよ。
kadai1.jpg

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です