我正在工作眼睛检测和跟踪部分。我正在使用该方法通过利用强度变化来检测开眼和闭眼。第一个强度变化是从负峰值到正峰值,第二个强度从正峰值变为负峰值。我绘制了睁眼的水平平均值并计算出最小值。现在我想提取所需的点作为起点和终点。这些点用黑色轮廓标出图表。在图中我感兴趣的是第2和第5最小值我想提取它们的位置并计算它们之间的距离。
I1=imread('open.jpg');
I2=rgb2gray(I1);
figure, title('open');
plot(1:size(I2,1), mean(I2,2));
hold on
horizontalAverages = mean(I2 , 2);
plot(1:size(I2,1) , horizontalAverages)
[Minimas locs] = findpeaks(-horizontalAverages)
plot(locs , -1*Minimas , 'r*')
Minimas是:
-86.5647
-80.3647
-81.3588
-106.9882
-77.0765
-77.8235
-92.2353
-106.2235
-115.3118
-98.3706
他们的位置是:
30
34
36
50
93
97
110
121
127
136
答案 0 :(得分:0)
您可以尝试遍历行数据(由数据和时间组成),并在n x 2
矩阵中以降序(或升序)顺序存储最小点。
然后,只需选择矩阵的第一行(或最后一行),计算并找出各自数据的差异(我假设你找到它们之间的距离就是你的意思。)
答案 1 :(得分:0)
目前尚不清楚您是拥有数据还是仅拥有图表的图像。如果是后者:寻找峰值和不推荐眼睛谷。我强烈建议您获取DataThief或Engauge数字化仪的副本,并从您的图像中提取实际的x-y数据。您可以通过识别实际的极值或根据需要执行平滑操作来跟踪它。
如果您有基础数据,请使用findpeaks
或类似工具来识别极值。一旦你有x,y
个兴趣点,计算笛卡尔距离是微不足道的。