画像認識を使った、波​形画像(.jpg,.​png)のピーク値出​力について

16 views (last 30 days)
Takayuki Hirokawa
Takayuki Hirokawa on 27 Nov 2020
Commented: takemoto on 9 Dec 2020
オシロスコープの波形画像を使って、電圧または電流のピーク値を出力させたいと考えております。
下記2つのツールのユーザーガイドを見ているのですが、何から取り掛かったいいのかわからないため困っております。
例題なども調べましたが、同じようなのもはありませんでした。
ご存じであれば、ご教授いただけないでしょうか。
■保有しているツール:Computer Vision Toolbox、Image Processing Toolbox
■学んだこと:画像処理入門(無料トレーニング)
■やってみたこと:GrabItを使った波形画像を数値化する方法はやりましたが、画像認識とは違っておりました。

Answers (1)

takemoto
takemoto on 30 Nov 2020
Edited: takemoto on 30 Nov 2020
オシロスコープの波形、ということなので、ピーク検出自体は画像処理ではなく、一次元の信号処理として扱う方が素直ではないでしょうか?おそらくオシロスコープなら、信号をデータファイルとして取得することもできそうですが、画像データしかない場合は、二値化等の画像処理後、以下の手順でピーク検出、という手法はいかがでしょうか?
なお、以下の、Signal Processing Toolbox から提供されるピーク検出機能は、上記関数よりも細やかな条件設定が可能なので、もし試せる環境であればおすすめします。
  3 Comments
Takayuki Hirokawa
Takayuki Hirokawa on 7 Dec 2020
ご回答ありがとうございます。
添付します画像データしかないため、
下記コードのようにグレースケールと2値化を行いました。
その後、islocalmaxをやろうとしたんですが、出力できなかったため、
波形のエッジを検出して、枠の値を読み取れないかとコードを記入しました。
(2枚目の画像が画像処理後です)
この後の処理なのですが、枠の値を定義しないといけないかなと思っておりまして、
何か似たような例題などがありましたらご紹介いただけないでしょうか?
検討している方向性が間違っておりましたらご指摘いただけますと幸いです。
また、”紙の”波形データに関する資料のご紹介ありがとうございます。
該当のページに書かれておりますコードを理解しようとしておりますが、
この場合、出力は平均値になるのでしょうか。(理解できておらず申し訳ございません)
% 波形を読み込む
I=imread("tek00000.bmp");
%グレースケール化
Ig=rgb2gray(I);
%2値化して波形を消す
b=imbinarize(Ig,0.2);
%エッジの検出を行う
BW = edge(b,"canny");
%2つの波形を示す
imshowpair(b,BW,"montage")
元ファイル
takemoto
takemoto on 9 Dec 2020
この例の「ピーク」とは、矩形パルスの立ち上がり後の平坦な部分のレベル、という意味でよいでしょうか?二値化後は、パルス波形の部分のみ0(もしくは1)、背景は1(もしくは0)になるかと思いますので、find関数を使うことで、波形部(もしくは背景部)のインデックス(このケースでは縦軸の座標)が得られます。その座標情報の平均値をとれば、波形のある部分のおおよそのレベル情報がとれるのではないかと思います。信号の線が太い場合、以下の様な関数で細線化を行うのもよいかもしれません。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!