% 检测多焊和连焊 seq=strel('diamond',5); Img_bw=imclose(Img_bw,seq);%闭操作 [y,x]=find(Img_bw==1); k = convhull(x,y); Area_hanjie=length(x); %连通区域面积 area_tubao = polyarea(x,y); % 连通区域凸包面积 Edge_1=edge(Img_bw,'canny'); % figure;imshow(Edge_1); zhouchang=length(find(Edge_1==1)); % 连通区域周长 if zhouchang/Area_hanjie<0.07 %根据周长/面积的比作为特征将焊接块取出来 if Area_hanjie>20000 % 常规焊接块与多焊连焊的面积不同 if area_tubao/Area_hanjie>0.16 % 多焊多凹区域,根据该特征实现多焊与连焊的区分 text(col_left, row_up-30, '连焊','FontSize',16); hold on; line(rect(:,1),rect(:,2),'color','g','LineWidth',2); else text(col_left, row_up-30, '多锡','FontSize',16); hold on; line(rect(:,1),rect(:,2),'color','b','LineWidth',2); end end end
时间: 2023-06-26 20:03:10 浏览: 79
判断图是否连通
这段代码主要是用来检测焊接区域中的多焊和连焊问题。首先使用了闭操作来减少图像中的噪点,然后使用convhull函数计算连通区域的凸包面积和面积,并计算出焊接区域的周长。根据周长/面积的比作为特征将焊接块取出来,如果该区域面积大于20000且凸包面积/面积大于0.16,则表示该区域为多焊或连焊区域。最后,在图像中标注出检测结果。
阅读全文