PDA

查看完整版本 : [求助]这两个命令应该如何改成三维情况?多谢帮忙!


小兰花
2008-11-07, 23:54
有一个问题:
a =
0.5447 0.5436 0.5431 0.5440 0.5461 0.8472 0.5466 0.5457
0.5461 0.5452 0.8442 0.5441 0.5452 0.8461 0.5464 0.5464
0.9495 0.5488 0.9476 0.5467 0.5469 0.5476 0.5484 0.5492
0.9510 0.5505 0.5493 0.5482 0.5480 0.9485 0.9493 0.5504
0.5481 0.5476 0.5466 0.5461 0.5464 0.5470 0.5474 0.5479
0.5450 0.5442 0.5436 0.5442 0.5457 0.5465 0.5462 0.5456
0.5445 0.5434 0.5432 0.5448 0.5473 0.5484 0.5474 0.5458
0.5448 0.5436 0.5434 0.5451 0.5479 0.5491 0.5479 0.5462

>> A=im2bw(a,0.8) %A中的数据,大于0.8的变1,小于0.8的变0;

A =

0 0 0 0 0 1 0 0
0 0 1 0 0 1 0 0
1 0 1 0 0 0 0 0
1 0 0 0 0 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 0 0 0 0 0

>> [L,n1]=bwlabel(A)

L =

0 0 0 0 0 3 0 0
0 0 2 0 0 3 0 0
1 0 2 0 0 0 0 0
1 0 0 0 0 4 4 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 0 0 0 0 0


n1 =

4


若a是个n*n*n的三维矩阵,矩阵中的数据也是0到1之间的数据,如何实现上述的功能?
A=im2bw(a,0.8)
[L,n1]=bwlabel(A) 这两个命令应该如何改成三维情况?

谢谢

remnant
2008-11-08, 19:58
机器上暂时没有matlab,先给你曲线救国下:
a是nxnxn的,那么,
[ d1, d2, d3 ] = size( a );
A = zeros( d1, d2, d3 );
L = zeros( d1, d2, d3 );
for i = 1 : d3
A( :, :, i ) = im2bw( a( :, :, i ), 0.8 );
[ L( :, :, i ), n(i) ] = bwlabel( A(:,:,i) );
end

如果不需要保存A,那么A不用做成3维的。