OpenCV-概要

OpenCVは、リアルタイムで開発できるクロスプラットフォームライブラリです。 computer vision applications。主に、顔検出やオブジェクト検出などの機能を含む、画像処理、ビデオキャプチャ、および分析に焦点を当てています。

「コンピュータビジョン」という用語を定義することから、この章を始めましょう。

コンピュータビジョン

コンピュータビジョンは、シーンに存在する構造のプロパティの観点から、2D画像から3Dシーンを再構築、中断、および理解する方法を説明する分野として定義できます。コンピュータソフトウェアとハ​​ードウェアを使用して、人間の視覚のモデリングと複製を扱います。

コンピュータビジョンは、次の分野と大幅に重複しています-

  • Image Processing −画像操作に焦点を当てています。

  • Pattern Recognition −パターンを分類するためのさまざまな手法について説明します。

  • Photogrammetry −画像から正確な測定値を取得することに関係しています。

コンピュータビジョン対画像処理

Image processing画像から画像への変換を扱います。画像処理の入力と出力は両方とも画像です。

Computer visionそれらの画像からの物理的オブジェクトの明示的で意味のある記述の構築です。コンピュータビジョンの出力は、3Dシーンの構造の説明または解釈です。

コンピュータビジョンの応用

ここでは、コンピュータビジョンが頻繁に使用されている主要なドメインのいくつかをリストアップしました。

ロボット工学アプリケーション

  • ローカリゼーション-ロボットの位置を自動的に決定

  • Navigation

  • 障害物の回避

  • 組立(ペグインホール、溶接、塗装)

  • 操作(例:PUMAロボットマニピュレーター)

  • ヒューマンロボットインタラクション(HRI)-人々と対話してサービスを提供するインテリジェントロボティクス

医学アプリケーション

  • 分類と検出(例:病変または細胞の分類と腫瘍の検出)
  • 2D / 3Dセグメンテーション
  • 3D人間の臓器の再構成(MRIまたは超音波)
  • 視覚誘導ロボット手術

産業オートメーションアプリケーション

  • 産業検査(欠陥検出)
  • Assembly
  • バーコードとパッケージラベルの読み取り
  • オブジェクトの並べ替え
  • 文書の理解(例:OCR)

セキュリティアプリケーション

  • バイオメトリクス(虹彩、指紋、顔認識)

  • 監視-特定の疑わしい活動または行動の検出

輸送アプリケーション

  • 自動運転車
  • 安全性、例えば、ドライバーの警戒監視

OpenCVライブラリの機能

OpenCVライブラリを使用すると、次のことができます。

  • 画像の読み取りと書き込み

  • ビデオをキャプチャして保存する

  • 画像の処理(フィルター、変換)

  • 機能検出を実行します

  • ビデオや画像で顔、目、車などの特定のオブジェクトを検出します。

  • ビデオを分析します。つまり、ビデオ内の動きを推定し、背景を差し引き、ビデオ内のオブジェクトを追跡します。

OpenCVはもともとC ++で開発されました。それに加えて、PythonとJavaのバインディングが提供されました。OpenCVは、Windows、Linux、OSx、FreeBSD、Net BSD、OpenBSDなどのさまざまなオペレーティングシステムで動作します。

このチュートリアルでは、Javaバインディングを使用した例を使用してOpenCVの概念について説明します。

OpenCVライブラリモジュール

以下は、OpenCVライブラリの主なライブラリモジュールです。

コア機能

このモジュールでは、OpenCVアプリケーションの構築に使用されるScalar、Point、Rangeなどの基本的なデータ構造について説明します。これらに加えて、多次元配列も含まれています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

Highgui

これは、シンプルなUI機能を備えた使いやすいインターフェースです。OpenCVのJavaライブラリでは、このモジュールの機能は2つの異なるパッケージに含まれています。org.opencv.imgcodecs そして org.opencv.videoio

OpenCVの簡単な歴史

OpenCVは当初、CPUを集中的に使用するアプリケーションにアドバイスを提供するIntelの研究イニシアチブでした。1999年に正式に発売されました。

  • 2006年、最初のメジャーバージョンであるOpenCV1.0がリリースされました。
  • 2009年10月、2番目のメジャーバージョンであるOpenCV2がリリースされました。
  • 2012年8月、OpenCVは非営利団体OpenCV.orgに買収されました。