Opencv-overview
OpenCV-概要
OpenCVはクロスプラットフォームライブラリであり、これを使用してリアルタイムの*コンピュータービジョンアプリケーション*を開発できます。 主に画像処理、ビデオキャプチャ、および顔検出やオブジェクト検出などの機能を含む分析に焦点を当てています。
「コンピュータービジョン」という用語を定義して、この章を始めましょう。
コンピュータビジョン
コンピュータービジョンは、2D画像から3Dシーンを再構築、中断、および理解する方法を、シーンに存在する構造の特性の観点から説明する分野として定義できます。 コンピューターソフトウェアとハードウェアを使用して、人間の視覚のモデリングと複製を扱います。
コンピュータビジョンは、次のフィールドと大幅に重複しています-
- 画像処理-画像操作に焦点を当てています。
- パターン認識-パターンを分類するためのさまざまなテクニックを説明します。
- 写真測量-画像から正確な測定値を取得することに関係しています。
コンピュータビジョンと画像処理
- 画像処理*は、画像から画像への変換を処理します。 画像処理の入力と出力は両方とも画像です。
- コンピュータービジョン*は、画像から物理オブジェクトの明示的で意味のある記述を作成することです。 コンピュータービジョンの出力は、3Dシーンの構造の説明または解釈です。
コンピュータビジョンの応用
ここでは、Computer Visionが頻繁に使用される主要なドメインの一部をリストしました。
ロボットアプリケーション
- ローカリゼーション-ロボットの位置を自動的に決定する
- ナビゲーション
- 障害物回避
- 組み立て(ペグインホール、溶接、塗装)
- 操作(例: PUMAロボットマニピュレーター)
- ヒューマンロボットインタラクション(HRI)-人とやり取りし、サービスを提供するインテリジェントロボット工学
医学の応用
- 分類と検出(例: 病変または細胞の分類および腫瘍の検出)
- 2D/3Dセグメンテーション
- 3Dヒト臓器再建(MRIまたは超音波)
- 視覚誘導ロボット手術
産業オートメーションアプリケーション
- 産業検査(欠陥検出)
- アセンブリ
- バーコードおよびパッケージラベルの読み取り
- オブジェクトの並べ替え
- ドキュメントの理解(例: OCR)
セキュリティアプリケーション
- 生体認証(虹彩、指紋、顔認識)
- 監視-特定の不審な活動または行動の検出
輸送アプリケーション
- 自律走行車
- 安全性、例:ドライバーの警戒監視
OpenCVライブラリの機能
OpenCVライブラリを使用すると、次のことができます-
- 画像の読み書き
- ビデオをキャプチャして保存する
- 画像の処理(フィルター、変換)
- 特徴検出を実行する
- ビデオや画像から顔、目、車などの特定のオブジェクトを検出します。
- ビデオを分析します。つまり、ビデオの動きを推定し、背景を減算し、その中のオブジェクトを追跡します。
OpenCVはもともとC++で開発されました。 それに加えて、PythonおよびJavaバインディングが提供されました。 OpenCVは、Windows、Linux、OSx、FreeBSD、Net BSD、Open BSDなどのさまざまなオペレーティングシステムで実行されます。
このチュートリアルでは、Javaバインディングを使用した例でOpenCVの概念を説明します。
OpenCVライブラリモジュール
OpenCVライブラリの主要なライブラリモジュールは次のとおりです。
コア機能
このモジュールは、OpenCVアプリケーションの構築に使用されるスカラー、ポイント、範囲などの基本的なデータ構造をカバーしています。 これらに加えて、画像を保存するために使用される多次元配列 Mat も含まれます。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.core という名前のパッケージとして含まれています。
画像処理
このモジュールは、画像フィルタリング、幾何学的画像変換、色空間変換、ヒストグラムなどのさまざまな画像処理操作をカバーしています。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.imgproc という名前のパッケージとして含まれています。
ビデオ
このモジュールでは、モーション推定、バックグラウンド減算、オブジェクトトラッキングなどのビデオ分析の概念について説明します。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.video という名前のパッケージとして含まれています。
ビデオI/O
このモジュールでは、OpenCVライブラリを使用したビデオキャプチャとビデオコーデックについて説明します。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.videoio という名前のパッケージとして含まれています。
calib3d
このモジュールには、基本的なマルチビュージオメトリアルゴリズム、単一およびステレオカメラキャリブレーション、オブジェクトポーズ推定、ステレオ対応、3D再構成の要素に関するアルゴリズムが含まれています。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.calib3d という名前のパッケージとして含まれています。
features2d
このモジュールには、機能の検出と説明の概念が含まれています。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.features2d という名前のパッケージとして含まれています。
Objdetect
このモジュールには、オブジェクト、顔、目、マグカップ、人、車などの定義済みクラスのインスタンスの検出が含まれます。 OpenCVのJavaライブラリでは、このモジュールは org.opencv.objdetect という名前のパッケージとして含まれています。
ハイグイ
これは、シンプルなUI機能を備えた使いやすいインターフェイスです。 OpenCVのJavaライブラリでは、このモジュールの機能は、 org.opencv.imgcodecs と org.opencv.videoio の2つの異なるパッケージに含まれています。
OpenCVの簡単な歴史
OpenCVは当初、CPUを集中的に使用するアプリケーションに助言するためのIntelの研究イニシアチブでした。 1999年に正式に開始されました。
- 2006年には、その最初のメジャーバージョンであるOpenCV 1.0がリリースされました。
- 2009年10月、2番目のメジャーバージョンであるOpenCV 2がリリースされました。
- 2012年8月、OpenCVは非営利団体OpenCV.orgに採用されました。