2017-11-08 6 views

答えて

4

単純な線とノイズの少ないクリーンな画像(この場合はa grayscale intensity uint8 image)を扱っているため、これはプログラムで行うことができます。

img = imread('1ebO0.png'); % Load image 
mask = (img < 128);   % Threshold to get a matrix of 0 and 1 (ones where your 
          % line is, zeroes elsewhere) 
[~, index] = max(flipud(mask), [], 1); % Gives you the index of the first row from 
             % the bottom of the image where a 1 occurs 
x = find(any(mask, 1)); % Find indices of columns that have at least one 1 to get x 
y = index(x);   % Trim row indices based on the above to get y 
plot(x, y); 

そしてライン:素晴らしいです

enter image description here

+0

おかげでここでは、あなたの行を抽出することができます方法です。あなたが私に尋ねる気にならないなら、私は複製し、この機能を右にシフトして、それらを畳みたいと思います。私はそれを複製してそれをシフトすることができますが、畳み込みは奇妙なメガモンスターを出します。何か案が? – matteoeoeo

+0

私はこのコードを使用していますf1 = y; プロット(f1、 'k'); 保留;x2 = x(:)+ 10; f2 = y;; plot(x2、y、 'r'); 保留; fv = conv(f1、f2、 'full') プロット(fv、 'b'); – matteoeoeo

+0

@matteoeoeo:軸上のデータをプロットする場所は移動しましたが、データ自体は移動しませんでした。 'f1'と' f2'の両方に 'y'が含まれているので、ベクトルを畳み込んでいます。あなたのデータ 'y'も1113ポイントと最大値700を持っているので、大きな結果を生み出すのは驚くことではありません。 – gnovice

0

解決策は、getpts機能を使用することができます。この機能は、指定されたfigからのマウス選択を使っていくつかのポイントを得るのに役立ちます。

[x, y] = getpts(fig) 

あなたがマウスを使って図の電流軸における点の集合を選択することができます。選択した点の座標がxとyで返されます。

詳しくはthis documentationを参照してください。

関連する問題