答案 0 :(得分:1)
您不能将findpeaks
用于图像。
但是,您可以提取图像中绘制的数据,并在其上应用findpeaks
。为了提取数据,我们首先设置阈值,以避免通过JPEG压缩在图像中引入非常低的灰度值。此阈值导致图像只有0和1的值。接下来,我们使用max
在每列中找到包含1值的第一个索引。由于图像的原点位于左上角,而不是绘制的数据使用的左下角(我假设),因此我们将这些索引取反。
a = imread('https://i.stack.imgur.com/Q1f5L.jpg');
a = a > 30; % some suitable threshold -- JPEG compression makes this necessary
a(end,:) = 1;
[~,b] = max(a,[],1);
b = size(a,1) - b; % reverse, origin is on the bottom of the image
[c,d] = findpeaks(b);
plot(b)
hold on
plot(d,c,'o')
axis equal
xlim([0,size(a,2)])
ylim([0,size(a,1)])