「OpenCV-Python Tutorials」についての訳に関連して、他の書籍と比較を行いました。
###OpenCV入門
OpenCV-PythonをWindowsにインストールする
OpenCVをwindowsで使えるようにする。
###OpenCVでのGUIの特色
画像操作を始めてみよう
画像を読み込むこと、表示すること、保存することを学びます。
動画操作を始めてみよう
動画の再生、カメラからの動画のキャプチャと動画としての保存を学びましょう。
OpenCVの描画関数
直線、矩形、楕円、円などをOpenCVを使って描画することを学びます。
マウスをペイントブラシとして使う
マウスを使って塗りつぶし
Trackbarをカラーパレットとして使う
パラメータを制御するためのtrackbarを作る
###コア操作
画像への基本操作
画素値を読み取り・編集、画像のROI(region of interest 関心領域)での操作、その他の基本操作を学びます。
「実践 機械学習システム」10章 コンピュータビジョン・パターン認識
mahotas を使った画像の読み込みが紹介されている。
ここでも読み込んだ後のデータ形式はnumpy.arrayになっている。
また関数名もimread()になっている。
[実行性能測定と改良手法]
(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値化画像に変換してみましょう。
mahotasにも大津の2値化が含まれています。他の2値化手法 Ridler-Calvard手法も実装されています。
画像の平滑化
画像をぼかしたり、あつらえたカーネルを用いた画像にフィルタすることを学びます。
画像ピラミッド
画像ピラミッドとそれを画像混合に使う方法を学びます。
####OpenCVでの輪郭処理
輪郭の特性
様々の輪郭の特性、堅実性、平均強度などを見つけることを学びましょう。
輪郭の凹状欠損(convexity defects)、点と輪郭の関係(pointPolygonTest)を見つけること、様々な形とマッチングさせることを学びましょう。
OpenCVでのヒストグラム
OpenCVにあるヒストグラムの全て。
####OpenCV OpenCVでのヒストグラム
Histograms - 1 : 見つけ、プロットし、解析しよう!!!
OpenCVでの画像変換
フーリエ変換、コサイン変換などOpenCVにある様々な画像変換に出会ってみましょう。
テンプレートマッチング
テンプレートマッチングを用いて画像中から物体を探してみましょう。
ハフ線変換
画像の中から線を検出してみましょう。
ハフ円変換
画像の中から円を検出してみましょう。
Watershed(分水嶺)アルゴリズムにもとづく画像の領域分割
Watershed(分水嶺)アルゴリズムで画像の領域分割をしてみましょう。
###特徴量検出と特徴量記述
Harrisコーナー検出
ええ、コーナーはよい特徴? でもどうやって見つけますか?
Shi-Tomasiコーナー検出器と画像内の強いコーナー(Good Features to Track)
Shi-Tomasiコーナー検出の詳細を見てみましょう。
Harrisコーナー検出器は、画像の縮尺が変わるときには、十分良いとは言い切れません。 Loweは、縮尺に影響しない特徴を見つけるブレークスルーとなる手法を開発しました。それはSIFT特徴量と呼ばれています。
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モジュールとともに混ぜ合わせてみましょう。
なめらかな画像と模様のある画像とを区別できるHaralick特徴量がmahotasに含まれています。
SURF特徴量もmahotasに含まれています。
###動画解析
平均値シフト(Meanshift)とCamshift追跡
私たちは既に、色に基づく追跡の例を見ました。それは単純なものです。ここでは、もっとよいアルゴリズムである平均値シフトとその改良版である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平均法を用いて一群のクラスターに分類することを学びます。そして、K平均法を用いて色の量子化をすることを学びます。
OpenCVでの手書き数字認識
($OPENCV_DIR)\sources\samples\python2\digits.py
SVMとKNearestによる結果を見ることができます。
###Computational Photography
ここでは、画像のノイズ除去などのComputational Photographyに関するOpenCVのさまざまな機能について学びます。
画像のノイズ除去
Non-local Meansノイズ除去と呼ばれる画像からノイズを除去する良好な手法を見ていただきます。
画像修復
たくさんの黒点とひっかきを生じた古い劣化した写真を持っていませんか?それを持ってきて、画像修復と呼ばれる方法でそれらを復元してみましょう。
###物体検出
Haar カスケード検出器を用いた顔検出
Haar カスケード検出器を用いた顔検出
###OpenCV-Python バインディング
ここで、OpenCV-Pythonバインディングがどのように作られているのかを学びます。
どのようにしてOpenCV-Pythonバインディングは動作しているのか?
OpenCV-Pythonバインディングがどのように作られているのか学びましょう。
追記:
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
が2017年05月 発行になっています。
「実践コンピュータビジョン」関連
「実践コンピュータビジョン」の全演習問題をやってみた