LoginSignup
45
59

More than 3 years have passed since last update.

必見「OpenCV-Python Tutorials」2

Last updated at Posted at 2015-11-26

この記事の内容は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チュートリアル入門

Intro_1 OpenCV-Pythonを始めてみよう

OpenCV-PythonをWindowsにインストールする
Install_1 OpenCVをwindowsで使えるようにする。

OpenCV-PythonをFedoraにインストールする

Install_2 OpenCVをFedoraで使えるようにする。


OpenCVでのGUIの特色

画像操作を始めてみよう
gui_1画像を読み込むこと、表示すること、保存することを学びます。

動画操作を始めてみよう
gui_2 動画の再生、カメラからの動画のキャプチャと動画としての保存を学びましょう。

OpenCVの描画関数
gui_5 直線、矩形、楕円、円などをOpenCVを使って描画することを学びます。

マウスをペイントブラシとして使う
gui_3 マウスを使って塗りつぶし

Trackbarをカラーパレットとして使う
gui_4 パラメータを制御するためのtrackbarを作る


コア操作

画像への基本操作

core_1

画素値を読み取り・編集、画像のROI(region of interest 関心領域)での操作、その他の基本操作を学びます。

画像への算術演算

core_2
画像に算術演算を施します。

実行性能測定と改良手法

core_4 答を得ることは大切だ。しかし、最速に答を得ることはさらに大切だ。あなたのコードのスピードをチェックし、コードを最適化することなどを学びます。

OpenCVにある数学的手法
core_5 PCA(Principal components analysis 主成分分析)、SVD(singular value decomposition 特異値分解)などのOpenCVで提供されている数学的手法のいくつかを学びます。


OpenCVでの画像処理

色空間を変更する
imgproc_1 異なる色空間で画像を変換する方法を学びましょう。そして動画で色つきの物体を追跡させてみましょう。

画像の幾何変換
imgproc_gt 回転、変形などのさまざまな幾何変換を施してみましょう。

画像の閾値処理
imgproc_2 画像をグローバルしきい値、適応的閾値処理 、大津の2値化などで2値化画像に変換してみましょう。

画像の平滑化
imgproc_4
 画像をぼかしたり、あつらえたカーネルを用いた画像にフィルタすることを学びます。

モルフォロジー変換

imgproc_12 収縮、膨張、Opening, Closingなどのモルフォロジー変換について学びます。

画像の勾配
imgproc_5
 画像勾配、エッジなどを見つけてみましょう。

Cannyエッジ検出

imgproc_8 Cannyエッジ検出を使ってエッジを見つけてみましょう。

画像ピラミッド
imgproc_14 画像ピラミッドとそれを画像混合に使う方法を学びます。

OpenCVでの輪郭処理

imgproc_3 OpenCVにある輪郭処理の全て。

OpenCVでの輪郭処理

輪郭:さあ 始めよう

contour_1 輪郭を見つけ描こう

輪郭の特徴

contour_2 様々な輪郭の特徴、面積、周囲長、外接矩形(包含矩形)などを見つけることについて学びましょう

輪郭の特性
contour_3 様々の輪郭の特性、堅実性、平均強度などを見つけることを学びましょう。

輪郭:その他の関数

contour_4

輪郭の凹状欠損(convexity defects)、点と輪郭の関係(pointPolygonTest)を見つけること、様々な形とマッチングさせることを学びましょう。

輪郭の階層

contour_5
輪郭の階層について学びましょう。

OpenCVでのヒストグラム

imgproc_6
OpenCVにあるヒストグラムの全て。

OpenCV OpenCVでのヒストグラム

Histograms - 1 : 見つけ、プロットし、解析しよう!!!

hist_1 ヒストグラムを見つけ、描画しよう。

Histograms - 2: ヒストグラムの平坦化

hist_2 よいコントラストの画像を得るためにヒストグラムを平坦化することを学びましょう。

Histograms - 3 : 2次元のヒストグラム

hist_3 2次元のヒストグラムを見つけ、プロットすることを学びましょう。

Histogram - 4 : ヒストグラム逆投影

hist_4 領域ごとに色づけされた物体にヒストグラム逆投影することを学びます。

OpenCVでの画像変換
imgproc_7 フーリエ変換、コサイン変換などOpenCVにある様々な画像変換に出会ってみましょう。

テンプレートマッチング
imgproc_9 テンプレートマッチングを用いて画像中から物体を探してみましょう。

ハフ線変換
imgproc_10 画像の中から線を検出してみましょう。

ハフ円変換
imgproc_11 画像の中から円を検出してみましょう。

Watershed(分水嶺)アルゴリズムにもとづく画像の領域分割

imgproc_13 Watershed(分水嶺)アルゴリズムで画像の領域分割をしてみましょう。

GrabCutアルゴリズムを用いた対話的な前景抽出

imgproc_15 GrabCutアルゴリズムでの前景抽出をしてみましょう。


特徴量検出と特徴量記述

特徴量を理解する

f2d_1 その画像の主な特徴はなんだろうか? 見つけられたこれらの特徴はどのように役に立つのか?

Harrisコーナー検出
f2d_2 ええ、コーナーはよい特徴? でもどうやって見つけますか?

Shi-Tomasiコーナー検出器と画像内の強いコーナー(Good Features to Track)
f2d_3
Shi-Tomasiコーナー検出の詳細を見てみましょう。

SIFT(Scale-Invariant Feature Transform)特徴量への入門

f2d_4 Harrisコーナー検出器は、画像の縮尺が変わるときには、十分良いとは言い切れません。 Loweは、縮尺に影響しない特徴を見つけるブレークスルーとなる手法を開発しました。それはSIFT特徴量と呼ばれています。

SURF(Speeded-Up Robust Features)特徴量への入門

f2d_5  SIFT特徴量は確かにいい特徴です。しかし、十分速いとは言えません。そこでSURF特徴量と呼ばれる高速化版が作られました。

コーナー検出のためのFASTアルゴリズム
f2d_06 上に示した特徴検出器は全てよいものです。しかし、SLAM(訳注:Simultaneous Localization and Mapping、自己位置推定と環境地図作成を同時に行うこと)のようなリアルタイムの用途に使えるほど十分に速いとは言えません。そこでFASTアルゴリズムの登場です。これは本当に"FAST(速い)"です。

BRIEF特徴量(Binary Robust Independent Elementary Features)
f2d_07 SIFT特徴量は、128個の浮動小数点からなる特徴記述子を用いています。そのような特徴量を数千個あつかうことを考えてごらんなさい。そのときたくさんのメモリーとマッチングのためにたくさんの時間を使
います。特徴量を圧縮して速くすることもできますが、それでも、その特徴量をまず計算しなくてはなりません。そこで、BRIEFが登場で、少ないメモリーで、マッチングが速く、それていて高い認識率のバイナリ記述子を見つける近道を提供します。

ORB(Oriented FAST and Rotated BRIEF)特徴量
f2d_08 SIFT特徴量とSURF特徴量はとてもよく動くのだけれども、あなたの用途の中で使うには毎年数ドル払わなければならないとしたらどうしますか? それらは特許が成立しているのです。その問題を解決するには、OpenCVの開発者はSIFT特徴量とSURF特徴量への新しい"FREE"な代替品、ORBを思いつきました。

特徴量マッチング
f2d_09 特徴検出器と記述子についてたくさん理解しました。異なる記述子を対応付ける方法を学ぶときです。OpenCVはそのために2つの手法、Brute-Forceマッチング手法とFLANNに基づくマッチング手法です。

特徴量マッチングと物体を見つけるためのホモグラフィ
f2d_10 いま特徴量マッチングについて知っているので、複雑な画像中の物体を見つけるためにcalib3dモジュールとともに混ぜ合わせてみましょう。


動画解析

平均値シフト(Meanshift)とCamshift追跡

vdo_1 私たちは既に、色に基づく追跡の例を見ました。それは単純なものです。ここでは、もっとよいアルゴリズムである平均値シフトとその改良版であるCamShiftが対象をどう見つけ追跡するのか見てみましょう。

オプティカルフロー

vdo_2 重要な概念、オプティカルフローについて学びましょう。それは動画に関連していて、たくさんの用途があります。

背景除去

vdo_b いくつかのアプリケーションでは、物体追跡のように前景を抜き出す必要があります。背景除去は、それらの場合に役立つよく知られた手法です。


カメラ校正と3次元再構成

カメラ校正
calib_1 利用しているカメラがどれだけ良いものか試してみましょう。それで撮影した画像に歪みが見られるでしょうか?もしあれば、どう補正しましょうか?

姿勢推定
calib_2 calibモジュールを用いてちょっとしたかっこいい3D効果を作るのに役立つ短いセッションです。

エピポーラ幾何
calib_3 エピポーラ幾何とエピポーラ制約を理解しましょう。

ステレオ画像からの奥行き距離情報
calib_4 2D画像群から奥行き情報を得ます。


機械学習

K-最近傍法
ML_KNN K最近傍法の使い方を学ぶとともに、K最近傍法を用いて手書きの数字認識について学びます。

サポート ベクター マシン(SVM)
ML_SVM SVMの考え方を理解します

K平均法

ML_KM データをK平均法を用いて一群のクラスターに分類することを学びます。そして、K平均法を用いて色の量子化をすることを学びます。


Computational Photography

ここでは、画像のノイズ除去などのComputational Photographyに関するOpenCVのさまざまな機能について学びます。

画像のノイズ除去
photo_1 Non-local Meansノイズ除去と呼ばれる画像からノイズを除去する良好な手法を見ていただきます。

画像修復
photo_2 たくさんの黒点とひっかきを生じた古い劣化した写真を持っていませんか?それを持ってきて、画像修復と呼ばれる方法でそれらを復元してみましょう。


物体検出

Haar カスケード検出器を用いた顔検出
objdet_1 Haar カスケード検出器を用いた顔検出


OpenCV-Python バインディング

ここで、OpenCV-Pythonバインディングがどのように作られているのかを学びます。

どのようにしてOpenCV-Pythonバインディングは動作しているのか?
bind1 OpenCV-Pythonバインディングがどのように作られているのか学びましょう。

45
59
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
59