阈值方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%% %阈值分析
clear
close all
%% %下降边沿数据
xx=164:4:280; %位置数据
yx=[3512 3540 3437 3436 3402 ...
3410 3323 3151 2795 1257 ...
1010 886 690 563 500 ...
484 453 437 431 439 ...
406 425 416 405 397 ...
411 384 398 386 398]; %像素亮度值
%上升边沿数据
xs=1484:4:1600; %位置数据
ys=[367 391 368 378 389 402 ...
399 399 410 406 401 423 ...
445 463 548 763 1256 2411 ...
2337 3332 3366 3294 3282 3250 ...
3291 3326 3282 3185 3286 3636 ]; %像素亮度值
%% %数据转换
for ss=1:2
if ss==1
x11=xs;y11=ys;
m=[x11;y11];
mid=(max(y11)+min(y11))/2; %查找阈值
ll=m(:,m(2,:)<=mid); %找阈值点以下的点
mm=m(:,mid<=m(2,:)) ; %找阈值点以上的点
x=[ll(1,end) mm(1,1)]; %确定位置插值点
y=[ll(2,end) mm(2,1)]; %确定幅值插值点
else
x11=xx;y11=yx;
m=[x11;y11];
mid=(max(y11)+min(y11))/2; %查找阈值
ll=m(:,m(2,:)<=mid); %找阈值点以下的点
mm=m(:,mid<=m(2,:)) ; %找阈值点以上的点
x=[ll(1,1) mm(1,end)]; %确定位置插值点
y=[ll(2,1) mm(2,end)]; %确定幅值插值点
end
%% 进行线性拟合
p1=polyfit(x,y ,1);
% vpa(poly2sym(p1),10) %给出表达式
midx=(mid-p1(2))/p1(1);
t=min(x):0.1:max(x);
y1=polyval(p1,t); %计算采样点的拟合结果
if ss==1
subplot(2,1,1);
else
subplot(2,1,2);
end
plot(x,y,'ro',x11,y11,'*',t,y1)
hold on
plot(midx,min(y):0.1:max(y),'--b',min(x):0.1:max(x),mid,'--b',midx,mid,'ro')
disp(['上升沿得到的边界位置为;' num2str(midx)]);
if ss==1
title('上升沿直线插值结果')
else
title('下降沿直线插值结果')
end
end