根据图像目标深度测试距离

clc;
clear;
close all;
warning off;
addpath 'func\'

%计算物体的深度距离

%===============================
 %计算左边图像的目标位置
%===============================
PL=imread('p1.jpg');
subplot(241),imshow(PL),title('左侧拍摄图像');
PL=rgb2gray(PL);
PL=255-PL;
PL1=im2bw(PL,0.8);
subplot(242),imshow(PL1),title('阈值分割图像');
se1=strel('rectangle',[5 5]);
PL2=imclose(PL1,se1);   %闭运算
se2=strel('rectangle',[5 5]);
PL3=imopen(PL2,se2);   %开运算
subplot(243),imshow(PL2),title('形态学处理');
imwrite(PL3,'PL3.bmp','bmp')
k=1;sum1=0;
for j=1:518        %计算目标一的像素突变点
    for i=1:388
        sum1=sum1+PL3(i,j);
        
    end
    k=k+1;
    P(k)=sum1/318;
    sum1=0;
end
x=1:518;
y=P(x);
subplot(244),plot(x,y),title('灰度变化图');
plot(x,y);
for i=2:518        %计算目标二的像素突变点
    if ((P(i-1)<0.01)&(P(i)>0.01)&(P(i)<0.16))
        Z(1)=i;
        continue
    end
    if ((P(i-1)<0.1)&(P(i)>0.16))
        Z(2)=i;
        continue
    end
end
%===============================
 %计算右边图像的目标位置
%===============================
PR=imread('p2.jpg');
subplot(245),imshow(PR);title('右侧拍摄图像');
PR=rgb2gray(PR);
PR=255-PR;
PR1=im2bw(PR,0.8);
subplot(246),imshow(PR1);title('阈值分割图像');
se1=strel('rectangle',[5 5]);
PR2=imclose(PR1,se1); 
se2=strel('rectangle',[5 5]);
PR3=imopen(PR2,se2); 
subplot(247),imshow(PR3),title('形态学处理');
k=1;sum2=0;
for j=1:518
    for i=1:388
        sum2=sum2+PR3(i,j);
        
    end
    k=k+1;
    Q(k)=sum2/318;
    sum2=0;
end
x=1:518;
y=Q(x);
subplot(248),plot(x,y),title('灰度变化图');
imwrite(y,'y2.bmp','bmp')
for i=2:518
    if ((Q(i-1)<0.01)&(Q(i)>0.05)&(Q(i)<0.16))
        S(1)=i;
        continue
    end
    if ((Q(i-1)<0.1)&(Q(i)>0.16))
        S(2)=i;
        continue
    end

end
disp('像素突变点:');D=Z-S    %z为目标一的像素突变点,s为目标二的像素突变点
disp('光轴间距离(单位mm):');B=41.5  %光轴间距离,单位mm
disp('相机焦距(单位mm):');f=6.3   %相机焦距,单位mm
disp('单位像素对应的实际长度(单位mm):');dx=0.013%单位像素对应的实际长度,单位mm
disp('目标一测得距离(单位mm):');D1=(f*B)/(dx*D(1)*5)%Z(1)为目标一测得距离,因为图像缩小了五倍,所以应除以5
disp('目标二测得距离(单位mm):');D2=(f*B)/(dx*D(2)*5)%Z(2)为目标二测得距离,因为图像缩小了五倍,所以应除以5


             

D-59

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值