こんにちわ。質問させてください。
カラーの画像を白黒にする問題で
赤29.9%緑58.7%青11.4%の割合で平均化すればいいのらしいですが
自分がやっても一色になってしまいます。どうしたらいいのでしょうか?
ちなみに自分は
for(j=0;j<YSIZE;j++){
for(i=0;i<XSIZE;i++){
r2[j]=0.299*255;r1[j];
g2[j]=0.587*255;g1[j];
b2[j]=0.114*255;b1[j];
}
}
ってやりました。1が元の絵で2を白黒にしたいのです。
分かる方教えてください。
変更する部分は
for(j=0;j<YSIZE;j++){
for(i=0;i<XSIZE;i++){
r2[j]=r1[j];
g2[j]=g1[j];
b2[i][j]=b1[i][j];
}
}
だけでできるらしいです。よろしくお願いします。
画像処理について。
Re:画像処理について。
r2[j]=0.299[color=#ff0000>*[/color]r1[j]; g2[j]=0.587[color=#ff0000>*[/color]g1[j]; b2[j]=0.114[color=#ff0000>*[/color]b1[j];
じゃないんですか?
Re:画像処理について。
> r2[j]=0.299*255;r1[j];
> g2[j]=0.587*255;g1[j];
> b2[j]=0.114*255;b1[j];
これでは,
・r2[j]には0.299 * 255 = 76
・g2[j]には0.587 * 255 = 149
・b2[j]には0.114 * 255 = 29
が常に代入されます。
そもそも白黒画像ですから,r2[j] == g2[i][j] == b2[i][j]でないといけませんし。
白黒にするには,各成分をある割合で混ぜ合わせることによって行います。
つまり,
とそれぞれの割合で混ぜたものを使う必要があります。
> g2[j]=0.587*255;g1[j];
> b2[j]=0.114*255;b1[j];
これでは,
・r2[j]には0.299 * 255 = 76
・g2[j]には0.587 * 255 = 149
・b2[j]には0.114 * 255 = 29
が常に代入されます。
そもそも白黒画像ですから,r2[j] == g2[i][j] == b2[i][j]でないといけませんし。
白黒にするには,各成分をある割合で混ぜ合わせることによって行います。
つまり,
r2[i][j] = g2[i][j] = b2[i][j] = (299 * r1[i][j] + 587 * g1[i][j] + 114 * b1[i][j]) / 1000;
とそれぞれの割合で混ぜたものを使う必要があります。