「OpenCV 2 プログラミングブック」レビュー

マイナビ様より「OpenCV 2 プログラミングブック」を献本頂きましたのでレビューを
簡単にまとめたいと思います.購入する際の参考にして頂ければと思います.

OpenCV 2 プログラミングブック OpenCV 2.2/2.3対応

著者/訳者:OpenCV 2 プログラミングブック制作チーム

出版社:マイナビ( 2011-12-27 )

定価:

単行本(ソフトカバー) ( 296 ページ )

ISBN-10 : 4839941262

ISBN-13 : 9784839941260




構成としては書籍ページの目次に沿って(本音ベースで)書いています.

▽Chapter.1 導入 編
OpenCVの歴史だけでなくてライセンス面の記載も
これまでの書籍に比べてしっかり書かれている印象です。

▽Chapter.2 スタートアップ 編
1 OpenCV 2.3簡単インストール(Windows編)
2 OpenCVをMacで利用する
3 Ubuntu 10.04 LTSでOpenCVを利用する

スクリーンショット付きで解説が丁寧なのと,Win,Mac,Linux一通り載っているのは○。
あと,Linuxでよくトラブルになりがちなカメラキャプチャについてもシステムの問題か
OpenCVの問題かを切り分けるための基本アプリ紹介は地味にうれしいかも。

4 C++インタフェース
従来の書籍ではあまり触れられていないC, C++ I/Fの違いやC,C++ I/Fの共存方法についての
記載はこれまでC I/Fで作った資産を再活用したい場合には嬉しいです。

5 Pythonインタフェース
スクリーンショット付きでわかりやすいのと結構嵌りがちなNumpyインストールも
きちんと書かれています。Mac,Linuxについては紙面の都合で省略?
 
6 GPUによる画像処理
GPU関連の記載はちょっと薄めな印象。
おそらく,執筆当時はあまりGPU機能が有効になる関数が多くなかったことや
最近のGPU実装更新のスピードが速いためだと思われます。ただ,基本的な使い方は
押さえてあるので導入についてはすんなり読めるはず。欲を言うなら,
GPU実装されている関数リスト等があると便利かも。

▽Chapter.3 リファレンス 編
1 cv::Matの基本処理
2 線形代数
3 画像処理
4 描画処理

C++ I/F最初の難関であるMatの使い方や基本的な画像処理の関数の使い方が
一通り網羅されています。サンプル付きなので非常にとっかかりやすいと思います。

5 入出力
6 その他の機能

画像の読み書きやカメラキャプチャ等よく使う機能は一通り網羅されているため,
サンプルを参考にすれば大抵のことはできると思います.
欲を言えばDirectShowを使ったキャプチャもVideoCaptureで使えることが
あまり知られていないようなのでその辺の記述もあるとなお良いかも。
あと,Qtを有効にした場合の基本的な使い方もあるとうれしかったです(結構便利なので)。

▽Chapter.4 ケーススタディ 編
1 画素値の直接操作

画素アクセス方法別の速度比較はパフォーマンス的に重要なトピックなので
初学者だけでなくとも読む価値があると思います。
 
2 カメラキャリブレーションとステレオ視による距離計測
基本的なキャリブレーションのやり方については記載されているので簡単に試せます。
欲を言えば2.3から導入されたCirclesGridを使ったキャリブレーションの
記事もあると嬉しかったかも。

3 画像のJPEG圧縮とPSNRの計算
これまでのOpenCV本ではあまり取り上げられていないと思われる画像指標PSNRについて
記載があるので,この辺りのデータを取る必要がある研究者向けとしては割とうれしいトピック。

4 簡単な笑顔度の算出
5 CAPTCHA画像の生成

比較的簡単なアルゴリズムの組み合わせによる笑顔度算出サンプルが紹介されている。
OpenCVの中身に慣れてきたら自身でアルゴリズム改善等をしてみて楽しめるトピック。

6 KinectとOpenCVの連携
Kinect連携はOpenCVを使ってやるサンプルはWeb上にそこまで多くない(Kinectを
他のSDK叩くサンプルが多い)のでサンプルとしてまとまっているのは重宝するかも。
 
7 ミニチュア風画像処理
8 SURF特徴を使ったイメージモザイキング
このあたりのトピックは最近のスマートフォン向け画像処理アプリでよく使われると思われるので
オリジナルの画像編集アプリ等を作りたい場合には参考になりそう。

9 機械学習と画像処理
クラスタリングの話がメイン。
この分野の需要はあると思われるのでもう少しボリュームがあると嬉しいかも。
(OpenCVの機械学習がアレなので意図的に削られた?)

10 顔の子供化
11 Photoshop向けプラグインの作成

OpenCVを使ったPhotoshop向けプラグイン作成の記事は
従来のOpenCV本には無いはずなので,自前で作ったアルゴリズムを俺々Photoshopプラグインを
作りたい場合には有用(おそらくWeb上にもあまり情報は無いはず)。

12 動画ファイルをカメラ入力のように扱う
研究の場合,動画ファイルを入力としてアルゴリズム実装することが多いので
開発効率という点でこのトピックは嬉しいと思います。よく動画読み込みで
コーデック関連のトラブルを耳にするのでその辺まで突っ込んだ記事があれば良かったかも。