我有这种矩阵(13 x 13):
0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 0 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0
我可以以某种方式增加中心零点附近的值和构成"墙壁的零点。每次迭代一次,并将其作为这个?
0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 2 2 2 2 2 2 2 2 2 1 0
0 1 2 3 3 3 3 3 3 3 2 1 0
0 1 2 3 2 2 2 2 2 3 2 1 0
0 1 2 3 2 1 1 1 2 3 2 1 0
0 1 2 3 2 1 0 1 2 3 2 1 0
0 1 2 3 2 1 1 1 2 3 2 1 0
0 1 2 3 2 2 2 2 2 3 2 1 0
0 1 2 3 3 3 3 3 3 3 2 1 0
0 1 2 2 2 2 2 2 2 2 2 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0
答案 0 :(得分:6)
如果你有图像处理工具箱,那就是单行:
%# assume your matrix is called A
result = bwdist(~A,'cityblock')
'result'是A中每个非零像素到最近零的距离,如果您只能水平或垂直步进。