• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Matlab
  • 标签: 机器视觉  

资源简介

单目测距是利用一个摄像头进行视频拍摄,在图像中找到待测物体。这一系列动作,涉及到了物体的识别,相机的结构,坐标变换的一些知识,距离的获取是一个很广泛的课题,用摄像头来测距是其中一个方向,包括单目测距、双目测距、结构光测距等方法。

资源截图

代码片段和文件信息

clear;clc;close all
%处理第一张图片(对应距离为D)
I=imread(‘20180409-204942-278.jpg‘);         %读入图片
figure
subplot(231);
imshow(I);
title(‘原图‘);   
I=rgb2gray(I);             %将RGB图转换成灰度图
subplot(232);
imshow(I);
title(‘灰度图‘);
[mn]=size(I);
for K=1:10              
    I2=wiener2(I[3 3]);   %滤波10次,把多余的点滤去。
end
I=edge(I‘sobel‘);         %集中边缘检测算子sobel、canny、log、roberts、prewitt。在此处sobel算子效果最好
subplot(233);
imshow(I);
title(‘边缘提取图‘);
for i=1:m                  %y      
    for j=1:n              %x
        if   i<280 || i>340|| j<430|| j>490 
           I(ij)=0;
        end
    end
end
subplot(234);
imshow(I);
title(‘目标物提取图‘);
                           %形态学处理,填充轮廓内像素
SE=strel(‘diamond‘2);     % strel在操作结构元素应用,用于膨胀腐蚀及开闭运算等操作的结构元素对象
                           %具体用法:SE = strel(shapeparameters)
                           %创建由指定形状shape对应的结构元素。%参数parameters一般控制SE的大小。
I2=imdilate(ISE);         %imdilate对图像实现膨胀操作。
                           %IM2 = imdilate(IMSE)膨胀灰度,二值,压缩二值图像IM,返回IM2。
                           %参数SE为由strel函数返回的结构元素或者结构元素对象组。
I2=imfill(I2‘holes‘);     %该函数用于填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 则这个圆圈内区域将被填充。
subplot(235);
imshow(I2);
title(‘填充图‘);
sum1=0;
for i=1:m                  %计算白像素的个数,即为图形面积
    for j=1:n
        if I(ij)==1;
            sum1=sum1+1;
        end
    end
end
fprintf(‘在距离为D时目标物的图形面积(像素点个数)s1=%f\n‘sum1);


%处理第二张图片(对应距离为D+d)
I=imread(‘20180409-205011-792.jpg‘);    %读入图片
figure
subplot(231);
imshow(I);
title(‘原图‘);
I=rgb2gray(I);      

评论

共有 条评论