Fab*_*abi 6 matlab matrix wavefront
我有这种矩阵(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
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式增加中心零点周围的值和每次迭代使"墙"成为一个的零并使其成为这样吗?
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
Run Code Online (Sandbox Code Playgroud)
如果你有图像处理工具箱,它是一个单行:
%# assume your matrix is called A
result = bwdist(~A,'cityblock')
Run Code Online (Sandbox Code Playgroud)
'result'是A中每个非零像素到最近零的距离,如果您只能水平或垂直步进.