如何计算图像中信号的峰值和持续时间
17次浏览(过去30天)
显示旧的注释
你好,我有以下图片
originalimage.png
我想计算信号的峰值以及每个信号的持续时间,因为我附上了图像
parameterinstersted.png
其中我描述了我目前正在确定的值
怎么用MATLAB来做呢
答案(3)
图像分析
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);
网格在;
标题(“线路图”,“字形大小”字形大小,“翻译”,“没有”);
明星黾
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
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:期望结果(单位:指数)
数字
情节(xyh (ixv1, 1), xyh (ixv1 2))
持有在
情节(xyh (ixv2, 1), xyh (ixv2 2))
持有从
网格
包含(“行指数”)
ylabel (的列索引))
.