在矩阵中映射邻居的子区域并计算每个子区域的质心

时间:2014-04-24 15:09:25

标签: c matlab math image-processing signal-processing

我遇到了一个涉及以下方面的问题:

  1. 给定带有一些值的MxN矩阵。

  2. 给定阈值T

  3. 问题

    • 识别矩阵中的子区域。

    子区域是矩阵中的细胞区域,其被认为是邻居,并且该子区域中的细胞值大于T.两个细胞C1和C2被认为是邻居,如果它们是邻。如果他们在对角线附近,他们也是邻居。

    • 计算"质量中心"对于每个子区域,定义为子区域中的细胞的平均位置(x,y)。每个单元格的位置都按其值加权。

    我的方法

    1. 搜索MxN矩阵以限定单元格并将它们作为节点添加到链接列表(它们的值必须大于阈值)。

    2. 从链接列表中提取节点并将其放入"树"。该节点将是父节点。搜索剩余节点的链表以查找最近邻居"基于邻居的定义。每个邻居都被放置在"树"作为子节点。现在..对于每个子节点...搜索剩余节点的链表以找到它们的邻居。继续这样做直到完成。最后一棵树将代表一个子区域。

    3. 如果链表不为空,请转到2(并创建新树)

    4. 之后,计算质量中心"对于每棵树都很容易。

      这似乎是正确的方法,还是有更好,更优的方法。

      希望得到一些反馈。

      感谢。

      修改

      我应该提一下矩阵是"放置"在(x,y)坐标系中,左下角单元格(行M,列0)对应于(x,y)坐标(0,0)和右上角单元格(行0,列N) )对应于(x,y)坐标(N,M)

1 个答案:

答案 0 :(得分:1)

如果您有图像处理工具箱,则可以使用regionprops执行此操作。

假设M是您的矩阵,T是阈值:

subregions = regionprops(M > T, 'Centroid');

现在,每个子区域subregions(i).Centroid都有i的质心。