任何人都可以简要解释一下以下代码吗?

时间:2013-03-08 19:38:44

标签: image-processing matlab

这是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步。任何人都可以简要解释每行的代码。 谢谢。

3 个答案:

答案 0 :(得分:2)

有关bwboundaries的帮助,请参阅the help file for that function

imshow(img2)

...在图窗口中显示图片img2

length(B)

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

num2str(length(B))

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

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

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

\color{green}Objects Found:8

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

`hold on`

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

您可以使用help命令从MATLAB中了解大多数这些命令。例如。输入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>

答案 1 :(得分:1)

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

你也会发现

  

bwboundaries返回B,一个P-by-1单元格数组,其中P是数字   物体和洞。

因此语句length(B)将为您提供最大的单元格数组B,在上面的引文中找到P或找到的对象数。

答案 2 :(得分:1)

“text(10,10,strcat('\ color {green} Objects Found:',num2str(length(B))))”这一行是在(10,10)的位置写一行文字)在图像上。

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

我们以此图片为例:
enter image description here

从这张图片中,我们可以看到有四条边。因此,使用“B = bwboundaries(img2);”,我们将得到B,这是一个4单元数据。每个单元格是一个n * 2矩阵,它存储每个边缘点坐标。所以矩阵的每一行都是一个边缘点。对于我们的例子,有四条边,它们的图如下所示。 enter image description here