Pynote

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

画像処理

OpenCV - k 平均法 (k-means) を使い、画像の代表色を取得する方法

概要 OpenCV で k 平均法 (k-means) を使い、画像の代表色を取得する方法を紹介する。 以下の用途で利用できる。 画像で使われている主な色を取得する。 画像を見た目にあまり影響がないように減色する。(例: 1000色で表されている画像を8色で表現する。) 概…

Pillow (PIL) - 画像にフィルタを適用する方法

概要 Pillow (PIL) で画像にフィルタを適用する方法について紹介する。 概要 Image.filter ぼかす (ImageFilter.BLUR) 輪郭抽出 (ImageFilter.CONTOUR) エッジ強調 (ImageFilter.DETAIL) エッジ強調 (ImageFilter.EDGE_ENHANCE) エッジ強調 (ImageFilter.EDG…

Pillow (PIL) - アルファブレンディングを行う方法

概要 Pillow (PIL) でアルファブレンディングを行う方法について紹介する。 概要 アルファブレンディング マスクを使用した合成 2値画像のマスクで合成する。 グレースケール画像のマスクで合成する。

Pillow (PIL) - 画像を切り抜く方法

概要 Pillow (PIL) で画像を切り抜く方法について紹介する。 概要 Image.crop

Pillow (PIL) - 画像に図形を描画する関数 まとめ

概要 Pillow (PIL) で画像に図形を描画する関数を整理する。 概要 弧を描画する。 弦を描画する。 楕円を描画する。 直線を描画する。 内部を塗りつぶした弧を描画する。 点を描画する。 ポリゴンを描画する。 長方形を描画する。 テキストを描画する。 半透…

OpenCV - 関数として用意されているフィルタ処理の一覧

概要 OpenCV で専用の関数が用意されているフィルタ処理の一覧を紹介する。 概要 バイラテラルフィルタ ぼかし ボックスフィルタ メディアンフィルタ

Pillow (PIL) - ImageEnhance モジュールで画像の明るさ、コントラストなどを変更する方法

概要 Pillow (PIL) の ImageEnhance モジュールで画像の明るさ、コントラストなどを変更する方法を紹介する。 概要 カラーバランスを調整する。 コントラストを調整する。 明るさを調整する。 シャープネスを調整する。 減色する。

Pillow (PIL) - 画像を回転、反転させる方法について

概要 Pillow (PIL) で画像を回転、反転させる方法を整理する。 概要 任意の角度回転させる。 画像を 90°、180°、270° 回転させる 反時計回りに90° (時計回りに270°) 回転させる。 反時計回りに180° (時計回りに180°) 回転させる。 反時計回りに270° (時計回…

Pillow (PIL) - 画像をリサイズする方法について

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

Pillow (PIL) - 画像の情報を取得する方法

概要 Pillow (PIL) で画像の情報を取得する方法について紹介する。 概要 画像ファイルの情報 画像の大きさ 画像の形式 Exif 情報

Pillow (PIL) - 画像のヒストグラムを作成する方法

概要 Pillow (PIL) で画像のヒストグラムを作成する方法について紹介する。 概要 histogram サンプルコード

Pillow (PIL) - 画像のチャンネル、画素値を操作する方法

概要 Pillow (PIL) で画像のチャンネル及び画素値の情報の取得、分離、結合などの操作を行う方法について紹介する。 概要 チャンネル一覧を取得する。 各チャンネルごとの最小値、最大値を取得する。 画像で使用されている画素値の一覧を取得する。 特定のチ…

Pillow (PIL) - 16進カラーコードやカラーネームを RGB に変換する方法

概要 Pillow (PIL) で16進カラーコードやカラーネームを RGB に変換する方法について紹介する。 概要 16進カラーコードを RGB に変換する。 HTML カラー名を RGB に変換する。

TensorFlow / Keras - ImageDataGenerator を使った画像分類モデルの学習方法

概要 ImageDataGenerator を使用して画像分類の学習を行うチュートリアル。 関連記事 pynote.hatenablog.com pynote.hatenablog.com Jupyter Notebook 本記事のコード全体は以下。keras-image-data-generator-usage.ipynb 概要 関連記事 Jupyter Notebook fl…

Deep Learing - MS COCO データセットの概要

概要 MS COCO データセットの取得方法と MS COCO API の使い方について紹介する。 概要 MSCOCO データセット MS COCO データセットのダウンロード MSCOCO API をインストールする。 MSCOCO API の使い方 用語 COCO オブジェクトを作成する。 カテゴリ ID を…

OpenCV - ハフ変換 (Hough Transform) で円を検出する方法 (HoughCircles)

概要 OpenCV の関数 HoughCircles で画像から円を検出する方法について紹介する。 概要 関連記事 HoughCircles サンプルコード ipywidget

OpenCV - ハフ変換 (Hough Transform) で直線を検出する方法

概要 OpenCV でハフ変換 (Hough transform) で画像から直線を検出する方法について紹介する。 概要 HoughLines サンプルコード 2値化する。 ハフ変換で直線検出する。 描画する。 ipywidget HoughLinesP ipywidget ハフ変換の仕組み 任意の直線は、 で表せる…

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

概要 画像に適用するアフィン変換について整理する。 概要 関連記事 標準座標系と画像座標系 主な変換一覧 変換の例 拡大縮小 (scaling) 回転 (rotation) 平行移動 反転 せん断 (sheer) 画像にアフィン変換を適用する流れ

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

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

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

概要 FindContours() で抽出した輪郭に対して行う以下の処理を紹介する。 輪郭の抽出については下記の記事を参照されたい。pynote.hatenablog.com 輪郭の周囲の長さを計算する。[arcLength()] 輪郭の面積を計算する。[contourArea()] 輪郭を近似する。[appro…

OpenCV - 画像をリサイズする方法 (cv2.resize)

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

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

概要 2値画像から findContours() を使用して輪郭抽出を行う方法について紹介する。 輪郭を抽出したあとの処理については下記を参照されたい。pynote.hatenablog.com 概要 findContours サンプルコード 輪郭を抽出する。 輪郭を描画する。 mode 引数 hierarc…

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