ldistance3d.c

Go to the documentation of this file.
00001 /*
00002 *    Copyright (c) 2007. The BATI team. All right reserved.
00003 *
00004 *    This file is part of BATI library.
00005 *
00006 *    BATI library is free software: you can redistribute it and/or modify
00007 *    it under the terms of the GNU General Public License as published by
00008 *    the Free Software Foundation, either version 3 of the License, or
00009 *    (at your option) any later version.
00010 *
00011 *    BATI library  is distributed in the hope that it will be useful,
00012 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 *    GNU General Public License for more details.
00015 *
00016 *    You should have received a copy of the GNU General Public License
00017 *    along with BATI library.  If not, see <http://www.gnu.org/licenses/>.
00018 */
00031 #include "distance3d.h"
00032 #include <stdio.h>
00033 #include <math.h>
00034 
00035 
00036 #define INFINI  4294999999;/*2^32-1 car distance calculer sur 32bits maxi*/
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 /* dans cette partie les indices: i,j,k sont pris suivant les axes ****/
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         /* calcul des coefficients entiers */
00128         //printf("Meilleure valeur de N pour (L=H=P=1) : 67\n");
00129         //implique 6% d'erreur avec un masque 3*3*3
00130         //printf("Entrer le facteur multiplicatif N (entier): ");
00131         //scanf("%d",&N);
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         /* calcul du masque avant */
00154         /*   prondeur Z = 0 */
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         /* profondeur Z = 1 */
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         /*    profondeur Z = 2 */
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         /* calcul du masque retour */
00222         /*    profondeur Z = 2 */
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         /* profondeur Z = 3 */
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         /*   prondeur Z = 4 */
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 } /* fin calculer_masque */
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         //unsigned int  ***mask_av;
00310         //unsigned int  mask_av[5][5][5];
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         //mask_av = des->mask_av;
00318 
00319 
00320         /* Parcour avant */
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               //printf("i=%d, j=%d, k%d val=%d \n", i, j, k, des->mask_av[0][0][0]);
00327                         min = INFINI; 
00328                         s = 0;
00329                         /*** profondeur Z = 0 ****/
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                         /*** profondeur Z = 1 ****/
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                         /*** profondeur Z = 2 ****/
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         /* Parcours arriere */
00463 /*      printf("im_distance: parcours arriere \n"); */
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                         /*** profondeur Z = 2 ****/
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                         /*** profondeur Z = 3 ****/
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                         /* ** profondeur Z = 4 ****/
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 } /* fin im_distance_555 */
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 

Generated on Tue Apr 22 13:31:06 2008 for volume by  doxygen 1.5.3