0001 function CW = vb_smooth_filter_norm(parm,Rradius,Rmax,Iextract)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 dir = parm.dir ;
0015 file = parm.file;
0016
0017
0018 load([dir.brain file.brain],'nextDD','nextIX');
0019 [nextIXNew,nextDDNew] = ...
0020 vb_reduce_neighbor_data(Iextract,nextIX,nextDD);
0021 nextDD = nextDDNew;
0022 nextIX = nextIXNew;
0023 clear nextDDNew nextIXNew;
0024
0025
0026 Nvertex = size(nextIX,1);
0027
0028 val = [];
0029 ipoint = [];
0030 inext = [];
0031
0032 if Rradius > 0,
0033 for i=1:Nvertex,
0034 dd0 = nextDD{i};
0035 inx = find( dd0 <= Rmax );
0036
0037 ix = nextIX{i}(inx);
0038 dd = dd0(inx);
0039
0040 ipoint = [ ipoint ; repmat( i ,[length(ix) 1] ) ];
0041 inext = [ inext ; ix ];
0042 val = [ val ; exp( - (dd/Rradius).^2 ) ];
0043 end;
0044
0045 CW = sparse( ipoint , inext , val , Nvertex, Nvertex, length(ipoint) ) ;
0046 CW = spdiags( ones(Nvertex,1), 0, CW);
0047
0048
0049 CW = max( CW , CW' );
0050 wnorm = sqrt(sum( CW.^2 , 2));
0051
0052
0053 CW = CW./repmat( wnorm ,[ 1 Nvertex ]);
0054 else
0055 CW = sparse(eye(Nvertex,Nvertex));
0056 end;
0057