0001 function [Sx, Sy, Sz, U, Resels]=ComputeResels2(X, Mask, XDIM, YDIM, ZDIM)
0002
0003
0004
0005
0006 DIMS=[XDIM YDIM ZDIM];
0007
0008
0009
0010
0011
0012
0013
0014
0015 M=sum(Mask);
0016
0017 Z=reshape(X,XDIM,YDIM,ZDIM);
0018
0019
0020 z=fftn(Z);
0021 w=z.*conj(z);
0022 W=real(ifftn(w));
0023 W=W./W(1,1,1);
0024 W=fftshift(W);
0025
0026 S=zeros(3,3);
0027 SumW=0;
0028
0029
0030 for x=1:DIMS(1),
0031 for y=1:DIMS(2),
0032 for z=1:DIMS(3),
0033 S(1,1)=S(1,1)+abs(W(x,y,z)).*(x-(DIMS(1)+1)./2).^2;
0034 end
0035 end
0036 end
0037
0038 for x=1:DIMS(1),
0039 for y=1:DIMS(2),
0040 for z=1:DIMS(3),
0041 S(2,2)=S(2,2)+abs(W(x,y,z)).*(y-(DIMS(2)+1)./2).^2;
0042 end
0043 end
0044 end
0045
0046 for x=1:DIMS(1),
0047 for y=1:DIMS(2),
0048 for z=1:DIMS(3),
0049 S(3,3)=S(3,3)+abs(W(x,y,z)).*(z-(DIMS(2)+1)./2).^2;
0050 end
0051 end
0052 end
0053
0054 for x=1:DIMS(1),
0055 for y=1:DIMS(2),
0056 for z=1:DIMS(3),
0057 S(1,2)=S(1,2)+abs(W(x,y,z)).*(x-(DIMS(1)+1)./2).*(y-(DIMS(2)+1)./2);
0058 end
0059 end
0060 end
0061
0062 for x=1:DIMS(1),
0063 for y=1:DIMS(2),
0064 for z=1:DIMS(3),
0065 S(1,3)=S(1,3)+abs(W(x,y,z)).*(x-(DIMS(1)+1)./2).*(z-(DIMS(3)+1)./2);
0066 end
0067 end
0068 end
0069
0070 for x=1:DIMS(1),
0071 for y=1:DIMS(2),
0072 for z=1:DIMS(3),
0073 S(2,3)=S(2,3)+abs(W(x,y,z)).*(y-(DIMS(2)+1)./2).*(z-(DIMS(3)+1)./2);
0074 end
0075 end
0076 end
0077
0078
0079 SumW=sum(sum(sum(abs(W))));
0080
0081
0082
0083 S=(S+S'.*(1-eye(3,3)))./SumW;
0084
0085
0086 [U V P]=svd(S);
0087
0088
0089 Sx=sqrt(V(1,1));
0090 Sy=sqrt(V(2,2));
0091 Sz=sqrt(V(3,3));
0092
0093
0094 A=(S(1,1)*S(2,2)*S(3,3))^(-1/6);
0095 B=(4/3)*pi*sqrt(det(S./2));
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115 Resels=M.*B^(-1/3);
0116
0117
0118 clear X Z z w Mask M V a F;
0119
0120 return;
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159