誰もMatlabメソッドを提供していないようですので、私はImageMagickに基づいたメソッドを提供しています。これはほとんどのLinuxディストリビューションにインストールされており、macOSとWindowsでは無料で利用できます。
ターミナル(Windowsのコマンドプロンプト)で次のコマンドを実行すると、画像が表示され、透明度をオフにして、red
の10%以内にないすべてのピクセルを黒で塗りつぶします。
magick plot.png -alpha off -fuzz 10% -fill black +opaque red result.png
我々は再びそのまったく同じことを行うが、その後の画像はこのようにテキストに変換する場合:
# ImageMagick pixel enumeration: 650,455,65535,srgb
0,0: (0,0,0) #000000 black
1,0: (0,0,0) #000000 black
2,0: (0,0,0) #000000 black
3,0: (0,0,0) #000000 black
4,0: (0,0,0) #000000 black
5,0: (0,0,0) #000000 black
6,0: (0,0,0) #000000 black
7,0: (0,0,0) #000000 black
8,0: (0,0,0) #000000 black
...
...
99,138: (65535,0,0) #FF0000 red
100,138: (65535,0,0) #FF0000 red
101,138: (65535,0,0) #FF0000 red
102,138: (65535,0,0) #FF0000 red
103,138: (65535,0,0) #FF0000 red
:
magick plot.png -alpha off -fuzz 10% -fill black +opaque red txt:
我々はこれを取得します同じことをやり直すと、今度は出力を解析して#FF0000
(Windows上であなたはFINDSTR
代わりのawk
を使用する)だけ結腸に最初のフィールドを印刷する:
magick plot.png -alpha off -fuzz 10% -fill black +opaque red txt: | awk -F: '/#FF0000/{print $1}'
99,138
100,138
101,138
102,138
103,138
434,138
439,138
440,138
...
...
MATLABを使用しているとして、あなたはImageMagickのにこのような何かを支払う必要があるでしょう:
[result,output]=system("magick plot.png -alpha off -fuzz 10% -fill black +opaque red txt: | awk -F: '/#FF0000/{print $1}'");
あなたは%
記号をエスケープするには、Windows上でキャレット(^
を)必要があるかもしれません。または、すべてのコマンドをBATCHファイルに入れて、それを頻繁に行うと入力を保存するように呼び出すことができます。
?私はイメージの一番上の行のすべての赤のピクセルを意味し、二番目の行の赤のピクセルはすべて続きます。 –
@ MarkSetchell MATLABの列順です。 Captain Morganは、このグラフが 'Img(:、:、1)&〜Img(:、:、2)'でうまく動作するように見えます。あなたのグラフはすごく素敵なものになりますか? – beaker
これはMatlabでも可能ですが、これが1回限りの作業であれば、Webアプリケーション "WebPlotDigitizer"を使用することをお勧めします。このWebアプリケーションでは、高度な精度で手動で行うことができます。あなたがMatlabで作った場合、交差する赤線はあなたの人生をはるかに複雑にします。 – brainkz