ImageJとOpenCVの比較

OpenCVとImageJ、どちらかが完全というわけではありません。適材適所に使い分けできるのがベストです。コラム「画像解析環境の比較 」ではオープンソースであるImageJとOpenCVが拡張性の面で優れていると書きました。では、実際の研究などではどちらを使うべきでしょうか。もちろん、どちらか一方のスキルのみが高いのであれば、慣れた方を使うのが良いとは思いますが、どちらも同じくらいに使えるのであれば、それぞれ得意、不得意があるので、より適した方を選ぶべきです。結論から言いますと、全自動の処理であればOpenCV、手動の処理がある程度求められるのであればImageJが適当です。

1.全自動の解析ならOpenCV

ImageJにもマクロやバッチ処理など自動処理を行うことができる機能がありますが、画像などから抽出したデータをさらに加工して、グラフに出力するなどの処理は、より拡張性の高いOpenCVを用いたプログラムのほうが簡単に書けます。また、C++を用いたOpenCVプログラムが高速であるのも全自動解析に適しています。特に高解像度の動画をImageJで解析するのには限界があります。

2.ImageJのGUIは逐次的な処理には便利

ImageJはマウスでの操作が主で、初心者にも直感的に使いやすいツールになっています。対して、OpenCVプログラムが不得意とするのが、手動の処理です。例えば、根の画像について言うと、根を手動でなぞって、その長さを表示するといったプログラムはImageJのグラフィカルユーザーインターフェース(GUI)の得意とするところです。OpenCVでもそのようなことはできますが、コードを余分に書かなければなりません。また、手動の作業が必要な場合には、手作業部分の時間がかかるため、プログラム自体の速度は問題になりにくく、ImageJの速度でも十分な場合が多いと思われます。

3.自分で使うのか、他人に使ってもらうのか

ImageJは、環境の構築が簡単であるため、書いたコードを他の人が使うのは比較的簡単です。対してOpenCVは環境構築に若干手間がかかるため、他の人にそのままコードを渡してもうまく使えるかというと難しいものがあります。ただし、これも人によるとは思いますが、カスタマイズ性はOpenCVの方が上だと思っており、ImageJではできず、OpenCVではできることがいくつもあります。ゆえに自分で使うのであればOpenCVのデメリットを上回るメリットがあると考えることもできます。