画像解析環境の比較

ImageJ、MetaMorph、MATLABなど画像解析が可能なプラットフォームは数多くあります。その中でOpenCVを使う利点は何でしょうか。画像解析を行うにあたり、私が重要だと考えているのは次の 1.解析実行速度 2.コーディングの簡単さとコードの読み易さ 3.環境の再現の簡単さ 4.拡張性の高さ という4点です。
これらの点について、ImageJ、MetaMorph、MATLAB、OpenCVの比較を行います。

1.解析実行速度

C++を用いたOpenCVプログラムは、普通ImageJやMetaMorph、MATLABのようなスクリプト言語で同じような処理を行うプログラムより圧倒的に高速です。高解像度の動画処理となるとC++言語のような高速な動作が必要になるため、OpenCVが非常に有利になります。また、C++をLinux上でコンパイル、実行するのであれば、インテルの高速なコンパイラが無料で使えます。

2.コーディングの簡単さとコードの読み易さ

コーディングの簡単さとコードの読み易さについては、私としては、どれもほとんど変わらないと考えています。むしろ重要なのが、これまでにどの言語のプログラミング経験があるかということで、C言語やC++言語の経験があれば、OpenCVの習得は速いでしょうし、Javaの経験があればImageJの習得は速いでしょう。MetaMorphやMATLABはそれぞれ独自の言語体系をもっていますが、ユーザーがわかりやすいように改善が続けられています。

3.環境の再現の簡単さ

自分がコードしたプログラムを他の人に渡したいときがあると思います。そのような場合、相手のコンピューターにすでにImegeJやMetaMorph、MATLABがインストールされていればこれら3つがOpenCVに比較してより簡単に環境を再現できると思います。ただし、フリーのImageJについては問題ありませんが、MetaMorphとMATLABはとても高価なソフトウェアです。その点でMetaMorphとMATLABはやることは簡単だとしても、コストの面で非常に不利です。
一方、OpenCVはオープンソースのライブラリです。環境構築に手間がかかることは否定できませんが、だれでも環境を自由に準備できます。

4.拡張性の高さ

前に作ったコード、あるいは、他の人が作ったコードを改良したいときに、拡張性の高さが重要になってきます。実は拡張性の高さというのはオープンソースであるか否かということに強く関係しています。というのも、オープンソースでなければ、機能の追加に制限を受ける可能性があるからです。また、機能を追加する上で、その言語のコミュニティの大きさも重要です。ImageJ、OpenCVは大きなコミュニティがありますが、有償ソフトウェアであるMetaMorphとMATLABはそれに比べて画像解析のコミュニティは小さいでしょう。また、得られたデータを同じ実行環境で続けて解析に使いたい場合には、その環境特有の言語を用いて自分でプログラミングをする必要があります。ゆえに、ここでも自分の経験のある言語を使うのが得策です。

まとめ

まとめると、プロプライエタリなMetaMorphとMATLABは初心者が取り掛かりやすいという入り口のハードルの低さはあるものの、オープンソースではないため、ImageJ、OpenCVほどのコミュニティが形成されていないこと、imageJとOpenCVを比較したときの差は、プログラミングのしやすさという点ではほぼ変わらないものの、環境構築の簡単さという点ではImageJが勝り、実行速度の点ではOpenCVが勝るということが押さえるべきポイントです。