[L,num1] = bwlabel(chaying_bw,8); %区域标记, if num1==0 set(handles.text1,'string','无异物入侵'); msgbox('无异物入侵'); return end STATS = regionprops(L, 'all'); for k = 1:num1 area(k)=STATS(k).Area; %计算各区域的面积 end
时间: 2023-06-17 19:07:27 浏览: 139
这段代码用于对二值化图像进行连通区域分析,统计出各个连通区域的面积。具体来说,它首先调用 bwlabel 函数对二值化图像进行标记,得到连通区域的个数 num1 和每个像素所属的连通区域编号 L。如果 num1 为 0,说明图像中没有任何连通区域,即无异物入侵,这时就会弹出一个消息框并返回。如果 num1 不为 0,说明图像中存在连通区域,这时就调用 regionprops 函数计算各连通区域的属性(包括面积),并将这些属性存储在 STATS 结构体数组中。最后,for 循环遍历每个连通区域,计算出它们的面积并保存在 area 数组中。
相关问题
[L,num] = bwlabel(Img_BW);%计算连通区域的个数对连通区域进行标记 figure; imshow(L); [h,w,~]=size(Img_BW); figure;imshow(Img); for i=1:num Img_temp=Img_BW; Img_temp(L~=i)=0; Index=find(Img_temp==1); %计算每个连通区域的坐标值 nums=length(Index); % 如果连通区域面积太小,认为是噪声区域 if nums<4500 continue; end
这段代码是对二值图像进行连通区域分析,用于检测图像中的目标物体。
首先使用 bwlabel 函数计算连通区域的个数,并对连通区域进行标记。然后,遍历每个连通区域,通过将其他连通区域的像素值设为 0,实现将当前连通区域的像素值设为 1,即提取出当前连通区域。计算连通区域的坐标值,判断连通区域的面积是否太小,如果面积太小则认为是噪声区域,跳过该连通区域。最终可以在原始图像上显示提取出的目标物体。
mLabel = bwlabel(Img_bw); stats = regionprops(imLabel,'Area'); area = cat(1,stats.Area); index = find(area==max(area)); Img_bw = ismember(imLabel,index); Img_BW1=im2bw(Img_gray,0.5*graythresh(Img_gray(Img_bw~=0))); Img_BW1=Img_BW1.*Img_bw; Img_bw_kong=Img_bw-Img_BW1;
这段代码是用于进行图像分割的,也就是将图像中的不同区域分离出来。具体来说,代码首先使用`bwlabel`函数对二值化图像`Img_bw`进行连通域标记,得到每个连通域的标记号。然后使用`regionprops`函数计算每个连通域的面积,将所有面积放入一个数组`area`中。接着找到面积最大的连通域的标记号,用`ismember`函数提取该连通域,并将其保存到`Img_bw`中。
接下来,根据图像的灰度阈值,使用`im2bw`函数将原图像`Img_gray`转化为二值图像`Img_BW1`。由于前面已经得到了目标区域的二值图像,所以这里需要将`Img_BW1`与`Img_bw`相乘,将非目标区域的像素点置零,得到最终的二值图像`Img_bw_kong`,即空白区域的二值化结果。
阅读全文