📄 bufen.m
字号:
%将不同浓度的曲线呈现在一张图像上,看参比带的作用
clear;close all;
fcol=['r','g','b']; %初始化色彩
fdir=strcat('F:\matlab work\photo',num2str(5));
cd(fdir);
for i=1:10
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
%在滤波后图像上截取目标图
rect=imcrop(T,[774,395,211,88]);
%反应曲线
x=1:210; 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
%将曲线值的转至存成一个矩阵,方便后面计算
juzhen(i,:)=Cur2;
%将10条曲线取平均作图
pingjun=zeros(1,199);
for t=1:209
pingjun(:,t)=mean(juzhen(:,t));
end
plot(pingjun);
grid on;
hold on;
%寻找峰值,法一:最小值阈值法。
%求检测带峰值
% jiequ=pingjun(1:150);
% feng=[];
% k0=1;
% for p=1:length(jiequ)
% if abs(min(jiequ)-jiequ(p))<5;
% feng(k0)=p;
% k0=k0+1;
% else
% continue
% end
% end
%寻找峰值,法二:自动定位法法。
fengzhi=zeros(1,i);
jiequ=juzhen(50:80);
MIN(1,i)=mean(jiequ);
fengzhi=MIN; %将峰值存成一个矩阵
end
%fengzhi(1,i)=MIN; %将峰值存成一个矩阵
end
% disp('fengzhi:');
% disp([fengzhi]);
%数据归一化处理
% guiyi=fengzhi./fengzhi(1);
% disp('guiyi:');
% disp([guiyi]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -