00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00031 #include "distance3d.h"
00032 #include <stdio.h>
00033 #include <math.h>
00034
00035
00036 #define INFINI 4294999999;
00037
00048 param* carte_distance3d_lect(carte_distance3d_t* des, param* ptp, char* debq){
00049 des->L=1.0;
00050 des->H=1.0;
00051 des->P=1.0;
00052
00053 return(ptp);
00054 }
00055
00056
00057
00058
00059 float square(x)
00060 float x;
00061 {
00062 return(x * x);
00063 }
00064
00065
00066
00067
00068 void calculer_masque(carte_distance3d_t* des)
00069 {
00070 int N;
00071 int i,j,k;
00072 float T111, T110, T101, T011, lambda1, lambda2;
00073 float T120, T121, T012, T112;
00074 float d100, d010, d001, d110, d101, d011, d111;
00075 float d210, d201, d120, d102, d021, d012, d211;
00076 float d121, d112, d221, d212, d122;
00077 unsigned int D100, D010, D001, D110, D101, D011, D111;
00078 unsigned int D210, D201, D120, D102, D021, D012, D211;
00079 unsigned int D121, D112, D221, D212, D122;
00080
00081
00082 float L=des->L;
00083 float H=des->H;
00084 float P=des->P;
00085
00086
00087
00088
00089 T111 = sqrt(L*L + H*H + P*P); T110 = sqrt(L*L + H*H);
00090 T012 = sqrt(H*H + 4*P*P); T112 = sqrt(L*L + H*H + 4*P*P);
00091 T120 = sqrt(L*L + 4*H*H); T121 = sqrt(L*L + 4*H*H + P*P);
00092 T101 = sqrt(L*L + P*P); T011 = sqrt(H*H + P*P);
00093
00094 if(L<= P)
00095 {
00096 lambda1 = (1/(L*L))*square(T120-2.0*H) + (1/(P*P))*square(T121-T120);
00097 d010 = (-2*H + 2*H*sqrt(1+lambda1))/lambda1;
00098 d100 = d010 * (L/H);
00099 }
00100 else
00101 {
00102 lambda2 = (1/(L*L))*square(T112-T012) + (1/(H*H))*square(T012-2*P);
00103 d001 = (-2*P + 2*P*sqrt(1+lambda2))/lambda2;
00104 d010 = d001 * (L/P);
00105 }
00106
00107 d001 = d010 * (P/H);
00108 d110 = d010 * (T110/H);
00109 d101 = d010 * (T101/H);
00110 d011 = d010 * (T011/H);
00111 d111 = d010 * (T111/H);
00112 d210 = d010 * (sqrt(4*L*L + H*H)/H);
00113 d201 = d010 * (sqrt(4*L*L + P*P)/H);
00114 d120 = d010 * (sqrt(L*L + 4*H*H)/H);
00115 d021 = d010 * (sqrt(4*H*H + P*P)/H);
00116 d012 = d010 * (sqrt(H*H + 4*P*P)/H);
00117 d102 = d010 * (sqrt(L*L + 4*P*P)/H);
00118 d211 = d010 * (sqrt(4*L*L + H*H + P*P)/H);
00119 d121 = d010 * (sqrt(L*L + 4*H*H + P*P)/H);
00120 d112 = d010 * (sqrt(L*L + H*H + 4*P*P)/H);
00121 d112 = d010 * (sqrt(L*L + H*H + 4*P*P)/H);
00122 d221 = d010 * (sqrt(4*L*L + 4*H*H + P*P)/H);
00123 d212 = d010 * (sqrt(4*L*L + H*H + 4*P*P)/H);
00124 d122 = d010 * (sqrt(L*L + 4*H*H + 4*P*P)/H);
00125
00126
00127
00128
00129
00130
00131
00132 N = 67;
00133 D100 = rint(d100*N); D010 = rint(d010*N);
00134 D110 = rint(d110*N); D001 = rint(d001*N);
00135 D011 = rint(d011*N); D101 = rint(d101*N);
00136 D111 = rint(d111*N);
00137 D210 = rint(d210*N); D201 = rint(d201*N);
00138 D120 = rint(d120*N); D012 = rint(d012*N);
00139 D021 = rint(d021*N); D211 = rint(d211*N);
00140 D121 = rint(d121*N); D102 = rint(d102*N);
00141 D112 = rint(d112*N); D221 = rint(d221*N);
00142 D212 = rint(d212*N); D122 = rint(d122*N);
00143
00144 printf("L=%f,H=%f,P=%f\n",L,H,P);
00145
00146 printf("d100=%f,d110=%f,d111=%f\n",d100,d110,d111);
00147 printf("d210=%f,d211=%f,d221=%f\n",d210,d211,d221);
00148 printf("N=%d\n",N);
00149 printf("D100=%d,D110=%d,D111=%d\n",D100,D110,D111);
00150 printf("D210=%d,D211=%d,D221=%d\n",D210,D211,D221);
00151 printf("L=%f,H=%f,P=%f\n",L,H,P);
00152
00153
00154
00155 des->mask_av[0][0][0] = 2*D111;
00156 des->mask_av[0][0][1] = D122;
00157 des->mask_av[0][0][2] = 2*D011;
00158 des->mask_av[0][0][3] = D122;
00159 des->mask_av[0][0][4] = 2*D111;
00160 des->mask_av[0][1][0] = D212;
00161 des->mask_av[0][1][1] = D112;
00162 des->mask_av[0][1][2] = D012;
00163 des->mask_av[0][1][3] = D112;
00164 des->mask_av[0][1][4] = D212;
00165 des->mask_av[0][2][0] = 2*D101;
00166 des->mask_av[0][2][1] = D102;
00167 des->mask_av[0][2][2] = 2*D001;
00168 des->mask_av[0][2][3] = D102;
00169 des->mask_av[0][2][4] = 2*D101;
00170 des->mask_av[0][3][0] = D212;
00171 des->mask_av[0][3][1] = D112;
00172 des->mask_av[0][3][2] = D012;
00173 des->mask_av[0][3][3] = D112;
00174 des->mask_av[0][3][4] = D212;
00175 des->mask_av[0][4][0] = 2*D111;
00176 des->mask_av[0][4][1] = D122;
00177 des->mask_av[0][4][2] = 2*D011;
00178 des->mask_av[0][4][3] = D122;
00179 des->mask_av[0][4][4] = 2*D111;
00180
00181 des->mask_av[1][0][0] = D221;
00182 des->mask_av[1][0][1] = D121;
00183 des->mask_av[1][0][2] = D021;
00184 des->mask_av[1][0][3] = D121;
00185 des->mask_av[1][0][4] = D221;
00186 des->mask_av[1][1][0] = D211;
00187 des->mask_av[1][1][1] = D111;
00188 des->mask_av[1][1][2] = D011;
00189 des->mask_av[1][1][3] = D111;
00190 des->mask_av[1][1][4] = D211;
00191 des->mask_av[1][2][0] = D201;
00192 des->mask_av[1][2][1] = D101;
00193 des->mask_av[1][2][2] = D001;
00194 des->mask_av[1][2][3] = D101;
00195 des->mask_av[1][2][4] = D201;
00196 des->mask_av[1][3][0] = D211;
00197 des->mask_av[1][3][1] = D111;
00198 des->mask_av[1][3][2] = D011;
00199 des->mask_av[1][3][3] = D111;
00200 des->mask_av[1][3][4] = D211;
00201 des->mask_av[1][4][0] = D221;
00202 des->mask_av[1][4][1] = D121;
00203 des->mask_av[1][4][2] = D021;
00204 des->mask_av[1][4][3] = D121;
00205 des->mask_av[1][4][4] = D221;
00206
00207 des->mask_av[2][0][0] = 2*D110;
00208 des->mask_av[2][0][1] = D120;
00209 des->mask_av[2][0][2] = 2*D010;
00210 des->mask_av[2][0][3] = D120;
00211 des->mask_av[2][0][4] = 2*D110;
00212 des->mask_av[2][1][0] = D210;
00213 des->mask_av[2][1][1] = D110;
00214 des->mask_av[2][1][2] = D010;
00215 des->mask_av[2][1][3] = D110;
00216 des->mask_av[2][1][4] = D210;
00217 des->mask_av[2][2][0] = 2*D100;
00218 des->mask_av[2][2][1] = D100;
00219 des->mask_av[2][2][2] = 0;
00220
00221
00222
00223 des->mask_av[2][4][4] = 2*D110;
00224 des->mask_av[2][4][3] = D120;
00225 des->mask_av[2][4][2] = 2*D010;
00226 des->mask_av[2][4][1] = D120;
00227 des->mask_av[2][4][0] = 2*D110;
00228 des->mask_av[2][3][4] = D210;
00229 des->mask_av[2][3][3] = D110;
00230 des->mask_av[2][3][2] = D010;
00231 des->mask_av[2][3][1] = D110;
00232 des->mask_av[2][3][0] = D210;
00233 des->mask_av[2][2][4] = 2*D100;
00234 des->mask_av[2][2][3] = D100;
00235 des->mask_av[2][2][2] = 0;
00236
00237 des->mask_av[3][0][0] = D221;
00238 des->mask_av[3][0][1] = D121;
00239 des->mask_av[3][0][2] = D021;
00240 des->mask_av[3][0][3] = D121;
00241 des->mask_av[3][0][4] = D221;
00242 des->mask_av[3][1][0] = D211;
00243 des->mask_av[3][1][1] = D111;
00244 des->mask_av[3][1][2] = D011;
00245 des->mask_av[3][1][3] = D111;
00246 des->mask_av[3][1][4] = D211;
00247 des->mask_av[3][2][0] = D201;
00248 des->mask_av[3][2][1] = D101;
00249 des->mask_av[3][2][2] = D001;
00250 des->mask_av[3][2][3] = D101;
00251 des->mask_av[3][2][4] = D201;
00252 des->mask_av[3][3][0] = D211;
00253 des->mask_av[3][3][1] = D111;
00254 des->mask_av[3][3][2] = D011;
00255 des->mask_av[3][3][3] = D111;
00256 des->mask_av[3][3][4] = D211;
00257 des->mask_av[3][4][0] = D221;
00258 des->mask_av[3][4][1] = D121;
00259 des->mask_av[3][4][2] = D021;
00260 des->mask_av[3][4][3] = D121;
00261 des->mask_av[3][4][4] = D221;
00262
00263 des->mask_av[4][0][0] = 2*D111;
00264 des->mask_av[4][0][1] = D122;
00265 des->mask_av[4][0][2] = 2*D011;
00266 des->mask_av[4][0][3] = D122;
00267 des->mask_av[4][0][4] = 2*D111;
00268 des->mask_av[4][1][0] = D212;
00269 des->mask_av[4][1][1] = D112;
00270 des->mask_av[4][1][2] = D012;
00271 des->mask_av[4][1][3] = D112;
00272 des->mask_av[4][1][4] = D212;
00273 des->mask_av[4][2][0] = 2*D101;
00274 des->mask_av[4][2][1] = D102;
00275 des->mask_av[4][2][2] = 2*D001;
00276 des->mask_av[4][2][3] = D102;
00277 des->mask_av[4][2][4] = 2*D101;
00278 des->mask_av[4][3][0] = D212;
00279 des->mask_av[4][3][1] = D112;
00280 des->mask_av[4][3][2] = D012;
00281 des->mask_av[4][3][3] = D112;
00282 des->mask_av[4][3][4] = D212;
00283 des->mask_av[4][4][0] = 2*D111;
00284 des->mask_av[4][4][1] = D122;
00285 des->mask_av[4][4][2] = 2*D011;
00286 des->mask_av[4][4][3] = D122;
00287 des->mask_av[4][4][4] = 2*D111;
00288 printf("des->mask_av[0][0][0]=%d\n", des->mask_av[0][0][0]);
00289
00290 }
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300 void im_distance_555(carte_distance3d_t* des, ima3Du4 * ima)
00301 {
00302
00303 int i,j,k;
00304 int valint;
00305 unsigned int maxdist;
00306 char afficher;
00307 unsigned long int s,min;
00308 int N,M,res;
00309
00310
00311 unsigned int ****im;
00312
00313 im=&(ima->data);
00314 res = ima->dimz - 5;
00315 N = ima->dimy - 5;
00316 M = ima->dimx -5;
00317
00318
00319
00320
00321 printf("im_distance: parcours avant des->mask_av[0][0][0]=%d\n", des->mask_av[0][0][0]);
00322 for(i=2;i<res+2;i++)
00323 for(j=2;j<N+2;j++)
00324 for(k=2;k<M+2;k++)
00325 {
00326
00327 min = INFINI;
00328 s = 0;
00329
00330 s = (*im)[i-2][j-2][k-2] + des->mask_av[0][0][0];
00331 if(s<min) min = s;
00332 s = (*im)[i-2][j-2][k-1] + des->mask_av[0][0][1];
00333 if(s<min) min = s;
00334 s = (*im)[i-2][j-2][k] + des->mask_av[0][0][2];
00335 if(s<min) min = s;
00336 s = (*im)[i-2][j-2][k+1] + des->mask_av[0][0][3];
00337 if(s<min) min = s;
00338 s = (*im)[i-2][j-2][k+2] + des->mask_av[0][0][4];
00339
00340 s = (*im)[i-2][j-1][k-2] + des->mask_av[0][1][0];
00341 if(s<min) min = s;
00342 s = (*im)[i-2][j-1][k-1] + des->mask_av[0][1][1];
00343 if(s<min) min = s;
00344 s = (*im)[i-2][j-1][k] + des->mask_av[0][1][2];
00345 if(s<min) min = s;
00346 s = (*im)[i-2][j-1][k+1] + des->mask_av[0][1][3];
00347 if(s<min) min = s;
00348 s = (*im)[i-2][j-1][k+2] + des->mask_av[0][1][4];
00349
00350 s = (*im)[i-2][j][k-2] + des->mask_av[0][2][0];
00351 if(s<min) min = s;
00352 s = (*im)[i-2][j][k-1] + des->mask_av[0][2][1];
00353 if(s<min) min = s;
00354 s = (*im)[i-2][j][k] + des->mask_av[0][2][2];
00355 if(s<min) min = s;
00356 s = (*im)[i-2][j][k+1] + des->mask_av[0][2][3];
00357 if(s<min) min = s;
00358 s = (*im)[i-2][j][k+2] + des->mask_av[0][2][4];
00359
00360 s = (*im)[i-2][j+1][k-2] + des->mask_av[0][3][0];
00361 if(s<min) min = s;
00362 s = (*im)[i-2][j+1][k-1] + des->mask_av[0][3][1];
00363 if(s<min) min = s;
00364 s = (*im)[i-2][j+1][k] + des->mask_av[0][3][2];
00365 if(s<min) min = s;
00366 s = (*im)[i-2][j+1][k+1] + des->mask_av[0][3][3];
00367 if(s<min) min = s;
00368 s = (*im)[i-2][j+1][k+2] + des->mask_av[0][3][4];
00369
00370 s = (*im)[i-2][j+2][k-2] + des->mask_av[0][4][0];
00371 if(s<min) min = s;
00372 s = (*im)[i-2][j+2][k-1] + des->mask_av[0][4][1];
00373 if(s<min) min = s;
00374 s = (*im)[i-2][j+2][k] + des->mask_av[0][4][2];
00375 if(s<min) min = s;
00376 s = (*im)[i-2][j+2][k+1] + des->mask_av[0][4][3];
00377 if(s<min) min = s;
00378 s = (*im)[i-2][j+2][k+2] + des->mask_av[0][4][4];
00379
00380
00381 s = (*im)[i-1][j-2][k-2] + des->mask_av[1][0][0];
00382 if(s<min) min = s;
00383 s = (*im)[i-1][j-2][k-1] + des->mask_av[1][0][1];
00384 if(s<min) min = s;
00385 s = (*im)[i-1][j-2][k] + des->mask_av[1][0][2];
00386 if(s<min) min = s;
00387 s = (*im)[i-1][j-2][k+1] + des->mask_av[1][0][3];
00388 if(s<min) min = s;
00389 s = (*im)[i-1][j-2][k+2] + des->mask_av[1][0][4];
00390
00391 s = (*im)[i-1][j-1][k-2] + des->mask_av[1][1][0];
00392 if(s<min) min = s;
00393 s = (*im)[i-1][j-1][k-1] + des->mask_av[1][1][1];
00394 if(s<min) min = s;
00395 s = (*im)[i-1][j-1][k] + des->mask_av[1][1][2];
00396 if(s<min) min = s;
00397 s = (*im)[i-1][j-1][k+1] + des->mask_av[1][1][3];
00398 if(s<min) min = s;
00399 s = (*im)[i-1][j-1][k+2] + des->mask_av[1][1][4];
00400
00401 s = (*im)[i-1][j][k-2] + des->mask_av[1][2][0];
00402 if(s<min) min = s;
00403 s = (*im)[i-1][j][k-1] + des->mask_av[1][2][1];
00404 if(s<min) min = s;
00405 s = (*im)[i-1][j][k] + des->mask_av[1][2][2];
00406 if(s<min) min = s;
00407 s = (*im)[i-1][j][k+1] + des->mask_av[1][2][3];
00408 if(s<min) min = s;
00409 s = (*im)[i-1][j][k+2] + des->mask_av[1][2][4];
00410
00411 s = (*im)[i-1][j+1][k-2] + des->mask_av[1][3][0];
00412 if(s<min) min = s;
00413 s = (*im)[i-1][j+1][k-1] + des->mask_av[1][3][1];
00414 if(s<min) min = s;
00415 s = (*im)[i-1][j+1][k] + des->mask_av[1][3][2];
00416 if(s<min) min = s;
00417 s = (*im)[i-1][j+1][k+1] + des->mask_av[1][3][3];
00418 if(s<min) min = s;
00419 s = (*im)[i-1][j+1][k+2] + des->mask_av[1][3][4];
00420
00421 s = (*im)[i-1][j+2][k-2] + des->mask_av[1][4][0];
00422 if(s<min) min = s;
00423 s = (*im)[i-1][j+2][k-1] + des->mask_av[1][4][1];
00424 if(s<min) min = s;
00425 s = (*im)[i-1][j+2][k] + des->mask_av[1][4][2];
00426 if(s<min) min = s;
00427 s = (*im)[i-1][j+2][k+1] + des->mask_av[1][4][3];
00428 if(s<min) min = s;
00429 s = (*im)[i-1][j+2][k+2] + des->mask_av[1][4][4];
00430
00431
00432 s = (*im)[i][j-2][k-2] + des->mask_av[2][0][0];
00433 if(s<min) min = s;
00434 s = (*im)[i][j-2][k-1] + des->mask_av[2][0][1];
00435 if(s<min) min = s;
00436 s = (*im)[i][j-2][k] + des->mask_av[2][0][2];
00437 if(s<min) min = s;
00438 s = (*im)[i][j-2][k+1] + des->mask_av[2][0][3];
00439 if(s<min) min = s;
00440 s = (*im)[i][j-2][k+2] + des->mask_av[2][0][4];
00441
00442 s = (*im)[i][j-1][k-2] + des->mask_av[2][1][0];
00443 if(s<min) min = s;
00444 s = (*im)[i][j-1][k-1] + des->mask_av[2][1][1];
00445 if(s<min) min = s;
00446 s = (*im)[i][j-1][k] + des->mask_av[2][1][2];
00447 if(s<min) min = s;
00448 s = (*im)[i][j-1][k+1] + des->mask_av[2][1][3];
00449 if(s<min) min = s;
00450 s = (*im)[i][j-1][k+2] + des->mask_av[2][1][4];
00451
00452 s = (*im)[i][j][k-2] + des->mask_av[2][2][0];
00453 if(s<min) min = s;
00454 s = (*im)[i][j][k-1] + des->mask_av[2][2][1];
00455 if(s<min) min = s;
00456 s = (*im)[i][j][k] + des->mask_av[2][2][2];
00457 if(s<min) min = s;
00458
00459 (*im)[i][j][k] = min;
00460 }
00461 printf("fin parcour avant\n");
00462
00463
00464 maxdist = 0;
00465 for(i= res+1; i> 1;i--)
00466 for(j= N+1; j> 1;j--)
00467 for(k= M+1; k> 1;k--)
00468 {
00469 min = INFINI; s = 0;
00470
00471
00472 s = (*im)[i][j][k] + des->mask_av[2][2][2];
00473 if(s<min) min = s;
00474 s = (*im)[i][j][k+1] + des->mask_av[2][2][3];
00475 if(s<min) min = s;
00476 s = (*im)[i][j][k+2] + des->mask_av[2][2][4];
00477
00478 s = (*im)[i][j+1][k-2] + des->mask_av[2][3][0];
00479 if(s<min) min = s;
00480 s = (*im)[i][j+1][k-1] + des->mask_av[2][3][1];
00481 if(s<min) min = s;
00482 s = (*im)[i][j+1][k] + des->mask_av[2][3][2];
00483 if(s<min) min = s;
00484 s = (*im)[i][j+1][k+1] + des->mask_av[2][3][3];
00485 if(s<min) min = s;
00486 s = (*im)[i][j+1][k+2] + des->mask_av[2][3][4];
00487
00488 s = (*im)[i][j+2][k-2] + des->mask_av[2][4][0];
00489 if(s<min) min = s;
00490 s = (*im)[i][j+2][k-1] + des->mask_av[2][4][1];
00491 if(s<min) min = s;
00492 s = (*im)[i][j+2][k] + des->mask_av[2][4][2];
00493 if(s<min) min = s;
00494 s = (*im)[i][j+2][k+1] + des->mask_av[2][4][3];
00495 if(s<min) min = s;
00496 s = (*im)[i][j+2][k+2] + des->mask_av[2][4][4];
00497
00498
00499 s = (*im)[i+1][j-2][k-2] + des->mask_av[3][0][0];
00500 if(s<min) min = s;
00501 s = (*im)[i+1][j-2][k-1] + des->mask_av[3][0][1];
00502 if(s<min) min = s;
00503 s = (*im)[i+1][j-2][k] + des->mask_av[3][0][2];
00504 if(s<min) min = s;
00505 s = (*im)[i+1][j-2][k+1] + des->mask_av[3][0][3];
00506 if(s<min) min = s;
00507 s = (*im)[i+1][j-2][k+2] + des->mask_av[3][0][4];
00508
00509 s = (*im)[i+1][j-1][k-2] + des->mask_av[3][1][0];
00510 if(s<min) min = s;
00511 s = (*im)[i+1][j-1][k-1] + des->mask_av[3][1][1];
00512 if(s<min) min = s;
00513 s = (*im)[i+1][j-1][k] + des->mask_av[3][1][2];
00514 if(s<min) min = s;
00515 s = (*im)[i+1][j-1][k+1] + des->mask_av[3][1][3];
00516 if(s<min) min = s;
00517 s = (*im)[i+1][j-1][k+2] + des->mask_av[3][1][4];
00518
00519 s = (*im)[i+1][j][k-2] + des->mask_av[3][2][0];
00520 if(s<min) min = s;
00521 s = (*im)[i+1][j][k-1] + des->mask_av[3][2][1];
00522 if(s<min) min = s;
00523 s = (*im)[i+1][j][k] + des->mask_av[1][3][2];
00524 if(s<min) min = s;
00525 s = (*im)[i+1][j][k+1] + des->mask_av[3][2][3];
00526 if(s<min) min = s;
00527 s = (*im)[i+1][j][k+2] + des->mask_av[3][2][4];
00528
00529 s = (*im)[i+1][j+1][k-2] + des->mask_av[3][3][0];
00530 if(s<min) min = s;
00531 s = (*im)[i+1][j+1][k-1] + des->mask_av[3][3][1];
00532 if(s<min) min = s;
00533 s = (*im)[i+1][j+1][k] + des->mask_av[3][3][2];
00534 if(s<min) min = s;
00535 s = (*im)[i+1][j+1][k+1] + des->mask_av[3][3][3];
00536 if(s<min) min = s;
00537 s = (*im)[i+1][j+1][k+2] + des->mask_av[3][3][4];
00538
00539 s = (*im)[i+1][j+2][k-2] + des->mask_av[3][4][0];
00540 if(s<min) min = s;
00541 s = (*im)[i+1][j+2][k-1] + des->mask_av[3][4][1];
00542 if(s<min) min = s;
00543 s = (*im)[i+1][j+2][k] + des->mask_av[3][4][2];
00544 if(s<min) min = s;
00545 s = (*im)[i+1][j+2][k+1] + des->mask_av[3][4][3];
00546 if(s<min) min = s;
00547 s = (*im)[i+1][j+2][k+2] + des->mask_av[3][4][4];
00548
00549
00550 s = (*im)[i+2][j-2][k-2] + des->mask_av[4][0][0];
00551 if(s<min) min = s;
00552 s = (*im)[i+2][j-2][k-1] + des->mask_av[4][0][1];
00553 if(s<min) min = s;
00554 s = (*im)[i+2][j-2][k] + des->mask_av[4][0][2];
00555 if(s<min) min = s;
00556 s = (*im)[i+2][j-2][k+1] + des->mask_av[4][0][3];
00557 if(s<min) min = s;
00558 s = (*im)[i+2][j-2][k+2] + des->mask_av[4][0][4];
00559
00560 s = (*im)[i+2][j-1][k-2] + des->mask_av[4][1][0];
00561 if(s<min) min = s;
00562 s = (*im)[i+2][j-1][k-1] + des->mask_av[4][1][1];
00563 if(s<min) min = s;
00564 s = (*im)[i+2][j-1][k] + des->mask_av[4][1][2];
00565 if(s<min) min = s;
00566 s = (*im)[i+2][j-1][k+1] + des->mask_av[4][1][3];
00567 if(s<min) min = s;
00568 s = (*im)[i+2][j-1][k+2] + des->mask_av[4][1][4];
00569
00570 s = (*im)[i+2][j][k-2] + des->mask_av[4][2][0];
00571 if(s<min) min = s;
00572 s = (*im)[i+2][j][k-1] + des->mask_av[4][2][1];
00573 if(s<min) min = s;
00574 s = (*im)[i+2][j][k] + des->mask_av[4][2][2];
00575 if(s<min) min = s;
00576 s = (*im)[i+2][j][k+1] + des->mask_av[4][2][3];
00577 if(s<min) min = s;
00578 s = (*im)[i+2][j][k+2] + des->mask_av[4][2][4];
00579
00580 s = (*im)[i+2][j+1][k-2] + des->mask_av[4][3][0];
00581 if(s<min) min = s;
00582 s = (*im)[i+2][j+1][k-1] + des->mask_av[4][3][1];
00583 if(s<min) min = s;
00584 s = (*im)[i+2][j+1][k] + des->mask_av[4][3][2];
00585 if(s<min) min = s;
00586 s = (*im)[i+2][j+1][k+1] + des->mask_av[4][3][3];
00587 if(s<min) min = s;
00588 s = (*im)[i+2][j+1][k+2] + des->mask_av[4][3][4];
00589
00590 s = (*im)[i+2][j+2][k-2] + des->mask_av[4][4][0];
00591 if(s<min) min = s;
00592 s = (*im)[i+2][j+2][k-1] + des->mask_av[4][4][1];
00593 if(s<min) min = s;
00594 s = (*im)[i+2][j+2][k] + des->mask_av[4][4][2];
00595 if(s<min) min = s;
00596 s = (*im)[i+2][j+2][k+1] + des->mask_av[4][4][3];
00597 if(s<min) min = s;
00598 s = (*im)[i+2][j+2][k+2] + des->mask_av[4][4][4];
00599
00600 (*im)[i][j][k] = min;
00601 if(min > (maxdist)) maxdist=min;
00602 }
00603
00604 }
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00627 int carte_distance3d_init(carte_distance3d_t* des){
00628
00629 calculer_masque( des);
00630
00631 }
00632
00633
00634
00635
00636
00637
00638
00648 int carte_distance3d_calc(carte_distance3d_t* des, ima3Du4* ima){
00649
00650
00651 im_distance_555( des, ima);
00652
00653 }
00654
00655
00656
00657