この記事の内容はOpenCV-Python Tutorialsの部分訳にすぎません。
以下の鳥取大学内のサイトでは訳がそろっているので、そちらを参照することをお勧めいたします。
鳥取大学内のサイト OpenCV-Pythonチュートリアル
OpenCV3.1のOpenCV-Python Tutorials が
http://docs.opencv.org/3.1.0/d6/d00/tutorial_py_root.html#gsc.tab=0
で公開されています(2016.2.28に気づいた)。
注:上記のリンク先のページで、ドキュメントの対象のOpenCVのバージョンを変更すると、原文の最新のドキュメントを参照することができます。
そのため、以下の内容(OpenCV3.0のチュートリアルの訳出)は古くなっています。
実際のPythonバインディングとチュートリアルで紹介されているスクリプトとの対応が
OpenCV3.0時のチュートリアルより改善されています。
そのことに注意した上で、以下の文章をお読みください。
「OpenCV-Python Tutorials」についてもう少し訳してみました。
リンク先をたどった先のスクリプトの断片は以下のGithubにあるもののようです。
rajatsaxena/OpenCV
(https://github.com/rajatsaxena/OpenCV)
そこから、スクリプトとデータを見つけて動作させることができます。
OpenCV入門
OpenCV-PythonをWindowsにインストールする
OpenCVをwindowsで使えるようにする。
OpenCVでのGUIの特色
画像操作を始めてみよう
画像を読み込むこと、表示すること、保存することを学びます。
動画操作を始めてみよう
動画の再生、カメラからの動画のキャプチャと動画としての保存を学びましょう。
OpenCVの描画関数
直線、矩形、楕円、円などをOpenCVを使って描画することを学びます。
マウスをペイントブラシとして使う
マウスを使って塗りつぶし
Trackbarをカラーパレットとして使う
パラメータを制御するためのtrackbarを作る
コア操作
画素値を読み取り・編集、画像のROI(region of interest 関心領域)での操作、その他の基本操作を学びます。
[実行性能測定と改良手法]
(http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_optimization/py_optimization.html#optimization-techniques)
答を得ることは大切だ。しかし、最速に答を得ることはさらに大切だ。あなたのコードのスピードをチェックし、コードを最適化することなどを学びます。
OpenCVにある数学的手法
PCA(Principal components analysis 主成分分析)、SVD(singular value decomposition 特異値分解)などのOpenCVで提供されている数学的手法のいくつかを学びます。
OpenCVでの画像処理
色空間を変更する
異なる色空間で画像を変換する方法を学びましょう。そして動画で色つきの物体を追跡させてみましょう。
画像の幾何変換
回転、変形などのさまざまな幾何変換を施してみましょう。
画像の閾値処理
画像をグローバルしきい値、適応的閾値処理 、大津の2値化などで2値化画像に変換してみましょう。
画像の平滑化
画像をぼかしたり、あつらえたカーネルを用いた画像にフィルタすることを学びます。
収縮、膨張、Opening, Closingなどのモルフォロジー変換について学びます。
画像の勾配
画像勾配、エッジなどを見つけてみましょう。
画像ピラミッド
画像ピラミッドとそれを画像混合に使う方法を学びます。
OpenCVでの輪郭処理
OpenCVでの輪郭処理
様々な輪郭の特徴、面積、周囲長、外接矩形(包含矩形)などを見つけることについて学びましょう
輪郭の特性
様々の輪郭の特性、堅実性、平均強度などを見つけることを学びましょう。
輪郭の凹状欠損(convexity defects)、点と輪郭の関係(pointPolygonTest)を見つけること、様々な形とマッチングさせることを学びましょう。
OpenCVでのヒストグラム
OpenCV OpenCVでのヒストグラム
Histograms - 1 : 見つけ、プロットし、解析しよう!!!
よいコントラストの画像を得るためにヒストグラムを平坦化することを学びましょう。
2次元のヒストグラムを見つけ、プロットすることを学びましょう。
領域ごとに色づけされた物体にヒストグラム逆投影することを学びます。
OpenCVでの画像変換
フーリエ変換、コサイン変換などOpenCVにある様々な画像変換に出会ってみましょう。
テンプレートマッチング
テンプレートマッチングを用いて画像中から物体を探してみましょう。
ハフ線変換
画像の中から線を検出してみましょう。
ハフ円変換
画像の中から円を検出してみましょう。
Watershed(分水嶺)アルゴリズムにもとづく画像の領域分割
Watershed(分水嶺)アルゴリズムで画像の領域分割をしてみましょう。
特徴量検出と特徴量記述
その画像の主な特徴はなんだろうか? 見つけられたこれらの特徴はどのように役に立つのか?
Harrisコーナー検出
ええ、コーナーはよい特徴? でもどうやって見つけますか?
Shi-Tomasiコーナー検出器と画像内の強いコーナー(Good Features to Track)
Shi-Tomasiコーナー検出の詳細を見てみましょう。
SIFT(Scale-Invariant Feature Transform)特徴量への入門
Harrisコーナー検出器は、画像の縮尺が変わるときには、十分良いとは言い切れません。 Loweは、縮尺に影響しない特徴を見つけるブレークスルーとなる手法を開発しました。それはSIFT特徴量と呼ばれています。
SURF(Speeded-Up Robust Features)特徴量への入門
SIFT特徴量は確かにいい特徴です。しかし、十分速いとは言えません。そこでSURF特徴量と呼ばれる高速化版が作られました。
コーナー検出のためのFASTアルゴリズム
上に示した特徴検出器は全てよいものです。しかし、SLAM(訳注:Simultaneous Localization and Mapping、自己位置推定と環境地図作成を同時に行うこと)のようなリアルタイムの用途に使えるほど十分に速いとは言えません。そこでFASTアルゴリズムの登場です。これは本当に"FAST(速い)"です。
BRIEF特徴量(Binary Robust Independent Elementary Features)
SIFT特徴量は、128個の浮動小数点からなる特徴記述子を用いています。そのような特徴量を数千個あつかうことを考えてごらんなさい。そのときたくさんのメモリーとマッチングのためにたくさんの時間を使
います。特徴量を圧縮して速くすることもできますが、それでも、その特徴量をまず計算しなくてはなりません。そこで、BRIEFが登場で、少ないメモリーで、マッチングが速く、それていて高い認識率のバイナリ記述子を見つける近道を提供します。
ORB(Oriented FAST and Rotated BRIEF)特徴量
SIFT特徴量とSURF特徴量はとてもよく動くのだけれども、あなたの用途の中で使うには毎年数ドル払わなければならないとしたらどうしますか? それらは特許が成立しているのです。その問題を解決するには、OpenCVの開発者はSIFT特徴量とSURF特徴量への新しい"FREE"な代替品、ORBを思いつきました。
特徴量マッチング
特徴検出器と記述子についてたくさん理解しました。異なる記述子を対応付ける方法を学ぶときです。OpenCVはそのために2つの手法、Brute-Forceマッチング手法とFLANNに基づくマッチング手法です。
特徴量マッチングと物体を見つけるためのホモグラフィ
いま特徴量マッチングについて知っているので、複雑な画像中の物体を見つけるためにcalib3dモジュールとともに混ぜ合わせてみましょう。
動画解析
私たちは既に、色に基づく追跡の例を見ました。それは単純なものです。ここでは、もっとよいアルゴリズムである平均値シフトとその改良版であるCamShiftが対象をどう見つけ追跡するのか見てみましょう。
[オプティカルフロー]
(http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_video/py_lucas_kanade/py_lucas_kanade.html#lucas-kanade)
重要な概念、オプティカルフローについて学びましょう。それは動画に関連していて、たくさんの用途があります。
いくつかのアプリケーションでは、物体追跡のように前景を抜き出す必要があります。背景除去は、それらの場合に役立つよく知られた手法です。
カメラ校正と3次元再構成
カメラ校正
利用しているカメラがどれだけ良いものか試してみましょう。それで撮影した画像に歪みが見られるでしょうか?もしあれば、どう補正しましょうか?
姿勢推定
calibモジュールを用いてちょっとしたかっこいい3D効果を作るのに役立つ短いセッションです。
エピポーラ幾何
エピポーラ幾何とエピポーラ制約を理解しましょう。
ステレオ画像からの奥行き距離情報
2D画像群から奥行き情報を得ます。
機械学習
K-最近傍法
K最近傍法の使い方を学ぶとともに、K最近傍法を用いて手書きの数字認識について学びます。
サポート ベクター マシン(SVM)
SVMの考え方を理解します
データをK平均法を用いて一群のクラスターに分類することを学びます。そして、K平均法を用いて色の量子化をすることを学びます。
Computational Photography
ここでは、画像のノイズ除去などのComputational Photographyに関するOpenCVのさまざまな機能について学びます。
画像のノイズ除去
Non-local Meansノイズ除去と呼ばれる画像からノイズを除去する良好な手法を見ていただきます。
画像修復
たくさんの黒点とひっかきを生じた古い劣化した写真を持っていませんか?それを持ってきて、画像修復と呼ばれる方法でそれらを復元してみましょう。
物体検出
Haar カスケード検出器を用いた顔検出
Haar カスケード検出器を用いた顔検出
OpenCV-Python バインディング
ここで、OpenCV-Pythonバインディングがどのように作られているのかを学びます。
どのようにしてOpenCV-Pythonバインディングは動作しているのか?
OpenCV-Pythonバインディングがどのように作られているのか学びましょう。