【问题标题】:how to get starting position of every connected component of an image in matlab如何在matlab中获取图像的每个连接组件的起始位置
【发布时间】:2015-05-11 14:06:18
【问题描述】:

我正在使用 "bwconncomp" 方法来获取此图像的连接组件。 有四个用红色框标记的连通分量,每个连通分量的每个起点用黄色点标记黄色点是 (x , y) 仅适用于左起第一个组件。在左侧的第一个连接组件(现在是一个单独的图像)处,您会看到一个蓝色点,它是该特定连接组件的重心。我可以很容易地将 蓝点坐标计算为 (x1 , y1)。如果我想计算该重心相对于整个图像的位置,那么坐标将是 (x+x1, y+y1)。我的问题是如何在 matlab 中获得 (x , y) 坐标?**由于我不是 matlab 专家,所以功能齐全的代码会更有帮助。

主图在这里

【问题讨论】:

  • 您能否添加另一个不带框的图像,即相同的图像,但只有黑色文本,以便那些人轻松拍摄相同的图像并解决您的问题??
  • 我已经添加了@Santhan Salai

标签: matlab image-processing


【解决方案1】:

matlab 的一大优点是regionprops 函数。它允许您将图像(黑白、连接组件或标记图像)交给它,它将返回一个 stats 对象,其中包含有关图像中每个连接组件的大量信息。

您可以通过告诉它您想要哪个属性来限制返回的信息(并因此计算,这可以节省时间)。要获得边界框(听起来像你想要的),你会说

stats = regionprops(Image,'boundingbox');

然后,stats.BoundingBox 包含一个带有[x_position y_position width height] 的数组。

希望您能指出正确的方向,并尝试使用regionprops(Image,'all') 来查看您可以从图像中获得的所有信息。

【讨论】:

  • 对不起,做不到。我只能做到这一点con_comp = bwconncomp(binary_image,8); number_of_object = con_comp.NumObjects; stats = regionprops(con_comp,'boundingbox'); [ul_corner, width] = stats.BoundingBox; ,我不擅长matlab,所以我需要的是功能齐全的代码@cwissy
  • 如果您查看stats 对象,它将是一个结构体。它包含您想要的 - 边界框的 xy 坐标。所以你可以做boxes = cat(1, stats.BoundingBox);,盒子将是一个矩阵,前两列是你的点的 xy 坐标
  • 第三列和第四列呢? @cwissy
  • 第 3 和第 4 列是宽度和高度。如果这已经回答了您的问题,您可以顺便接受它。您可以在此处找到有关 regionprops 的更多信息:uk.mathworks.com/help/images/ref/regionprops.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
相关资源
最近更新 更多