gpt4 book ai didi

matlab - 在matlab中提取区域

转载 作者:行者123 更新时间:2023-12-02 07:22:05 27 4
gpt4 key购买 nike

假设现在我有一个图像分割图S,其索引范围为1到k。具有相同编号的索引属于同一段。例如:

S = [1 1 1 2 2 2;
1 1 1 2 2 2;
2 2 2 2 1 1;
2 2 2 2 1 1;
2 2 2 2 1 1]

对于这个分割图S,我想获取区域。例如,S中的“1”有两个独立的部分,所以我想得到三个区域——两个带有标签1的区域,一个带有标签2的区域,为了区分两个“1”,我想将其中一个更改为是另一个标签,比如 3。所以最终的 map 是:

S = [1 1 1 2 2 2;
1 1 1 2 2 2;
2 2 2 2 3 3;
2 2 2 2 3 3;
2 2 2 2 3 3]

我正在考虑使用连通分量来解决这个问题,但是它需要制定亲和性矩阵。有更好的方法吗?

最佳答案

简单地获取所有元素的逻辑矩阵,然后使用bwlabel获取所有连接的元素。你可以将它们合并在一起。为了避免混合两个区域的问题,只需添加原始矩阵的最大值即可例如:

mask           = (S == 1);
labeled = bwlabel (mask);
labeled(mask) = labeled(mask) + max (S(:)) - 1;
labeled = S + labeled;

唯一的区别是之前值为“1”的区域现在不再具有该值,但至少它们的标签不同。如果你想让其中一个保留其数字,只需为最高值制作另一个掩码,然后用它将所有数字变回“1”即可。

labeled(S == max(S(:))) = 1;

关于matlab - 在matlab中提取区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12181194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com