読者です 読者をやめる 読者になる 読者になる

cBlog

Tips for you.

【C言語】bmp入出力とグレースケール変換

画像処理

前回

やっと、自作入出力ライブラリできました。これで、bmpフォーマットのことは何も考えずに、自分で定義した構造体の上で画像処理できます。

今まで迷っていたことに、コメントする感じで答えていきます。

今日も社内ニート - できないことはやりたくない

あと、各ラインのピクセル数を4の倍数に切り上げるには、

(int)((n +3)/4)*4

とすればいいことを思いついた。

ピクセル数じゃないですね。byte数が4の倍数になれば十分です。



bmpをcsvにするー - できないことはやりたくない

(もしかしたら、biXPelsPerMeterとbiYPelsPerMeterはキープした方がいいのかな? 悩む)

生成した画像の解像度を知る術はないので、キープせずに常に0としました。



bmpを扱う件 in C - できないことはやりたくない

2色、16色のサポートやめよう(迫真)

やめました。
その上で、256色もグレースケールにしか使いません。R chに輝度値、つまりindexを保持することにしています。2値画像も、256色カラーパレットを使って、R chに1が入っていると出力時に255に変換することにしました。ええ、手抜きです。bmpフォーマット自体に興味はないので。


今まで作ったもの

  • bmpを読み込んで(画像データのみ)、ヘッダを付けたうえでそのまま出力
  • グレースケール変換

実装時に思ったことといえば、構造体にパディングが入るので、メンバごとに入出力しないといけないんだなと。
グレースケールの変換式は、
0.2989R + 0.5870G + 0.1140B


今後の実装

  • 2次元fft
  • カラーバー出力