⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 piliang1.m

📁 峰值检测
💻 M
字号:
clear;close all;
fcol=['r','g','b']; %初始化色彩
for i = 1:9
    T=imread(strcat('IMG',num2str(i),'.jpg'));%读入图像,不显示
    %巴特沃兹滤波,不显示滤波后图像
    for k=1:3
        A=T(:,:,k);
        for j=1:300
            B=A(j,:);
            C=double(B); %将整形转换为双精度型
            [M,N]=butter(8,0.4); %使用8阶,截至频率是0.4的巴特沃兹滤波器
            D=filter(M,N,C);
            A(k,:)=D;
            T(:,:,k)=A;
       end
    end
   %在滤波后图像上截取目标图
   %imshow(T);
%    [x,y]=ginput(4);
%    a=min(x);
%    b=min(y);
%    width=max(x)-min(x);
%    height=max(y)-min(y);
%    I=imcrop(T,[a,b,width,height]);% %在目标图上求灰度(强度)值
   rect=imcrop(T,[940,500,300,100]);
   %imshow(rect);
   %反应曲线
x=1:300; y=50*ones(1,length(x)); %y=ones(a,b);表示形成a行b列全为1的数列。
                                 %词句表示y=100的一条长为550的线段。
Cur0=improfile(rect,x,y); %improfile用于沿着图像中一条直线段路径或直线路径计算并绘制其强度(灰度)值。
                             %彩色图像是将红绿蓝分离开了,个表达独立的线条图形。
%三点平均滤波

 Cur1=Cur0(:,:,2)';
 
    for p=2:(length(Cur1)-1)
    Cur2(p)=(Cur1(p-1)+Cur1(p)+Cur1(p+1))/3;
    Cur2(1)=Cur1(1);
    Cur2(length(Cur1))=Cur1(length(Cur1));
end
plot(Cur2,'g');grid on;
hold on;
%将曲线值的转至存成一个矩阵,方便后面计算
juzhen(i,:)=Cur2;
%寻找峰值,法一:最小值阈值法。
%求最大峰值
%定义存储最大峰值X坐标的矩阵目前为空矩阵,求绿色图像的峰值关系。
BRange=[];
k=1;
for t=1:length(Cur2)
   if abs(min(Cur2)-Cur2(t))<10;
       BRange(k)=t;
       k=k+1;
   else
       continue
   end
end
MAX=mean(Cur2(BRange(1):BRange(length(BRange))));
% disp('MAX:') %显示MAX:这个字符串
% disp(MAX);    %显示MAX的值
%求最小峰值
Sub=Cur2(1:(BRange(1)-100));
SRange=[];
k=1;
for t=1:length(Sub)
    if abs(min(Sub)-Sub(t))<10;
        SRange(k)=t;
        k=k+1;
    else
        continue
    end 
end
MIN=mean(Cur2(SRange(1):SRange(length(SRange))));
% disp('MIN:');
% disp(MIN);
q=MAX/MIN;
% disp('q:');
% disp(q);
%将q值形成一个矩阵,方便以后调用
Qzhen(i,:)=q;
disp('Qzhen:') %显示Qzhen:这个字符串
disp(Qzhen);    %显示Qzhen的值
end
%循环结束
%进行Qzhen的数据分析,方差分析
fangcha=var(Qzhen);
disp('fangcha:') %显示fangcha:这个字符串
disp(fangcha);    %显示fangcha的值
bzpiancha=std(Qzhen);
disp('bzpiancha:') %显示bzpiancha:这个字符串
disp(bzpiancha);    %显示bzpiancha的值
%将10条曲线取平均作图
pingjun=zeros(1,299);
for i=1:299
    pingjun(:,i)=mean(juzhen(:,i));
end
figure,plot(pingjun,'b');grid on;
%求平均曲线的峰值
BRange=[];
k=1;
for t=1:length(pingjun)
   if abs(min(pingjun)-pingjun(t))<10;
       BRange(k)=t;
       k=k+1;
   else
       continue
   end
end
MAX=mean(pingjun(BRange(1):BRange(length(BRange))));
% disp('MAX:') %显示MAX:这个字符串
% disp(MAX);    %显示MAX的值
%求最小峰值
Sub=pingjun(1:(BRange(1)-100));
SRange=[];
k=1;
for t=1:length(Sub)
    if abs(min(Sub)-Sub(t))<10;
        SRange(k)=t;
        k=k+1;
    else
        continue
    end 
end
MIN=mean(pingjun(SRange(1):SRange(length(SRange))));
% disp('MIN:');
% disp(MIN);
pingjunQ=MAX/MIN;
disp('pingjunQ:') %显示Qzhen:这个字符串
disp(pingjunQ);    %显示Qzhen的值


    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -