1

这是计算图像中对象数量的 MATLAB 代码步骤之一。

B = bwboundaries(img2);
imshow(img2)
text(10,10,strcat('\color{green}Objects Found:',num2str(length(B))))
hold on

虽然对代码给出的解释是

> This step finds the boundaries of each object that it finds and stores
> it in B. The text function prints the number of objects that are found
> by bwboundaries.

但我无法理解第 3 步。谁能简要解释每一行的代码。谢谢。

4

3 回答 3

2

如需帮助,bwboundaries请参阅该功能的帮助文件

imshow(img2)

...img2在图形窗口中显示图像。

length(B)

...给出向量(或矩阵)B 的标量长度,例如8

num2str(length(B))

...将此数字转换为字符串,例如'8'.

strcat('\color{green}Objects Found:',num2str(length(B)))

...附加到字符串的开头'8'string \color{green}Objects Found:。在这种情况下,您最终会得到一个完整的字符串:

\color{green}Objects Found:8

text函数将此文本定位在当前轴上的指定位置,在本例中为位置 (10, 10)。棘手的部分是\color{green}文本字符串的一部分,它告诉 MATLAB 使文本变为绿色(并且在绘制文本时不显示)。

`hold on`

... 防止绘制到相同轴的新项目擦除当前项目。

您可以使用命令从 MATLAB 中了解大部分这些命令help。例如打字help bwboundaries

>> help bwboundaries
 bwboundaries Trace region boundaries in binary image.
    B = bwboundaries(BW) traces the exterior boundary of objects, as well
    as boundaries of holes inside these objects. It also ... <snip>
于 2013-03-08T19:51:17.070 回答
1

除了@BillCheatman 的回答之外,您可能还需要了解 BWBOUNDARIES 函数在做什么以及它返回了什么。查看文档以获取完整的解释和示例。

你还会发现

bwboundaries 返回 B,一个 P×1 元胞数组,其中 P 是对象和孔的数量。

因此,该语句length(B)将为您提供 cell array 的最大尺寸B,即P在上述引用或找到的对象数量中。

于 2013-03-08T19:58:04.097 回答
1

"text(10,10,strcat('\color{green}Objects Found:',num2str(length(B)))) "这一行是在(10,10)的位置写一行文本图片。

“B = bwboundaries(img2);” 这个是计算 img2 的边界,应该是二值图像。

让我们以这张图片为例:
在此处输入图像描述

从这张图片中,我们可以看到有四个边缘。所以使用“B = bwboundaries(img2);”,我们将得到 B,它是一个 4 单元数据。每个单元格是一个*2 矩阵,用于存储每个边缘点的坐标。所以矩阵的每一行都是一个边缘点。对于我们的示例,有四个边,它们的图形如下所示。 在此处输入图像描述

于 2013-03-09T22:13:39.860 回答