とらりもんHOME  Index  Search  Changes  Login

画像解析入門

サイト移行中。元サイトはこちら

注: このサイトで学ぶには, C言語とUNIXの基礎知識が必要です。適宜, こちらこちらを参照してください。

目次

  1. 画像解析入門: はじめに ... 下を読んで下さい!
  2. 画像解析入門: 準備
  3. 画像解析入門: 画像データの基礎知識
  4. 画像解析入門: 画像のフォーマットに関する実習
  5. C言語による画像処理: 画像の切り出し
  6. C言語による画像処理: 画像の左右反転・上下反転
  7. C言語による画像処理: 画像の右90度回転
  8. C言語による画像処理: 色の抜き出し/入れ換え/反転
  9. C言語による画像処理: 明るさの調整・GIFアニメ
  10. C言語による画像処理: フォールスカラー合成
  11. GRASSによる画像解析
  12. 任意の角度の回転
  13. [[複数の画像の, 位置ズレ・角度ズレの補正とマッチング
  14. 便利なツール1: ImageMagick
  15. シェルスクリプトによる大量処理
  16. 便利なツール2: ImageJ
  17. JPEG画像の読み書き jpeg_test_io.c ... コメントの日本語はUTF8でエンコード

はじめに

 画像処理や画像解析は, 計算機の応用におけるひとつの花形です。計算機があれば, いろんな画像を, 自分の思うままに加工したり編集するだけでなく, 画像から様々な情報を定量的に抽出できます。

 世の中には, 画像処理のための専用ソフトウェアがたくさんあります。その代表として, プロプライエタリソフトではAdobe Photoshop, オープンソースソフトではGIMPImageMagickがあります。これらのソフトを使えば, もちろん, 様々な処理ができます。しかし, 画像処理の原理は, 実は多くの人が思うよりも単純であり, なおかつ奥が深いので, 独自のプログラミングで画像処理をやってみることはとても楽しく, また, 勉強になります。

 この技術は, 衛星リモートセンシングやGISでも有用です。最近は衛星データや地理情報を解析するための下記のようなパッケージソフトがいろいろ市販されていて, どれかひとつでも使いこなせば, 素人でも相当いろんなことをできるようになります。

  • 参考: 代表的な衛星画像処理ソフト(市販)
    • ENVI
    • ERDAS
    • Arc/View, Arc/GIS
    • ER-Mapper
    • IDRISI
    • TNT/MIPS, TNT/Lite

 しかしながら, 若い皆さんには, 上記のようなソフトを使わないでも, 自力で, あるていどの解析処理をこなせるようになってほしいのです。「自力で」というのはつまり, 必要なソフトを自分で作ったりどこかからダウンロードして改造したりしてなんとかする, ということです。

 その理由は以下の通りです:

上記のソフトはほとんどが高価である

なかには数100万円もするソフトもありますし, それらを維持するには年間数十万円のライセンス料を払う必要があります(IDRISIやArc/GISは大学が一括してライセンスを持っています)。業務でこれらのソフトを使うことによって, このような金額以上の利益を挙げられるのならもちろんOKなのですが。。。

 しかしながら, 何もがんばってそういうソフトを買わなくても,

実は自力でも結構いろんなことができる

のです。例えば, 以下のようなことは, ある程度の勉強をすれば, 自力でこなすことができます:

  • 画像の中から一部分を切り出すこと。
  • 画像を拡大・縮小すること。
  • 画像の色調や明るさを調整すること。
  • 画像を回転・反転すること。
  • 複数の画像を, ずらしながらぴったり重なる位置を見つけ出すこと。
  • 画像のデータを関数で変換したり植生指数などを計算すること。
  • 画像に写っているデータを分類すること。
  • 画像の投影法を変換すること。

 もちろん, 上記の商用ソフトはこれらの機能を, より使いやすい形で用意しています。しかし, とりあえず目の前の数枚の画像についてこの程度の処理をなんとかしたいというときに, 何百万円もするソフトを買うのはちょっと考えものです。あるいは逆に, 似たような画像が何百枚・何千枚もあって, それらすべてについてこのような処理をしたいような場合にも自力でやることが有効だったりします。なぜなら, 商用ソフトの多くはGUI(グラフィカル・ユーザーインターフェース)に依存しており, マウスでいちいち操作を指定しなければならず, 同じ処理を無数に繰り返すということが案外苦手です(そういうのに対応したソフトもありますが, そのやりかたを覚えるのもめんどくさいものです)。

 そして最も大切なことは,

自力でやってこそ解析の意味が理解できる

ということです。誰かが用意してくれた解析ツールを頭から信用して使っているばかりでは, その解析がどういう意味をもち, どういうことに有効なのかを理解できません。

 そして,

こういうことの勉強は若いときにしかできない

のです。若さとは, 時間がいっぱいあって, しかも頭が柔軟で吸収力が旺盛な, すばらしい時期です。若いときにこのような基礎的なスキルを得ることができれば, 一生の財産になります。商用ソフトの使い方をマスターするのにも若さは有効ですが, そのスキルは10年後・20年後のあなたを支えてくれるでしょうか?

 さて, そういうわけで画像処理を自力でやるための入門をはじめるのですが, この入門では以下のようなことを念頭に置いています:

  • 衛星画像のみならず, 研究目的でいろんな画像を扱うための基礎を養うことを目的とする。
  • 実行環境は, gccとX-Windowシステム, つまりLinuxやCygwinを想定し, Linuxを標準とする。
  • 読者はUNIXとC言語の基礎を知っているものとする。具体的には, ここここに書かれていること(シェル, 標準入出力, 関数, ポインタ, 変数型などUNIXの基礎知識と, for, while, ifなどC言語のコマンド)を知っているものとする。

画像解析入門に戻る!