詳解 OpenCV3の表紙

詳解 OpenCV3(ショウカイ オープンシーブイスリー)

コンピュータビジョンライブラリを使った画像処理・認識ー

プログラミング
著者:
Gary Bradski/Adrian Kaehler/松田 晃一/小沼 千絵/永田 雅人/花形 理(ゲェアリー ブラッドスキー/エイドリアン カーラー/マツダ コウイチ/オヌマ チエ/ナガタ マサヒト/ハナガタ オサム)
出版社:
オライリー・ジャパン
出版日:
2018年05月26日頃
ISBN:
9784873118376
在庫:
在庫あり
0
中級者向け
C++機械学習AR3DCG画像処理コンピュータビジョンオブジェクト検出特徴認識ステレオビジョン関数リファレンス

なぜ注目されているか

言及数
1215
総合1754 31 ランクダウン 1 件の言及

書籍紹介

OpenCV ライブラリ開発者によるベストセラー書の改訂版!
OpenCV の開発者によるベストセラー書の改訂版。最新の C++インタフェースに対応。 OpenCV は現在、ロボットの視覚システムだけでなくスマホやパソコンの顔認証、画像アプリやセキュリティ監視の人物検出、製造、医療、自動運転車、ゲームや AR アプリ、さらには機械学習に代表される人工知能の研究など、さまざまな分野で利用されています。本書では、カメラ入力やファイル出力といった簡単な使い方から、画像の変換やセグメンテーション、テンプレートマッチング、パターン認識、特徴量、物体や動きのトラッキング、ステレオビジョンからの 3D の再構成、機械学習まで、基礎から丁寧かつ詳細に解説します。関数のリファレンスとしても利用可能です。

技書の森解説

画像認識のライブラリを使うだけなら短いサンプルコードで足りますが、なぜその関数を選び、どのパラメータが結果を左右するのかを説明できるようになるには、画像処理の原理と実装の両側から学ぶ必要があります。『詳解 OpenCV 3 』 (Adrian Kaehler ・ Gary Bradski 著、松田晃一・小沼千絵・永田雅人・花形理 訳、オライリー・ジャパン、 2018 年 5 月刊) は、原書 Learning OpenCV 3 の日本語版で、版元が OpenCV の開発者による解説書の改訂版と位置づける一冊です。副題はコンピュータビジョンライブラリを使った画像処理・認識で、カメラ入力やファイル出力といった基本操作から、画像の変換とセグメンテーション、テンプレートマッチング、特徴量、トラッキング、ステレオビジョンからの 3 次元再構成、機械学習までを、 OpenCV 3 系の C++ インタフェースで基礎から詳細に解説します。発売はオーム社が担い、版元は関数のリファレンスとしても使えると案内しています。

全 23 章の構成、 OpenCV の基礎から 3 次元ビジョンと機械学習まで

構成は全 23 章に付録 3 本で、ほとんどの章の末尾に練習問題が置かれています。 1 章から 9 章は基礎編で、 OpenCV とは何か、コンピュータビジョンとは何かという概説と起源の解説、インストール、データ型、画像と大型配列型、配列の演算、描画とテキスト表示、ファンクタ、画像・動画・データファイルの入出力、クロスプラットフォームのネイティブウィンドウ表示までを扱います。 10 章から 15 章は画像処理編で、フィルタとコンボリューション、画像変換、画像解析、ヒストグラムとテンプレートマッチング、輪郭、背景除去と進みます。 16 章から 19 章は特徴と幾何の編で、キーポイントと記述子、トラッキング、カメラモデルとキャリブレーション、射影変換と 3 次元ビジョンを扱い、 20 章から 22 章は機械学習編として OpenCV による機械学習の基本、学習モデルの標準インタフェースである StatModel クラス、ブースティングやサポートベクタマシン、 Bag of Words を用いた物体検出をまとめます。 23 章は OpenCV の今後を語る章で、付録にはドロネー三角形分割とボロノイ分割による平面分割、 opencv_contrib モジュールの概説、キャリブレーションパターンが収められています。

OpenCV 3 系の C++ インタフェースと、開発者が書く解説の価値

OpenCV は Intel で始まったオープンソースのコンピュータビジョンライブラリで、画像を多次元配列として扱う基盤の上に、フィルタから幾何計算、学習アルゴリズムまでを載せた構成になっています。本書が対象とする 3 系は、画像を表す中心のデータ型を C++ の配列クラスに統一し、メモリ管理を手作業で行う旧来の C 言語インタフェースではなく参照カウントで自動的に解放される設計を基本とした上で、実験的な機能や特許に関わるアルゴリズムを opencv_contrib という別モジュール群へ分けた版です。本書が基礎編に 9 章を割いて配列型と演算、ファンクタを丁寧に扱うのは、この 3 系の設計を理解していないと以降の章のコードが読めないからで、付録で opencv_contrib を概説しているのも同じ理由です。コンピュータビジョンが難しいのは、画素の並びという低水準のデータから、輪郭や物体、カメラの位置といった意味を取り出すまでに、照明やノイズ、視点の変化に対して頑健な段階的処理を積み上げる必要がある点にあります。本書の章立てはまさにその積み上げの順序になっており、フィルタで前処理し、変換と解析で構造を取り出し、特徴点で対応づけ、カメラモデルで 3 次元へ戻し、最後に学習で分類するという流れを、ライブラリを設計した側の視点で一貫して追えます。個々の関数の説明だけでなく、その関数が処理の全体の中でどの段階を担うのかが見える点が、断片的なサンプルコードでは得られない本書の価値です。

C++ の読み書きを前提にした難易度と、深層学習を求める人には向かない点

本文のコードは C++ インタフェースで書かれているため、 C++ の基本文法とクラス、テンプレートを読める力が前提になります。 Python バインディングで OpenCV に触れてきた人は、関数名の対応は取りやすいものの、配列型やメモリの扱いの説明は C++ の文脈で読み替える必要があります。数学面では線形代数と確率の初歩があると、カメラモデルやキャリブレーション、機械学習の章が格段に読みやすくなります。注意したいのは、目次から確認できる機械学習の章が統計的学習モデルと、ブースティングや Latent SVM 、 Bag of Words といった古典的な物体検出手法を中心にしている点で、畳み込みニューラルネットワークによる 深層学習 を主軸に画像認識を学びたい人の期待には合いません。また本書は 2018 年時点の OpenCV 3 系を前提に書かれており、 API の細部はその後の版で変わり得ますが、画像処理とカメラ幾何の原理そのものは版に依存しないため、本書で学んだ理解はライブラリの版が進んでも土台として使えます。

関数リファレンスとしての使い方と、この大著で元が取れる人

版元が案内するとおり、本書は通読の教科書としてだけでなく、索引から関数や概念を引くリファレンスとしても機能します。深層学習系の入門書は多くありますが、その前段にある画像処理の原理、特徴点とマッチング、カメラのキャリブレーションと 3 次元復元を、実装と対にして体系的に扱った日本語の書籍は限られており、そこを埋めるのが本書の役割です。深層学習の学習経路を別に組みたい場合は 機械学習・ディープラーニング本の選び方 も参考になります。読み終える、あるいは必要な章を読み込むことで、 OpenCV の関数をなぜ選ぶのかを画像処理の原理から説明でき、ステレオカメラの校正や動く物体の追跡といった課題に対して、既存のサンプルの改変ではなく自分で処理の段階を設計できるようになります。組み込みやロボット、製造ラインの画像検査、 AR のように C++ で OpenCV を扱う開発者、研究で画像処理の基礎を固めたい学生、そして断片的なコードのコピーから卒業したいエンジニアにとって、机上に置いて長く引き続けることで元が取れる一冊です。

言及 Qiita 記事 (1 件)

この本に興味がある方におすすめ

この本に関連

関連記事

関連用語

共有:Xはてブ