libqie - 画像処理実験用の簡易ライブラリとか

2011/05/04

こっちにも一応アップしておこう。

ライブラリといっても大したもんじゃないので,MIT ライセンスで配布します。煮るなり焼くなりお好きにどうぞ。

libqie は画像処理の実験を行うのに最低限必要になるクラスを集めたライブラリです。今,画像処理周りの記事をまとめているんですけれど,説明するのに実際のソースがないと説得力がないので,共通で使える処理を簡易ライブラリにまとめました。呼べば結果がすぐ出るような便利な関数とかありません(プリミティブな関数から自分でそれらを実装/実験するのが目的だから)。パフォーマンスも普通(かそれ以下)です。今のところ,8 bit グレースケールのみを扱えます。

主要なクラスは下記の通り。

  • gray_image ... グレースケールの画像を管理するクラス

  • pgm_reader ... PGM ファイルから gray_image オブジェクトに読み込むクラス

  • pgm_writer ... gray_image オブジェクトの内容を PGM ファイルに書き出すクラス

PGM ファイルというのは……説明するまでもないですね。ご存知の方はご存知のはずです。プログラムから扱いやすいので,とりあえずこのフォーマットに対応しておきました。IrfanView や GIMP で作れます。

使い方はこんな感じ。入力画像を二値化する簡単なプログラムです。

#include <libqie.h>

int
main(int argc, char* argv[]) {
  qie::gray_image image;
  qie::pgm_reader reader;
  qie::pgm_writer writer;

  // 読み込む
  reader.read("sample.pgm", image);
  // 操作する
  static const unsigned char thresh = 0x80;
  for (int i = 0; i < image.height(); ++i) {
    for (int j = 0; j < image.width(); ++j) {
      if (image.get_pixel(j, i) < thresh) {
        image.set_pixel(j, i, 0x00);
      } else {
        image.set_pixel(j, i, 0xFF);
      }
    }
  }
  // 書き出す
  writer.write("result.pgm", image);

  return 0;
}

なんだか,こゆもんをアップしたところで,あまり意味がない気もしてたりする。OpenCV みたいなライブラリにある,できあいのお手軽関数でちょいちょいっとやるのが,イロイロ的には流行りみたいだし。ま,何かの取っ掛かりになるなら何よりです。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.