アナログメーター 画像認識 opencv 15

0

What is going on with this article? src: 元画像 測定中の装置の様子をウェブカメラなどを使ってリモートで監視しているときに、せっかく監視してるんだからくディスプレイに表示されている数字くらい記録しておきたいと思うことがあります1。これを実現する最も簡単な方法は一定時間ごとの画像取得です。しかし、残された大量の画像から異常や特定期間の様子を探し出すのは少し骨が折れます。「うまいこと数字を抽出してログデータにできたらな…」と一度くらいは思ったことのある方が多いのではないでしょうか。固定視点の画像からたった10種 … 以下は試行錯誤の末、1枚目だけの調整ではうまくいかなかった点を全て調整した結果です。二回あったわずかな視点変化とちょっとしたミス5でデスクトップ全体が撮影されていた時間帯への対応が含まれています。, 3600枚の画像に対してこれを実行すると1分から数分程度かかりました6。pandasの高速化テクニックにはあまり精通していないので、この方法が最適である自信はありません。こういう時に適切な方法をご存知の方はコメントいただけるとありがたいです。, ファイル名に含まれる撮影日時の数字をdatetime形式にしてDataFrameに追加しています。今回は活用していませんが、試行錯誤の際は「何番目の画像」で指定するインデックス番号よりもdatetimeのほうが範囲を特定しやすいでしょう。期間の指定は通常のboolean indexingと同じようにできます。例えば8/10の深夜0時から1時の画像を取り出すなら以下で可能です。, こればかりは適当な数をサンプリングして確かめるしかないでしょう。今回のケースでは以下のように約3600枚から50枚おきに歪み補正結果を一覧表示しておかしい部分を特定することで、数ピクセル程度のズレが二回発生していることを発見しました。, 視点のわずかなズレを考慮して調整した結果がこちらです。このように並べると、数ピクセルというわずかな違いでも意外と「上の方の暗いピクセル部分の高さが少し違うかな…」などとわかりました。, また、操作ミスでデスクトップ画像を撮影していた時間帯は、以下のように全ピクセルの和(画像がどれだけ白いか)をプロットした時の異常値としてすぐに見つかりました。, また、このプロットから、照明が消えて数字のディスプレイ部分が滲んでいる時間帯、つまりグレイスケール画像にした時に白い部分が多い時間帯もよくわかります。, 実は単純に二値化と言っても、実際の画像を扱ってみると望ましい結果を得るにはいろいろと試行錯誤が必要なことがわかります。具体的には以下の三点の最適化です。, これらについて、対象とする画像の様子とやりたいタスクごとに自分で最適なレシピの組み合わせを見つける必要があるようです。私の場合は時間帯によって照明が消えているという画像処理においてやっかいな撮影条件があったので、それなりの試行錯誤が必要でした。最終的には以下のような組み合わせで満足できる結果が得られました。, cv2.erodeとcv2.dilateの作用例は公式チュートリアルがわかりやすいです。 python3.5,OpenCV3.3を使っているプログラミング初心者です。 いつもお世話になっております。 今回、画像から「赤色の物体」を検知し、検知した箇所のピクセルを取得するプログラムを作成しようと考えています。 現在、赤色検出のマスク画像を表示するところまではできています。 検知した EQzO�s:C�Y� �����B5&-�au�x���!n Q��p��j��t���[� # pandas: 0.23.1 %PDF-1.6 %���� uuid:0a11c832-4fe2-408b-8354-0fed3d2f5a1e アナログメータのディジタル画像を用いた自動読み取り手法 ''', # デスクトップ全体が撮影されていた場合への対応。「カメラ」ウィンドウのみ切り取り。, # 以前DataFrameを作っていればHDFファイルから読み込む。dfを作り直す際はdf.h5を削除。, # 局所的な強度の分布により閾値を決定するadaptiveなアルゴリズムを使った二値化, # top, center, bottomセグメントのy座標 22 0 obj <> endobj 47 0 obj <>stream 工場内に点在するアナログメータに専用カメラを設置、撮影画像をクラウドにアップロードします。アップロードされた画像をクラウドで読み取りデータ化し、指示値を識別・可視化するサービスです。 roi: タプル, (xmin, xmax, ymin, ymax) 左上原点でxは水平方向、yは垂直方向 - OpenCV: Image Thresholding 二値化について application/pdf アナログ出力できなければ、、、、、、、不可能です; しかし、電力の測定データやロギングデータと一緒に、アナログメーターもロギングする測定シーンは多くあります。 そこでWebカメラ機能を利用して、アナログメーターの画像を保存しましょう。 二値化の結果例をいくつか示します。ガウスぼかしによるノイズ除去の際に分散sigmaXを変えた時の変化です。, ご覧の通りほぼ同じに見えますが、後述する通り、数字の抽出結果を見ながら最終調整する際には差が出てきます。sigmaX=2にモルフォロジー変換を適用してみるとまた少し変わります。, 適用前のsigmaX=2のデータと注意して比べるとわかりますが、同じカーネルを使った侵食と膨張を適用すると実質的にはx,y両方向に1ピクセルずつずらした結果が得られます。あとは比較的目立つ変化としては2350番あたりで「7」の左下の余白にあるノイズが消えていることがわかります。最終調整の際にはこのような細かい変化による改善が明らかになりました。, 次はうまいこと作った二値化画像からセグメントのオン/オフを判定するために、七つのセグメントの位置を定義します。オン/オフはセグメント領域内の白ピクセル(上の画像では黄色ピクセル)の数の割合が基準値に達しているかどうかで判定します。今回の例におけるポイントは「セグメントの両端を判定対象から外し中央部分のみに注目する」という点でした。これは、実際にディスプレイ上のセグメントの領域を律儀に定義すると、滲んでる画像で誤判定が頻発したからです。位置の調整にはこれまでと同じようにサンプリングした画像一覧を使います。, 少し見にくいですが、赤い長方形で示されたセグメント領域が黄色い部分をだいたいカバーしていることがわかります。, あとは以下の関数を使って画像から抽出した数字をDataFrameに格納してプロットしたり抽出に失敗している数を確認しながら、これまでの手順で決めてきたあれこれをいじって満足できる結果の得られる組み合わせを見つけるだけです。, うまく抽出できているので、全ての画像に対して実行して、結果をDataFrameに格納します。, 妙に大きな値や失敗は数百個ありますが、温度変化が完璧に把握できるレベルには抽出できました。, ちなみに二値化に関するパラメータを変えた際の抽出失敗件数を比べて見るとこんな感じになります。実はモルフォロジー変換なしでもセグメントの場所を合わせればそこそこよい結果になっているのがわかります。, いろいろググって関連ページを探しましたが、これだけで十分でした。 roi: imshowがTrueのときは元画像のズームにつかう(xmin, xmax, ymin, ymax) # 7つのセグメントの左上座標, # top, top left, top right, center, bottom left, bottom right, bottom, Recognizing digits with OpenCV and Python - PyImageSearch, OpenCV: Geometric Transformations of Images, https://sites.google.com/view/kotarosaito/, 画角の中央から外れた時の発生する歪みを補正する(perspective transformation), you can read useful information later efficiently. input �3��s� 0�T �������u�u,�t�a��|E��]��ݵj endstream endobj 16 0 obj <> endobj 18 0 obj <> endobj 24 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/XObject<>>>/Rotate 0/Type/Page>> endobj 45 0 obj <>stream - Recognizing digits with OpenCV and Python - PyImageSearch 参考にした自動抽出コード 以下の機器の値や状態を認識します。 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. Acrobat Distiller 6.0 (Windows) dst: 切り出して歪み補正をした画像 pnts: 元画像の切り出し範囲 4点(x,y)のリストかタプル , (左上, 右上, 右下, 左下) アナログメータを撮影したディジタル画像から、メータ指示値を自動的に読み取る 手法を開発し、精度の評価とフィールド試験を行う。 主な成果 1.ディジタル画像によるアナログメータ自動読み取り手法とソフトウェアの開発 (財)電力中央研究所 2005-09-08T17:15:41+09:00 2012-04-12T16:04:01+09:00 output Help us understand the problem. decimalsub: タプル, 小数点を消すために暗いピクセルの値を代入する範囲を指定 (xmin, xmax, ymin, ymax) - OpenCV: Geometric Transformations of Images perspective transformation(透視変換)について ��Ӱc"J�7e=�K�7&��R'$. 対象機器. imshow: 結果を表示する際にはTrue 測定中の装置の様子をウェブカメラなどを使ってリモートで監視しているときに、せっかく監視してるんだからくディスプレイに表示されている数字くらい記録しておきたいと思うことがあります1。これを実現する最も簡単な方法は一定時間ごとの画像取得です。しかし、残された大量の画像から異常や特定期間の様子を探し出すのは少し骨が折れます。「うまいこと数字を抽出してログデータにできたらな…」と一度くらいは思ったことのある方が多いのではないでしょうか。固定視点の画像からたった10種類の数字を判別するだけです。数字の位置を定義して0-9までの雛形のどれに当てはまるか判定していけばできそうです。機械学習など必要ないでしょう。しかし、実際やるとなるといろいろと細かい点でつまずきそうで、なかなか手を出しにくいタスクではあります。この記事では、Pythonを使って非常に単純な仕組みで大量の固定視点画像から数字を抽出する方法を紹介します。画像から数字を抽出する方法を調べようとしてググると、でてくる情報のほとんどが紙などに印刷された数字を読み取るOCRや手書き文字の機械学習に関するものです。OCRは今回のようなにじみがあるような画像に弱そうですし2、機械学習は正直このタスクには高級すぎるでしょう。それらの隙間を埋めるような記事になると思います。画像切り出しや歪み補正、数字の位置の特定などはじめに手作業による調整は必要ですが、実装が複雑でうまくいかないとお手上げになりがちな完全自動抽出よりもコードが単純である分、個別事例への適用は容易なはずなので、うまいこと自分の事例に合わせて使ってみてください。, 説明するより下の画像を見た方が早いでしょう。 åˆçš„にサポート, 検討段階におけるご質問、資料請求もお気軽にお問い合わせください. 画像サイズは1200x700程度です。サイズ節約を優先してかなり小さいウィンドウにしましたが、これはやはり解析の難易度という点においては間違った選択でした。数字部分の解像度はもう少しあった方が判定しやすかったと思います。, デジタル数字の表示方法はいくつかありますが、今回は例からわかる通り7セグメントディスプレイと呼ばれるよく見るタイプです, Recognizing digits with OpenCV and Python - PyImageSearchで公開されているコードをベースにしています。オリジナルのコードは輪郭抽出と呼ばれる手法を使って一番面倒な数字部分の抽出を自動化しているため、数字がきれいに写っている画像を与えれば全自動で数字を認識してくれます3。しかし、私の例はあまりきれいな画像ではなかったのと固定視点なので自動化にこだわる必要もないだろうと判断して、数字部分の抽出を手動で行なっています。, 手動でのパラメータ調整が必要なのでいろいろと試した結果を残しやすいJupyter notebookで実行することを推奨します。必要なパッケージとバージョンは以下の通りです。Python 3.6を使っています。, OpenCVはcv2という名前でインポートしていますが、バージョンは3.3.1です。, 切り出し範囲と歪み補正の調整のために関数を作っておきます。ポイントは以下の通りです。, 上に示した例を見ると、四つのディプレイの上段と下段にそれぞれ数字が表示されています。ログを取りたいのは左の二つのディスプレイの上段の数字(ヒーター付近と試料付近の温度)です。今回は固定視点の画像なので、最初の一枚を使って調整すれば全ての画像に使えるはずです。また、この段階で二値化する際に厄介な小数点も削除しておきます。, 先ほど定義したCropTransformShowDigits関数を使ってroiでpntsを調整しながらいい感じになる数字を探します。以下はいい感じに調整した結果です。ちなみに、このあとの手順で二値化するので画像読み込みの時点でグレイスケールにしています4。, 左側には調整に便利なようにroiで指定されたディスプレイ部分を拡大して表示して、切り出しと歪み補正の対象部分は白い半透明な図形をかぶせてあります。右側が切り出しと歪み補正の結果です。今回のように複数個所の数字を読み込む場合は、なるべく結果の見た目が同じになるようにするのがポイントです。, 固定視点のはずですが、1枚目の画像から決めた範囲でうまいこと切り出せているか確認した方がいいでしょう。もし何らかの理由で少し視点がずれている時間帯があればそこだけ別途調整が必要です。また、このあとの二値化やセグメントのオン/オフまで進んでから微調整が必要になる可能性も高いので、試行錯誤しやすいDataFrameに補正結果を格納しておきます。

デロンギ マグニフィカs 説明書 4, 楽天銀行 アプリ 機種変更 6, 目玉焼き 作り方 油なし 6, 明治 クライス その後 32, 仁 レジェンド 違い 5, Iphone Mp3 ダウンロード 保存先 4, 革の反り を 直す 7, My Ebay Summary 4, ボーダーコリー ブリーダー 千葉 7, ダイソー 車 塗料 13, クライス 明治 メンバー 34, ピュア レーン 赤ちゃん 口 6, アウディ S1 ミニjcw 4, 犬 いわし 小骨 4, Youtube ライブ配信 予約 変更 8, 防災訓練 レポート 書き方 36, 産休 メール 業者 9, Get_posts カスタムフィールド ソート 9, ヒルナンデス 冷蔵庫 芸能人 3月16日 7, 中日ドラゴンズ ファーム 速報 11, プロスピ2019 スタープレイヤー オリジナル変化球 6, ベアミネラル フェイス クリーム 6, No Mybatis Mapper Was Found In 26, J ポップ 合唱 5, 夢占い 車 助手席 9, Kvk 洗面 水栓水漏れ 7, ゆず Hey和 Mp3 6, 失業 ローン 払えない 4, 自然遊び 保育 夏 15,

Leave a Reply

Your email address will not be published. Required fields are marked *


× seven = 28