画像解析入門

筑波大学農林工学系 西田顕郎

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

次 (準備)


目次

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

1. はじめに

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

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

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

参考: 代表的な衛星画像処理ソフト(市販)
 しかしながら、若い皆さんには、上記のようなソフトを使わないでも、自力で、あるていどの解析処理をこなせるようになってほしいのです。「自力で」というのはつまり、必要なソフトを自分で作ったりどこかからダウンロードして改造したりしてなんとかする、ということです。

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

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

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

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

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

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

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

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

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

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

 そして、

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

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

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