OpenCVで動画をリアルタイムに変換してみる UnityでARKitなど画像から何かを認識していく便利な機能がどんどん増えているなか、いまさらOpenCVをやります。 過去にやったもののまとめ + αです。 (まだ、ソースがごちゃっとしてますが自分の備忘録として記載します) OpenCVについて 今更の今更ですが、OpenCVについて やっている人が … UpdateなどでHGMatへ画像の入力、 テンプレート; 形状マッチング; 文字認識; バーコード; 画像への描画. 曲線と形状; テキスト; 点集合と輪郭; カメラからの画像の取得 テンプレート; 形状マッチング; 文字認識; バーコード; 画像への描画. 文字検出(文字領域抽出)とは. https://www.youtube.com/watch?v=OUbUFn71S4s, ■ インストールと簡単な使い方はこちら ブログを報告する, https://www.assetstore.unity3d.com/jp/#!/content/21088, 【Unity】UnityEditor上でScriptのUpdate()などを動作させる. コード : 物には様々な特徴量があり、その特徴量で物の種類を特定できることがあります。 例えば、コーヒーであれば、酸味、苦味、煎り、コク、色、香りといった特徴量があり、その組み合わせで、コーヒーの種類(モカ、キリマンジャロ、マンデリン、etc.)を特定することができたりします。ただ、特徴量のほうも様々あり、種類を特定するにあたり、特徴として有効なものとあまり有効ではないものがでてきます。例えば、コーヒーの特徴量として重さや硬さなども考えれますが、こちらは種類を特定するため …  結果は、小さな穴を囲む輪郭3か所、外側の輪郭と内側の輪郭2か所について、主成分方向のベクトルを表示させることができました。. OpenCV自体は無料でDLできるのでガリガリ書けば最新技術がガリガリできるわけなんです。, 過去に使っていたOpenCVforUnity... OpenCVで特徴点を抽出する(AgastFeature, FAST, GFTT, MSER, AKAZE, BRISK, KAZE, ORB, SimpleBlob) また、Pythonというプログラム言語とOpenCVという画像認識ライブラリを用います。今回は以下のような環境を構築しました。 ・Mac mini (Late 2012) ・OS X El Capitan ver10.11.5 ・Python3.4.4 ・OpenCV3.1.0 環境構築の方法についてはこちらを参考に。 画像認識を行う 標識の認識手法には色情報や形状特徴を用いたものや機械学習によるものなど多数存在するが,安全運転支援システムではリアルタイムでの処理が求められる. (まだ、ソースがごちゃっとしてますが自分の備忘録として記載します). madgenius.hateblo.jp 赤 :指, ただ、上記は認識しやすい綺麗な手の画像で、下記のような画像だとまだ認識の精度が低いことがわかります。, OpenCVで手の識別してみたまとめ https://t.co/GwFjtr7NvU, nanokanatoさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog OpenCVを使ったロゴ認識. さを比較し、拡縮,           ”         ベクトルの向きを比較し、回転,           ”         x:yの比率を比較し、アスペクト比. Help us understand the problem. madgenius.hateblo.jp 継承クラスを用意してInspectorからTexture2Dが入力できるようにします。  例えば、コーヒーであれば、酸味、苦味、煎り、コク、色、香りといった特徴量があり、その組み合わせで、コーヒーの種類(モカ、キリマンジャロ、マンデリン、etc.)を特定することができたりします。ただ、特徴量のほうも様々あり、種類を特定するにあたり、特徴として有効なものとあまり有効ではないものがでてきます。例えば、コーヒーの特徴量として重さや硬さなども考えれますが、こちらは種類を特定するためにはあまり役立ちそうにもありません。価格は特徴量として少しは役立つかもしれません。, 主成分分析(PCA)とは、対象物を特定するにあたり、強く特徴を表している成分を、標準偏差、共分散行列、固有ベクトルなどを使って特定していく分析方法になります。また、関係の深い特徴量に注目することで、データの次元圧縮を行うことができ、計算量の削減、データ量/メモリ量の削減に効果を発揮します。, OpenCVも、主成分分析(PCA)をcoreモジュールでサポートしています。今回は、形状のある物体の方向をOpenCVの主成分分析(PCA)を取り扱うメソッドを使って計算し、輪郭と主成分の方向を矢印で表示すプログラムを作成してみます。最終的には、以下の図のようになります。, OpenCV(Open Source Computer Vision Library)はBSDライセンスの映像/画像処理ライブラリ集です。画像のフィルタ処理、テンプレートマッチング、物体認識、映像解析、機械学習などのアルゴリズムが多数用意されています。, ■ OpenCVを使った動体追跡の例 (OpenCV Google Summer of Code 2015) OpenCVの公式ドキュメントに各フラグがどのよな処理をするか記載されているので,確認してください. cv2.threshold は二つの出力を返します.一つ目の出力 retval については後述します.二つ目の出力がしきい値処理された後の 二値画像 になります.. 手の識別を行い、その位置に描画を行います。, 使用するときはこんな感じ OpenCVを使って画像認識を行う場合に、特定の条件をプログラムが判別できるようにまとめたものを「カスケード分類器」といいます。今回はこのカスケード分類器を自分で作成し、任意の条件に合う画像を抽出するまでの流れをご紹介します。 配列の中身がintのままPCACompute()メソッドを実行すると以下のエラーがでます。, 輪郭の座標を主成分分析に用いるため、中間点のデータも取得するように指示した(cv2.CHAIN_APPROX_NONE), 通常、主成分分析をする場合は、前処理としてデータの標準化をします。今回の画像処理は、2次元のx座標とy座標で、それぞれに対する重みづけに違いがないため、データ標準化の前処理を行っていません。, サンプル画像だけではなく、他の画像についても輪郭と方向を認識させてみましょう。 その名の通り、画像などに写った文字を検出する技術で、古くからたくさんの手法が提案されているようです。 似たようなものとして文字認識(OCR)という有名な技術があります。 水色:手の範囲 やっている人が多いので記事が多すぎて公式の方が埋もれ気味です... Wikiのコピペですが「画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ」だそうです。 OpenCVでWebカメラ/ビデオカメラの動画をリアルタイムに変換してみる OpenCVを使った顔認識(Haar-like特徴分類器) OpenCVで各種フィルター処理をする(グラディエント、ハイパス、ラプラシアン、ガウシアン) 今回は、OpenCVを使用させて頂いて、矩形の検出をしてみました。 OpenCVの画像処理では、直線の検出なども可能なので、この他にも色々なものを検出して面白いものが作れそうです。 6 参考リンク. UnityではTextureなど別の形式なのでその辺を補ってくれる部分をHGMatとしてまとめました。, TextureImageにInspectorからUI.Imageをセットすることで加工後のMatを描画できます。 黄 :掌の範囲 今回は、OpenCVを使用させて頂いて、矩形の検出をしてみました。 OpenCVの画像処理では、直線の検出なども可能なので、この他にも色々なものを検出して面白いものが作れそうです。 6 参考リンク. 5 最後に. を行います。, Webカメラもかなり使う機能なのでまとめました。 OpenCVを使った物体追跡(マウスで指定した特徴点をLucas-Kanade法で追跡する こんにちは。エンベデッドソリューション事業部の瀧澤と申します。 ”文書などに添付されているロゴ画像が適切なフォーマット(サイズ、余白 etc Why not register and get more from Qiita? By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. madgenius.hateblo.jp, iOS11で久々にビルドすると通らない...AssetStoreの更新分があったので更新しましょう...。, OpenCVではcv::matという形式を使って画像を加工したりします。 | 形状特徴検出; マッチング. Disposeで解放           出典:Wikipedia - 主成分分析, 図形の主成分分析も、この応用で行うことができます。 madgenius.hateblo.jp webCamTexture, texture2DのどちらかにUnityで取得した画像を入れることでcv::mat形式に変換されます。 使うメソッドはMatRetouchだけなので今後ここのみ記載します。, HGColorSpuiter.csはタップした位置からColorを取得したり、ColorとScalarの変換を行うクラスです。 5 最後に. OpenCV 3(core + contrib)をPython 3の環境にインストール&OpenCV 2とOpenCV 3の違い&簡単な動作チェック, ■ 静止画像の処理についてはこちら  例えば、畳のようなパターン模様の上に穴が特徴的なハンガーを置いて分析してみます。 過去にやったもののまとめ + αです。 曲線と形状; テキスト; 点集合と輪郭; カメラからの画像の取得 とりあえずSquare OpenCV関係 MatRetouchでタップ位置の色を取得して手の位置に合わせて描画します。 ・PyCharm Community Edition 2018.3.1 x64 ・OpenCV 3.4.5.20.  手順としては以下のようになります。, ということで、OpenCVを使えばメソッドをいくつか呼び出すだけで、物体の輪郭と方向を認識することができてしまいます。, 分析系はfloatで処理する Startで初期化、 その後「MatRetouch(Mat _rgbaMat) 」が呼ばれてそこで編集したMatがUI.Imageに描画されます。, HGMatの使い方説明になります。 UnityでARKitなど画像から何かを認識していく便利な機能がどんどん増えているなか、いまさらOpenCVをやります。 OpenCVでエッジ検出してみる この時、入力する画像の設定がAdvanced > Read/Write Enabledがtrueになっていないとエラーがでます。, Start, Update, MatRetouch, Disposeをoverrideしており、 物には様々な特徴量があり、その特徴量で物の種類を特定できることがあります。 é›¢ã®è¨ˆç®—方法を学びます., 形状のマッチングについて学びます., Compare images of digits or letters using. madgenius.hateblo.jp OpenCVでオプティカルフローをリアルタイムに描画する(Shi-Tomasi法、Lucas-Kanade法) What is going on with this article? 形状特徴検出; マッチング. OpenCVを使って誰の顔なのかを推定する(Eigenface, Fisherface, LBPH), ■ 動画の処理についてはこちら 今更の今更ですが、OpenCVについて 今、主流になっている技術の詰め合わせという感じですね。 青 :肌色の範囲 緑 :肌色の輪郭の範囲 タップ位置の色はデフォルトが肌色、タップ後はタップした位置の色になります。, 最終的に上記の処理で手の画像から識別することが可能になりました。 とりあえずSquare OpenCV関係 MatRetouchでMat画像の加工、 OpenCVを使ったモーション テンプレート解析(リアルタイムに物体とその動く方向を認識する), 通常、主成分分析というと、下記のような散布図の点について分析を行うのをよく見かけるのではないでしょうか。プロットは、元々多次元だった特徴量を2次元に次元圧縮したものです。さらに矢印はプロットに対する第一主成分と第二主成分のベクトルを表しています。 https://www.assetstore.unity3d.com/jp/#!/content/21088www.assetstore.unity3d.com, こういう記事を書いてましたが... ScalarはOpenCVで色を表すクラスと思っています(), 最終版のHGOrigin.csクラスです。(クラス名は仮のまま...) # contours : [領域][Point No][0][x=0, y=1], https://www.youtube.com/watch?v=OUbUFn71S4s, OpenCV 3(core + contrib)をPython 3の環境にインストール&OpenCV 2とOpenCV 3の違い&簡単な動作チェック, OpenCVで各種フィルター処理をする(グラディエント、ハイパス、ラプラシアン、ガウシアン), OpenCVで特徴点を抽出する(AgastFeature, FAST, GFTT, MSER, AKAZE, BRISK, KAZE, ORB, SimpleBlob), OpenCVを使って誰の顔なのかを推定する(Eigenface, Fisherface, LBPH), OpenCVでオプティカルフローをリアルタイムに描画する(Shi-Tomasi法、Lucas-Kanade法), OpenCVを使った物体追跡(マウスで指定した特徴点をLucas-Kanade法で追跡する, OpenCVを使ったモーション テンプレート解析(リアルタイムに物体とその動く方向を認識する), コーヒーの例では、コクや苦味が特徴量でしたが、画像では、x座標、y座標が特徴量になります。, ステップ1では、RGBのカラー情報を白黒情報に変換しています。PCA分析ではありませんが、これも次元圧縮の一種です。, ステップ2がそれなりに大変そうですが、こちらに関しては、OpenCVのcv2.findContours()メソッドが、輪郭の座標を物体ごとに計算してくれます。, ステップ3に関しては、OpenCVのcv2.PCACompute()メソッドで平均値と固有ベクトル(主成分方向のベクトル)を求めることができます。, ステップ4に関しては、OpenCVのcv2.line()メソッドで固有ベクトル方向に線を描画します。, you can read useful information later efficiently. madgenius.hateblo.jp また、実装においてはOpenCVを使っていますが、画素へのアクセスや四角形の描画くらいでしか使っていませんので、その他のライブラリでも対応可能です。, ・PyCharm Community Edition 2018.3.1 x64・OpenCV 3.4.5.20, その名の通り、画像などに写った文字を検出する技術で、古くからたくさんの手法が提案されているようです。, 両者の違いとしては、OCRは画像に写っている文字がどんな文字かを”認識して”テキストデータ等で出力してくれるのに対して、文字検出は、文字らしい領域が画像中のどこにあるのかを計算しその位置を出力してくれる技術です。, ただ、今はディープラーニングがすごい勢いで進化しているので、文字検出も文字認識もいっぺんにやってしまうような流れになっていくのかもしれません。もしかしたら既にそういった技術があるのかもしれません。, 基本的なやり方として、垂直方向および水平方向に対して射影分布を算出し、分布の山となっている部分を文字らしきものが存在していると判断する手法です。, 下の図はアルファベット”Z”の射影分布を計測したものです。直感的にもわかりやすいですね。, まずは射影分布の確認をしてみます。水平方向の分布では文字列、垂直方向では各文字で山となることが確認出来ます。, 分布が山になっている部分だけに着目すれば文字が検出出来そうです。ということで、文字位置に赤い枠で囲ってみました。見事に文字だけの部分が検出出来ました。, 射影(投影)分布による文字検出をやってみました。正直な話、このくらい処理しやすい画像であれば、この手法を使わなくても、ラベリング処理でも上手くいきますね。, 射影分布と文字形状情報を組み合わせることで、文書の文字を検出することも出来そうです。時間あるときにまたチャレンジしてみたいと思います。今回はここまで。, ・制約充足に基づく文書画像からの文字領域抽出に関する研究 ・日本語文中の英文字の認識手法の開発 – 阿曽研究室, 大学(物理学専攻)卒業後、宇宙開発系企業で宇宙放射線測定器や人工衛星画像解析に約8年間従事。 現在はスタートアップ企業の研究開発部門にて統計・機械学習を使ってビジネス価値を生み出す為に日々努力しています。 私生活では、3歳の息子に振り回されていて、育児と仕事の両立を日々模索中。, 月間10,000回閲覧されているプログラミングやデータサイエンスに関するブログ更新情報を受け取りませんか?, scikit-learnのサンプルデータを使ってボストン市の住宅価格を予測してみました。今回は、住居の平均部屋数と住宅価格の関係を使った単回帰分析でどこまで精度が出せるか検証してみます。, こんちにわ!都内のスタートアップでデータ分析しているやじろべえです。最近は機械学習の解釈性がよく話題になっていますが、今回はこの機械学習の解釈性について一つのソリューションを与えてくれるSHAPについて試してみました(もうN番煎じなんだよって感じですが・・・)。, PyTorchを用いてニューラルネットワークによるワイン分類を行いました。また、層を深くしたとき(ディープラーニング)の精度向上検証も行いました。今回用いたデータセットはscikit-learnに含まれているデータセットを使用しています。, HSVとは、色を「色相(Hue)」,「彩度(Saturation)」,「明度(Value・Brightness)」の3要素で表現する方法です。RGBとの違いとして、RGBは原色の組み合わせで色を表現していますが、HSVは「鮮やかさ」や「明るさ」といった人間が直感的にわかりやすい方法で方法で表現されています。今回はPythonとOpenCVを使ってカラー画像から肌色領域を抽出する方法を実装しました。, 以前の記事では単回帰分析でボストンの住宅価格を予測しました。今回は重回帰分析で予測してみたいと思います。単回帰分析では説明変数が一つのみでしたが、重回帰分析では説明変数が複数扱うことができます。, 今回はDeep Learningの画像分類で代表的なモデルであるVGG16を実装して、花の種類を分類してみました。kerasには学習済みのVGG16モデルがすでに実装されているので、こちらを使うのが王道な気がしますが、ネットワーク構築のお勉強も兼ねて元論文などを参考に自前実装しました。, ただ、今はディープラーニングがすごい勢いで進化しているので、文字検出も文字認識もいっぺんにやってしまうような流れになっていくのかもしれません。, 正直な話、このくらい処理しやすい画像であれば、この手法を使わなくても、ラベリング処理でも上手くいきますね。, 射影分布と文字形状情報を組み合わせることで、文書の文字を検出することも出来そうです。.