CV & ML @Python

OpenCV

OpenCV(Open Source Computer Vision Library)は、コンピュータービジョンに関するオープンソースのライブラリである。C/C++で実装されているが、様々な言語でのバインディグも提供されている。本ページでは、Pythonバインディングされた関数をコールするサンプルスクリプトを掲載していく。

※本サンプルスクリプトの動作確認環境は、Python 2.7.6 + OpenCV 3.0.0である。なお、V 2.4.11でも動作確認したスクリプトはその旨を記載(V2 ⇒V3で、Pythonのインターフェイスが一部変更されている)。

参考サイト
http://docs.opencv.org/master/
http://docs.opencv.org/3.0-last-rst/index.html/
https://opencv-python-tutroals.readthedocs.org/

(参考)Python環境へのOpenCV設置方法    


1. 基本操作
 画像
画像読込/保存
画像情報の出力
画素へのアクセス
ROIの切り抜き/貼り付け
画像境界外への外挿付きコピー
チャンネル分割/合成(splitting/merging)
 動画
動画読込/表示
フレーム毎に処理(動画読込⇒キャニーエッジ⇒表示を例に)
 その他
Opencvのバージョン確認

2. 画素ごとの濃淡変換
 トーンカーブによる変換
ガンマ補正
 ヒスグラム
ヒストグラム作成/表示
ヒストグラム平坦化
カラーヒストグラム
2Dヒストグラム
CLAHE(Contrast Limited AHE) コントラスト制約の適応型ヒストグラム平坦化。
 画素値演算
加算、重み付き加算
減算
乗算
除算
 その他
色空間変換(HSV変換、変換フラグ一覧)

3. 領域に基づく濃淡変換(空間フィルタリング)
 平滑化(Smoothing)
平均化フィルタ:近傍領域の単純平均が応答値(線形フィルタ)。
ガウシアンフィルタ:正規分布での荷重平均が応答値(線形フィルタ)。
メディアンフィルタ:近傍領域の中央値が応答値。エッジ保存型。(非線形フィルタ)。
バイラテラルフィルタ:エッジ保存型(非線形フィルタ)。
 エッジ抽出(Edge Detection)
ソーベルフィルタ(sobel):一次微分フィルタ。
Scharrフィルタ:一次微分フィルタ。
ラプラシアンフィルタ(laplacian):二次微分フィルタ。
キャニーエッジ(canny edge)
 先鋭化
アンシャープマスク(unsharp mask)
 その他
任意の線形フィルタ:ユーザがカーネルを定義。
ピラミッド画像
積分画像

4. 周波数空間における処理
 フーリエ変換(Fourier Transformation)
1D FFT(numpy)
2D FFT(numpy)
2D FFT(opencv)
 周波数フィルタリング
ローパスフィルタ(周波数空間でマスク処理)
 その他
ハン窓 (hann window)

5. 画像の復元と生成
インペインティング(画像の自動修復)
 ノイズ除去(Denoise)
ノンローカルミーン(NL-mean)
PSNR(Peak Signal-to-Noise Ratio) ピーク信号対雑音比。

6. 幾何学的変換
 線形変換(Linear Transformation)
拡大/縮小
回転
アフィン変換(Affine Transformation)
ユークリッド変換(Euclidean Transformation)
相似変換(Similality Transformation)
 再標本化・補間(Resampling/Interpolation)
補間処理 Nearest-Neighbor, Biliner, Bicubic, Lanczos
 その他
Log-Polar変換

7. 2値画像処理
 2値化(Binarization)
単純な2値化
大津の2値化
適応的2値化
 モルフォロジカル変換(Morphological Transformation)
収縮(Erosion)
膨張(Dilation)
オープニング(Opening)
クロージング(Closing)
 ブロブ解析
ラべリング(labeling)
ラべリング(ブロブ情報付き)
 輪郭(Contour)
輪郭抽出
形状特徴 モーメント特徴、重心、面積、ペリメータ
形状特徴II アスペクト比、ソリディティ、等価直径など
外接矩形、外接円
 その他
距離画像(L1, L2)

8. 領域処理
 セグメンテーション(Segmentation)
Watershed法
GrabCut法

9. パターン・図形・特徴の検出とマッチング
 テンプレートマッチング(Template Matching)
相関法(ZNCC、SSDなど)
位相限定相関法(POC, Phase Only Correlation Method)
 特徴点抽出/記述/マッチング
SIFT(V2.4.11で実行確認。patentの都合、V3.0.0ではcontribに移行。)
SURF(V2.4.11で実行確認。patentの都合、V3.0.0ではcontribに移行。)
FAST
ORB
BRISK
KAZE(風)
AKAZE Accerated-KAZE
Brute-forceマッチング 総当たり(AKAZEを例に)。
ANN(近似最近傍探索) OpenCVはFLANNを利用。
 直線・円検出
ハフ変換(Hough Transform)
確率的ハフ変換(Probabilistic Hough Transform)
ハフ変換(円検出)
LSD(Line Segments Detector)

10. パターン認識
 機械学習(Machine Learning)
教師あり学習(Supervised Learning)
k最近傍法 (kNN, k-Nearest Neighbors)
ナイーブベイズ (Naive Bayse)
ロジスティック回帰 (Logistic Regression)
ランダムフォレスト (Random Forests)
サポートベクタマシン (SVM, Support Vector Machines) OpenCVはLIBSVMを利用。
教師なし学習(Unsupervised Learning)
k平均法 (k-means)
 その他
顔検出 (Haar Cascade Classfier)

11. 画像からの3次元復元
 その他
Depth Map(ステレオ視)

12. 図形描画
線分
矩形

文字

13. GUI
画像のポップアップ表示
トラックバー(カラーパレットの例)

14. その他
グラフィカルスクリプトの試行(RapidMiner)

 


inserted by FC2 system