基于MATLAB视觉的机械臂水果分拣系统仿真(记录自用)

一、效果展示

① 水果分拣系统仿真环境初始状态
在这里插入图片描述
②GUI的界面
此界面是在之前做的六轴机械臂操作界面加上的,图个方便,所以这里显得比较突兀!
在这里插入图片描述
在这里插入图片描述
③分拣结果

在这里插入图片描述
在这里插入图片描述

二、系统流程图

①前处理
在这里插入图片描述
②成熟度检测(通过颜色简单检测)
在这里插入图片描述
③果径检测
一可以利用采集到的边缘像素点信息,以某固定点与其他点分别进行比较获得其两者间位置最大的点,两者的距离最大者为判断该水果尺寸的信息。如图3-4所示,最长像素间距判断 。二是利用regionprops函数中的“Area”属性直接计算各个目标的面积值,后通过设定的范围,进行判断分选。
在这里插入图片描述
在这里插入图片描述
④位置确定(此方法简单映射)
并未进行准确的标定,这里只是简单的利用重心的方法确定位置。
在这里插入图片描述

三、代码

matlab部分

主要代码:

img = handles.img;
%% 水果的分拣系统
% img = imread('Orange_g.png');
mdl_puma560;

im = imresize(img,[300 300]);
im1 = rgb2gray(im);
%figure;
%imshow(im1);
e = edge(im1,'canny',0.3);%0.52
%figure('name','边缘检测')
Iprops=regionprops(e,'BoundingBox','Area', 'Image','Centroid');
I=Iprops(1).Centroid
% hold on;
%imshow(e);
[m n] = size(e);
i1 = 0;j1=0;
for i = 1:m
    for j = 1:n
        if(e(i,j)==1)
            k2=e(i,j);
            i1=i;
            j1=j;
            break
        end
    end
    break
end
k=1;k1=1;
for i=1:m
    for j=1:n
        if(e(i,j)==1)
            disi(k)=abs(i-i1);
            disi(k1)=abs(j-j1);
            k=k+1;
            k1=k1+1;%当像素是白色时,该位置减去白色像素的其他位置
        end
    end
end
maxi=max(disi);
imagesc(im(:,:,1));
r1=im(:,:,1);
g1=im(:,:,2);
b1=im(:,:,3);
m1=mean2(g1);
m2=mean2(r1);
m3=mean2(b1);
r2 = m2/(m1+m2+m3);%返回彩色图像的强度值,并计算平均值
c=0;
if(r2>0.4)%0.4是为红色亮度设置的阈值
    c = 1;
end

全部代码较多,如有需要再行发布!

  • 3
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值