プログラミングと画像処理
プログラミング学習で、画像処理をテーマにすることも可能です。
プログラミングで画像処理に活用できるツールは多くが無料ですが、使いこなすことで十分に画像を扱えます。
今日は、プログラミング言語2つ、ライブラリやフレームワークを4つ紹介します。
- Processing
 - Halide
 - OpenCV
 - Pillow
 - Dlib
 - scikit-image
 
です。
プログラミング言語
画像処理向けのプログラミング言語があります。
- Processing
 - Halide
 
です。
Processing
Processingは、オープンソースのプログラミング言語です。電子アートやビジュアルデザインのための言語であり、かつ統合開発環境であるとされています。
Processingを使うことで、画像処理のみならず、
- 音声処理
 - ゲーム開発
 
などにも取り組むことができます。
公式サイトから、Processingで作成された多くのサンプルを確認することができます。
Processingは、Javaがベースの言語で、画像処理に適した機能を備えています。
比較的シンプルにプログラミングコードを記述できるため、取り組みやすい言語です。
公式ページに
があるので参考になります。
プログラミング学習用教材で広く知られているドットインストールにも
Processingのコースがあります(言語のバージョンが最新のものとは異なります)。
比較的取り組みやすいProcessingは、アート / デザイン系を始めとして画像処理に使われています。
Halide
Halideは、画像処理のために開発されたプログラミング言語です。
Halideには
- 画像処理をスムーズ行うために様々な工夫が施された言語
 - C++言語のライブラリとしても使用できる
 
といった特徴があります。
Halideは、画像処理のためのドメイン特化言語(Domain-Specific Language; DSL)です。DSLは、特定の処理を意識して設計された言語であり、主なものに
- データベース管理のためのSQL
 - Unixでのファイルやデータ操作に使用するShell script
 
などがあります。
Halideは、
- CPUやGPUなど様々なハードウェアに対応
 - 画像処理のための計算を効率的に行うことができる
 
などの点から、企業や大学など研究開発の領域で用いられているようです。
ライブラリやフレームワーク
画像処理に用いることができるライブラリやフレームワークもたくさんあります。
OpenCV
OpenCVは、インテルが公開したコンピュータビジョン用のライブラリです。
- C / C++
 - Java
 - Python
 - MATLAB
 
といったプログラミング言語で使用することができます。
OpenCVは、画像処理に用いることができるライブラリとして最も良く知られたものの一つです。
OpenCVには、
- 画像分割
 - フィルタリング
 - 色変換
 
などの画像処理の基本的な操作から、
- 物体検出
 - 機械学習
 
まで様々な機能があります。
チュートリアルにはドキュメントが豊富に用意されています。
Pillow
Pillowは、Pythonの画像処理用のライブラリです。
Pythonの画像処理用のライブラリとしてOpenCVと比較した場合、Pillowは、よりシンプルな機能が特徴です。
そのため、
- 画像サイズの変換
 - 明るさ補正
 - コントラスト調整
 - トリミング
 
などの基本的な画像処理の場合には、Pillowが選択肢になるかと思います。
チュートリアルも用意されています。
Dlib
Dlibは、C++やPythonで使用できるライブラリです。
Dlibは、
- 画像処理
 - 機械学習
 
などに広く使えるライブラリです。
画像処理の点からは、Dlibで、物体検出から顔認識まで幅広く扱うことができます。
C++で画像処理を試す際には、OpenCVと合わせて選択肢になるのではないでしょうか。
scikit-image
scikit-imageは、画像処理用のアルゴリズムを集めたPythonのライブラリです。
scikit-imageは、科学計算用のPythonライブラリとして広く知られているSciPyのプロジェクトが基になっているようです。
Pythonで機械学習に特化したライブラリとしては、scikit-learnがあります。
SciPyのエコシステムの、
- 画像処理の担当としてscikit-image
 - 機械学習の担当としてscikit-learn
 
というライブラリがある、とも捉えることができそうです。
公式サイトから、
- グレースケール化
 - フィルタリング
 
などの操作をサンプルから確認することができます。
プログラミング学習で画像処理を体験
画像処理というと、市販のソフトウェアを買って取り組む
というイメージが強いかもしれません。
今日紹介したように、無料で画像処理に取り組む方法はたくさんあります。
特にプログラミング学習という点から見ると、プログラミング言語やライブラリを活用するのは、画像の操作の過程でプログラミングを学ぶことができるので一石二鳥とも言えます。
- 学びたいプログラミング言語
 - 学びやすさ
 
などを踏まえ、プログラミング学習に画像処理を取り入れてみるのも良いかもしれません。
  
  
  
  

コメント