[B,L]=bwboundaries(Morph); % figure,imshow(L),title(‘检测圆和矩形’); axes(handles.axes5); imshow(L); % imwrite(L,‘Lplane.jpg’); STATS = regionprops(L,'Area', 'Centroid','BoundingBox'); %len=length(STATS); hold on for k=1:dim(1) b= boundaries{k}; dim = size(b); for i=1:dim(1) khoangcach{k}(1,i) = sqrt ( ( b(i,2) - STATS(k).Centroid(1) )^2 + ( b(i,1) - STATS(k).Centroid(2) )^2 ); end
时间: 2023-11-04 13:04:28 浏览: 100
这段代码主要涉及到边界提取、区域属性测量和计算物体轮廓点与质心之间的距离。下面对每一部分进行解释:
- `[B,L]=bwboundaries(Morph);` 使用`bwboundaries`函数提取二值图像`Morph`中的物体边界。结果存储在`B`和`L`两个变量中,其中`B`是一个细胞数组,每个元素存储一个物体的边界点坐标,`L`是一个标记矩阵,每个物体的像素值被标记为一个唯一的整数。
- `axes(handles.axes5);` 将GUI界面的当前坐标轴设置为`handles.axes5`(可能是一个图像显示控件)。
- `imshow(L);` 在当前坐标轴上显示标记矩阵`L`,即显示提取的物体边界。
- `STATS = regionprops(L,'Area', 'Centroid','BoundingBox');` 使用`regionprops`函数测量标记矩阵`L`中的区域属性,包括物体的面积、质心坐标和边界框。结果存储在`STATS`结构体数组中。
- `hold on` 保持图形窗口的当前内容,并在其上添加新的内容。
- `for k=1:dim(1)` 对于每一个物体,执行下面的代码块。
- `b= boundaries{k};` 从`boundaries`细胞数组中获取第`k`个物体的边界点坐标。
- `dim = size(b);` 获取该物体边界点的尺寸。
- `for i=1:dim(1)` 对于每一个边界点,执行下面的代码块。
- `khoangcach{k}(1,i) = sqrt ( ( b(i,2) - STATS(k).Centroid(1) )^2 + ( b(i,1) - STATS(k).Centroid(2) )^2 );` 计算该边界点与对应物体质心之间的欧氏距离,并将结果存储在`khoangcach`细胞数组中的第`k`个元素中。
综上所述,这段代码的作用是提取二值图像中的物体边界,测量物体的区域属性,并计算每个物体边界点与质心之间的欧氏距离。最后,在GUI界面上显示提取的边界和测量结果。
阅读全文