%求连通区域的上下左右边界 [row,col]=find(Img_temp==1); row_up=min(row); row_down=max(row); col_left=min(col); col_right=max(col); % 计算外接矩形的长宽和长宽比 len=col_right-col_left; hei=row_down-row_up; ratio=len/hei; % 认为长宽比在[0.5 3]以内的为目标潜在区 if ratio>0.5&&ratio<3 rect=[col_left,row_up;col_right,row_up;col_right,row_down;col_left,row_down;col_left,row_up]; row_up=max(row_up,1); row_down=min(row_down,h); col_left=max(col_left,1); col_right=min(col_right,w);
时间: 2023-06-26 22:03:29 浏览: 59
这段代码是针对二值图像Img_temp中像素值为1的连通区域,求出其上下左右边界以及外接矩形的长宽和长宽比。具体来说:
- 第一行代码中,find(Img_temp==1)找到了Img_temp中所有像素值为1的位置,返回其行坐标row和列坐标col。
- 第二行代码中,min(row)计算出了row中的最小值,即连通区域的最上端行坐标row_up;max(row)计算出了row中的最大值,即连通区域的最下端行坐标row_down。
- 第三行代码中,min(col)计算出了col中的最小值,即连通区域的最左侧列坐标col_left;max(col)计算出了col中的最大值,即连通区域的最右侧列坐标col_right。
- 第五到七行代码中,分别计算了外接矩形的长len和宽hei,以及长宽比ratio。
- 第九到十四行代码中,判断长宽比是否在[0.5, 3]的范围内,如果是,则认为该连通区域为目标潜在区,计算其外接矩形的四个顶点坐标rect,并对行和列的边界进行了限制,保证不超出图像的范围。
相关问题
% 检测漏焊,漏焊后,中间的圆环内为暗区域,利用该特征检测漏焊 Img_louhan=Img_gray(row_up:row_down,col_left:col_right,:); Img_bw=Img_temp(row_up:row_down,col_left:col_right,:); Index=find(Img_bw==0); gray=mean2(Img_louhan(Index)); if gray<80 text(col_left, row_up-30, '漏焊','FontSize',16); hold on; line(rect(:,1),rect(:,2),'color','r','LineWidth',2); continue; end
这段代码是用于检测漏焊的。首先,代码将原始图像的一部分(漏焊区域)提取出来,然后将其转换成二值图像。接下来,使用“find”函数查找二值图像中像素值为0的像素点的索引。这些像素点对应漏焊的位置。然后,计算暗区域的平均灰度值。如果平均灰度值小于80,则判定为漏焊,并在图像上标记出来。最后,使用“line”函数在图像上画出漏焊区域的边界框。
阅读全文