Pynote

Python、機械学習、画像処理について

画像処理

OpenCV - アルファブレンドで画像を合成する方法

概要 OpenCV で2枚の画像をアルファブレンドして合成する方法を紹介する。 概要 アルファブレンドとは OpenCV を利用したアルファブレンド サンプルコード 矩形外をグレーアウトする。

OpenCV - 輪郭を近似する、面積を求める、Bounding Box を求める方法について

概要 FindContours() で抽出した輪郭に対して行う以下の処理を紹介する。 輪郭をより少ない点で構成される輪郭で近似する。 輪郭を囲む長方形を求める。 輪郭を囲む回転した長方形を求める。 輪郭の面積を求める。 概要 輪郭を抽出する。 輪郭を近似する。 …

OpenCV - 画像をリサイズする方法

概要 OpenCV で画像をリサイズする方法について紹介する。 概要 resize() 基本的な使い方 アスペクト比を固定して、幅が指定した値になるようリサイズする。 アスペクト比を固定して、高さが指定した値になるようリサイズする。 指定した大きさまたは倍率で…

OpenCV - findContours() による輪郭抽出

概要 2値画像から findContours() を使用して輪郭抽出を行う方法について紹介する。 概要 findContours() サンプルコード mode 引数 hierarchy の構造 cv2.RETR_EXTERNAL cv2.RETR_LIST cv2.RETR_CCOMP cv2.RETR_TREE method 引数 参考

OpenCV - Watershed アルゴリズムで物体の輪郭抽出を行う

概要 OpenCV の Watershed アルゴリズムで物体の輪郭抽出を行う方法について紹介する。 概要 試した環境 手順 画像を読み込む。 大津の手法で2値化する。 opening 処理でノイズを除去する。 そのまま輪郭抽出を行った場合 (失敗例) sure background を抽出す…

OpenCV - テンプレートマッチングの仕組み及び方法について

概要 テンプレートマッチングの仕組み及び方法について紹介する。 概要 テンプレートマッチングの仕組み OpenCV でテンプレートマッチングを行う方法 関数 コード テンプレートマッチング result の解釈 類似度が最も高い位置を描画がする。 類似度が高い位…

OpenCV - カメラキャリブレーションを行う方法

概要 OpenCV でカメラキャリブレーションを行う方法について紹介する。 概要 カメラキャリブレーション 手順 1. キャリブレーション器具を様々な距離、角度から撮影する。 キャリブレーション器具でマーカー検出を行う。 検出した画像座標上の点に対応する3…

OpenCV - inRange による範囲指定で2値化する方法について

概要 OpenCV の inRange による範囲指定で2値化する方法について紹介する。 概要 試した環境 inRange() 引数 返り値 サンプルコード グレースケール画像 RGB 画像 HSV 画像

Deep Learning - Keras 実装の YOLOv3 で画像、動画から物体検出を試してみた

概要 Keras 実装の YOLOv3 である keras-yolo3 で画像、動画から物体検出を試してみた。 概要 試した環境 手順 依存ライブラリを導入する。 コード及び重みファイルをダウンロードする。 画像から物体検出を行う場合 動画から物体検出する場合

OpenCV - 配列の絶対値、平方根、べき乗、指数関数、対数関数を計算する

概要 OpenCV で行列の絶対値、平方根、べき乗、指数関数、対数関数を計算する方法について紹介する。 C++ 及び Python の両方に対応。 Python では行列は numpy array として扱われるので、OpenCV の関数でなく、numpy の関数を使っても同じ処理が行える。 …

OpenCV - connectedComponents() で連結成分のラベリング

概要 OpenCV の connectedComponents() で連結成分のラベリング (connected component labeling)を行う方法について紹介する。 概要 連結成分のラベリング 引数 返り値 構造情報付きで連結成分のラベリング 引数 サンプルコード 2値画像を読み込む。 連結成…

OpenCV - distanceTransform() で距離変換を行う

概要 OpenCV の distanceTransform() で距離変換を行う方法について紹介する。 概要 画像における距離の定義 距離変換 引数 ラベルマップを生成する。 引数 サンプルコード 参考

OpenCV - 画像を切り抜く方法について

概要 OpenCV で画像の一部を切り抜き、新しい画像を作成する方法について紹介する。 概要 解説 サンプルコード Python グレースケール形式 RGB 形式 C++

OpenCV - 画像にアフィン変換を適用する方法について

概要 OpenCV で画像にアフィン変換を適用する関数 warpAffine() について解説する。 この関数を利用することで、画像を回転、拡大縮小できる。また、応用的な使い方として、ある画像を別の画像に貼り付けることもできる。 概要 画像を回転させる。 引数 返り…

OpenCV - 画像座標系における回転、拡大縮小について

概要 画像座標系における回転、拡大縮小について解説し、OpenCV で回転行列を作成する方法を紹介する。 作成した回転行列で画像を回転させるには、以下の記事を参照されたい。pynote.hatenablog.com 概要 画像座標系での回転行列、拡大縮小行列 回転行列を作…

OpenCV - エッジの検出、微分フィルタ

概要 エッジ検出の理論及び OpenCV のコードについて 概要 試した環境 エッジ検出とは 微分 水平方向の微分フィルタ 垂直方向の微分フィルタ Prewitt フィルタ Sobel フィルタ 参考

OpenCV - モルフォロジー演算について

概要 モルフォロジー演算は主に二値画像を対象としたいくつかの非線形な演算を指す。 二値画像からノイズを削除したり、輪郭を抽出するのに役立つ。 概要 試した環境 構成要素 例 構成要素の作成 画像の端のピクセル 収縮 膨張 高度なモルフォロジー変換 演…

OpenCV - 画像の統計量を計算する

概要 画像から最小値、最大値、平均値、中央値、最頻値、分散、標準偏差といった各種統計量を計算する。 概要 試した環境 統計量 最小値 関数 コード 最大値 平均値 関数 コード 中央値 最頻値 分散 関数 コード 参考

OpenCV - 画像のヒストグラムを表示する

概要 画像のヒストグラムとは、横軸に画素値、縦軸に各画素値の頻度をとったヒストグラムである。 概要 試した環境 コード グレースケール画像 RGB画像 参考

OpenCV - カメラモデル

概要 カメラキャリブレーションで出てくるカメラモデルについて紹介する。 概要 カメラモデル カメラの内部パラメータ 焦点距離 カメラ座標と画像座標 Skew カメラの外部パラメータ 射影変換

OpenCV - 大津の手法/判別分析法

概要 大津の手法 (Otsu method) は2値化を行う際の閾値を画像に応じて自動的に決めるアルゴリズムである。 2値化を輝度値のヒストグラムを2クラス分類する問題と考えて解くので、判別分析法とも呼ばれる。 概要 アルゴリズム クラス の平均と分散 クラス の…

OpenCV - 画像2値化の閾値の決め方

概要 画像の2値化処理では閾値の値によって、得られる結果が変わってくる。 画像の注目する物体が写っている領域とそれ以外の領域をうまくわける閾値を選ぶ必要がある。 概要 手動で確認しながら決める 画像の輝度値のヒストグラムから決める pタイル法 参考…