如何计算图像中信号的峰值和持续时间

17次浏览(过去30天)
你好,我有以下图片 originalimage.png 我想计算信号的峰值以及每个信号的持续时间,因为我附上了图像 parameterinstersted.png 其中我描述了我目前正在确定的值
怎么用MATLAB来做呢

答案(3)

KALYAN ACHARJYA
KALYAN ACHARJYA 2022年10月26日
2的评论
KALYAN ACHARJYA
KALYAN ACHARJYA 2022年10月26日
然后从最大行数(同一列情况下)获得最大距离白色像素视为最高峰值- Elcudian距离(但这不是获得峰值的正确技术方法)?

登录评论。


图像分析
图像分析 2022年10月26日
试试这个:
%演示的图像分析师
clc;清除命令窗口。
关闭所有;关闭所有图形(imtool.)
清晰;删除所有现有变量。或者clearvars。
工作空间;确保显示工作区面板。
格式长g;
格式紧凑的;
fontSize = 22;
markerSize = 40;
%--------------------------------------------------------------------------------------------------------
图像读取百分比
文件夹= [];
baseFileName =“OriginalImage.png”;
fullFileName = fullfile(文件夹,baseFileName);
检查文件是否存在。
如果~存在(fullFileName“文件”
这个文件不存在——在那个文件夹里找不到。。
通过剥离文件夹来检查文件的整个搜索路径(其他文件夹)。
fullFileNameOnSearchPath = baseFileName;%这次没有路径。
如果~存在(fullFileNameOnSearchPath“文件”
还是没有找到。提醒用户。
errorMessage = sprintf(“错误:搜索路径文件夹中不存在%s。”, fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
grayImage = imread(fullFileName);
获取图像的尺寸。
% numberOfColorChannels对于灰度图像应该= 1,对于RGB彩色图像应该= 3。
[rows, columns, numberOfColorChannels] = size(grayImage)
%--------------------------------------------------------------------------------------------------------
显示图像。
Subplot (2,2,1);
imshow (grayImage);
impixelinfo;
轴(“上”“图像”);
标题(“原始灰度图像”“字形大小”字形大小,“翻译”“没有”);
如果1 . numberOfColorChannels >
这并不是我们所期望的灰度,而是彩色。。
流(“它并不是我们预期的灰色尺度,而是颜色\n”);
提取蓝色通道。
grayImage = grayImage(:,:, 3);
结束
更新图像的尺寸。
% numberOfColorChannels对于灰度图像应该= 1,对于RGB彩色图像应该= 3。
[rows, columns, numberOfColorChannels] = size(grayImage)
最大化窗口。
G = gcf;
g.WindowState =“最大化”;
drawnow;
%--------------------------------------------------------------------------------------------------------
%阈值图像获得明亮的斑点。
mask = grayImage > 0;
Subplot (2,2,2);
imshow(面具)
标题(二进制掩码图像“字形大小”字形大小,“翻译”“没有”);
%--------------------------------------------------------------------------------------------------------
获取每列的第一行
topRows = nan(1, columns);
Col = 1:列
thisColumn = mask(:, col);
查找顶部行
t = find(thisColumn, 1,“第一”);
如果~ isempty (t)
topRows(col) = t;
结束
结束
现在将其覆盖到图像上
Subplot (2,2,3);
imshow (grayImage)
持有;
情节(topRows的r -“线宽”4)
标题(“红衣第一排”“字形大小”字形大小,“翻译”“没有”);
将其反转并绘制为折线图。
topRows =行- topRows;
Subplot (2,2,4);
情节(topRows“b -”“线宽”3);
网格;
标题(“线路图”“字形大小”字形大小,“翻译”“没有”);
13个评论
地中海的未来
地中海的未来 2022年11月2日
@Image分析师 让我解释给你,当我给下一个图像我已经附上上面。
与实际输出值相比,您共享的代码给出了不同的值。

登录评论。


明星黾
明星黾 2022年10月26日
图像中的索引使这成为一个挑战,因为它们反射回来,在任何情况下都是非单调的,消除了一个简单的解决方案,需要一个更密集的方法。这两个峰看起来是彼此的镜像,所以我只分析了左边的一个。
全宽半最大值为 102.5 指数的单位。
试试这个——
Img = imread(“//www.ru-cchi.com/matlabcentral/answers/uploaded_files/1169303/OriginalImage.png”);
CC = bwconncomp(Img,8);
PIL = CC.PixelIdxList;
[yc,xc] = cellfun(@(x)ind2sub(CC.ImageSize,x), PIL,“Unif”, 0);
Xy = [cell2mat(xc.') cell2mat(yc.')];
Xy (:,2) = max(Xy (:,2)) - Xy (:,2);
Xyh = xy(1:fix(size(xy,1)/2),:);
数字
阴谋(1:尺寸(xyh, 1), xyh (: 1),“DisplayName的”“行指数”
持有
阴谋(1:尺寸(xyh, 1), xyh (:, 2),“DisplayName的”“列指数”
持有
网格
传奇(“位置”“最佳”
数字
情节((250:350),xyh (250:350, 1),“DisplayName的”“行指数”
持有
情节((250:350),xyh (250:350, 2),“DisplayName的”“列指数”
持有
网格
标题(“原来的向量”
传奇(“位置”“最佳”
数字
情节(xyh (: 1), xyh (:, 2))
网格
包含(“行指数”
ylabel (的列索引)
[maxv,ixh] = max(xyh(:,2));
Xv1 = 1:ixh;%下段索引向量
Xv2 = ixh+1:size(xyh,1);上节索引向量
数字
情节(xyh (xv1, 1), xyh (xv1, 2),“DisplayName的”较低的部分的
持有
情节(xyh (xv2, 1), xyh (xv2, 2),“DisplayName的”“上一节”
持有
网格
包含(“行指数”
ylabel (的列索引)
传奇(“位置”“最佳”
Lv1 = diff([0;Xyh (xv1,2)]) >= 1;选择索引以消除不连续性
Lv2 = diff([0;Xyh (xv2,2)]) <= 1;选择索引以消除不连续性
数字
情节(xv1 (Lv1 (250:350)), xyh (xv1 (Lv1 (250:350)), 1),“DisplayName的”“选定行索引”
持有
情节(xv1 (Lv1 (250:350)), xyh (xv1 (Lv1 (250:350)), 2),“DisplayName的”“选定列索引”
持有
网格
标题(所选元素向量的
包含(“绝对指数”
传奇(“位置”“最佳”
ixv1 = xv1(Lv1);选定指数百分比
ixv2 = xv2(Lv2);选定指数百分比
Yq = max(xyh(:,2))/2
Yq = 499.5000
Ix1 = find(diff(sign(xyh(ixv1,2)-yq)))+[0 1];%近似指数
xq (1) = interp1 (xyh (ixv1 (ix1), 2), xyh (ixv1 (ix1), 1)、yq);%插入
Ix2 = find(diff(sign(xyh(ixv2,2)-yq)))+[0 1];%近似指数
xq (2) = interp1 (xyh (ixv2 (ix2), 2), xyh (ixv2 (ix2), 1)、yq);%插入
FWHM = xq(2)- xq(1)% FWHM:期望结果(单位:指数)
FWHM = 102.5000
数字
情节(xyh (ixv1, 1), xyh (ixv1 2))
持有
情节(xyh (ixv2, 1), xyh (ixv2 2))
持有
网格
包含(“行指数”
ylabel (的列索引)
2的评论
明星黾
明星黾 2022年10月28日
“102.5” 值为峰值的全宽半最大值(FWHM)。(由于数据的性质,在图表上绘制非常困难。)因为你没有定义“宽度”,所以我使用了这个值,因为FWHM是最常用的度量标准。
如果你看一下数据,可能很难准确地确定峰值的起点和终点,因为它也在这里。在附近的两个最小值处有几个连续的零值 250 而且 425 .峰值是从曲线蓝色部分的第一个0点还是最后一个0点开始的?同样,在曲线红色部分的第一个0点还是最后一个0点结束?FWHM值更容易确定。
它计算最大值为 “999” 的结果 马克斯 函数,为了得到 “yq” (半峰)的价值。它只是没有明确地报告它。

登录评论。

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map