我将3D形状作为3D矩阵加载到MATLAB中。矩阵相当大,例如250x250x250。该形状在矩阵内通过数字> 0但是<= 1来定义,因此矩阵中的所有正数都是“形状”,并且所有零都是“非形状”。形状是连续的。这种形状的一个平面的简化(8×8)示例如下所示:
0 0 0 0 0 0 0 0
0 0 1 .5 .1 .2 1 0
0 0 0 0 0 .3 0 0
0 0 .2 .3 1 1 1 1
0 0 0 .8 1 0 0 0
0 .2 .1 1 0 1 0 0
0 .1 .9 .9 .9 0 0 0
0 0 0 0 0 0 0 0
我需要将这个形状分成两个子形状,其中两个子形状的值的总和大致相等,并且两个子形状是连续的。因此有效的划分可能是[N.B.零替换为'。'视觉清晰度]:
. . . . . . . .
. . B B B B B .
. . . . . B . .
. . A A B B B B
. . . A A . . .
. A A A . A . .
. A A A A . . .
. . . . . . . .
但是下面的划分是无效的,因为子形状B中的所有值都不能直接相互连接。
. . . . . . . .
. . B B B A A .
. . . . . A . .
. . B B A A A A
. . . B A . . .
. B B B . A . .
. B B B B . . .
. . . . . . . .
我的真实世界的例子是3维且更大。任何想法我如何将我的形状分成两个连续的子形状。通过扩展,如果我愿意,我怎么能将它分成3个连续的子形状,再次,子形状中的值之和近似相等?