色付きのBMPファイルをグレースケールのBMPに変換しようとしています。入力bmpは24ビットで、出力で同じ24ビットbmpを生成していますが、今回はグレースケールのみです。
私が使用しているコードは
for(int x = 0; x < max; x++)
{
int lum;
lum = (r[x]*0.30) + (g[x]*0.59) + (b[x]*0.11);
r[x] = lum;
g[x] = lum;
b[x] = lum;
}
、、配列はRGBカラーコンポーネントであり、私はそれらをに持っていrます。gbchar *r,*g,*b
いくつかの理由で、きれいな出力が得られません。私はこの質問で得た出力を添付しています。そのパッチはパッチであり、ペースに白と黒の領域が含まれています。それで、私はここで何を間違っているのですか?
- lumの計算でデータが失われたためですか、それともintをcharとして格納する際に何か問題がありますか?
- グレースケールbmpを24ビットにすることはできませんか?または、変換後にrgb値を保存する方法に問題がありますか?
これに関するどんな助けも大いに適用されるでしょう。ありがとう。