[1] | 1 | /*!\file: HoleFillerx.cpp
|
---|
| 2 | * \brief plug missing values of a double* array, using interpolation techniques. This
|
---|
| 3 | * is an adaptation of Dr. Crippen's routine (Jet Propulsion Lab, see HoleFillerCrippen.c
|
---|
| 4 | * for more details.
|
---|
| 5 | */
|
---|
| 6 |
|
---|
| 7 | #include "./HoleFillerx.h"
|
---|
| 8 |
|
---|
| 9 | #include <stdio.h>
|
---|
| 10 | #include <time.h>
|
---|
| 11 | #include "../shared/shared.h"
|
---|
| 12 |
|
---|
| 13 | int HoleFillerx(double** pimageout,double* image, int lines,int samps,int smooth){
|
---|
| 14 |
|
---|
| 15 | FILE *fp1;
|
---|
| 16 | unsigned long filesize;
|
---|
| 17 | long infinit;
|
---|
| 18 | double temp;
|
---|
[1454] | 19 | long i, j, k, l, ii, jj, bytes;
|
---|
[1] | 20 | long iii, jjj;
|
---|
| 21 | long count, test, prevlines, prevpix, test1, test2, thresh,counter;
|
---|
| 22 | long bell, cycles, leftovers;
|
---|
| 23 | float howlong;
|
---|
| 24 | float nsteps, ssteps, wsteps, esteps;
|
---|
| 25 | float nwsteps, nesteps, swsteps, sesteps;
|
---|
| 26 | float north, south, east, west;
|
---|
| 27 | float nw, sw, ne, se, elev, range;
|
---|
| 28 | float nnesteps, enesteps, esesteps, ssesteps;
|
---|
| 29 | float sswsteps, wswsteps, wnwsteps, nnwsteps;
|
---|
| 30 | float nne, ene, ese, sse;
|
---|
| 31 | float ssw, wsw, wnw, nnw;
|
---|
| 32 | float sum;
|
---|
| 33 |
|
---|
| 34 | time_t t1, t2;
|
---|
| 35 |
|
---|
| 36 | /*output: */
|
---|
| 37 | double* imageout=NULL;
|
---|
| 38 |
|
---|
| 39 | double* image2=NULL;
|
---|
| 40 | double* image3=NULL;
|
---|
| 41 | double* image4=NULL;
|
---|
| 42 |
|
---|
| 43 | /*Added to original routine: */
|
---|
| 44 | int imageoutsize;
|
---|
| 45 |
|
---|
[1904] | 46 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 47 | if ( smooth == 1 ){
|
---|
| 48 | printf("Data patches will be SMOOTHED. \n");
|
---|
| 49 | }
|
---|
| 50 | if ( smooth == 0 ){
|
---|
| 51 | printf("Data patches will NOT be smoothed. \n");
|
---|
| 52 | }
|
---|
| 53 | #endif
|
---|
| 54 |
|
---|
| 55 | /*^^^^^^^^^^^^^ Remove pixels close to the holes ^^^^^^^^^^^^^*/
|
---|
| 56 | image2 = (double*) xmalloc( lines*samps*sizeof(double));
|
---|
| 57 | memcpy(image2,image,lines*samps*sizeof(double));
|
---|
| 58 |
|
---|
| 59 | for ( i = 0; i < lines; i++ ){
|
---|
| 60 | for ( j = 0; j < samps; j++ ){
|
---|
| 61 | if ( *(image+i*samps+j) == 0 ){
|
---|
[1454] | 62 | if ( (j > 3) && (j < samps-4) && (i > 3) && (i < lines-4)){
|
---|
| 63 | for ( k = 0; k < 4; k++ ){
|
---|
| 64 | for ( l = 0; l < 4; l++ ){
|
---|
| 65 | *(image2+samps*(i+k)+j+l)=0;
|
---|
| 66 | *(image2+samps*(i-k)+j+l)=0;
|
---|
| 67 | *(image2+samps*(i+k)+j-l)=0;
|
---|
| 68 | *(image2+samps*(i-k)+j-l)=0;
|
---|
| 69 |
|
---|
| 70 | }
|
---|
| 71 | }
|
---|
[1] | 72 | }
|
---|
| 73 | }
|
---|
| 74 | }
|
---|
| 75 | }
|
---|
| 76 |
|
---|
| 77 | image3 = (double*) xmalloc( lines*samps*sizeof(double));
|
---|
| 78 | memcpy(image3,image2,lines*samps*sizeof(double));
|
---|
| 79 |
|
---|
| 80 | count += 2;
|
---|
| 81 | #ifdef _DEBUG2_
|
---|
| 82 | counter=0;
|
---|
| 83 | for ( i = 0; i < lines; i++ ) {
|
---|
| 84 | for ( j = 0; j < samps; j++ ){
|
---|
| 85 | if ( *(image2+i*samps+j) != 0 ) {
|
---|
| 86 | counter++;
|
---|
| 87 | }
|
---|
| 88 | }
|
---|
| 89 | }
|
---|
| 90 | printf( "\n" );
|
---|
| 91 | printf("Number of zeroes remaining: %10ld",lines*samps-counter);
|
---|
| 92 | fflush( stdout );
|
---|
| 93 | #endif
|
---|
| 94 |
|
---|
[1904] | 95 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 96 | printf( "\n" );
|
---|
| 97 | printf( "Iterations %5ld and %5ld.", count-1, count );
|
---|
| 98 | fflush( stdout );
|
---|
| 99 | #endif
|
---|
| 100 | goto afterfirst2;
|
---|
| 101 |
|
---|
| 102 | again2:
|
---|
| 103 |
|
---|
| 104 | count += 2;
|
---|
| 105 |
|
---|
| 106 | #ifdef _DEBUG2_
|
---|
| 107 | counter=0;
|
---|
| 108 | for ( i = 0; i < lines; i++ ) {
|
---|
| 109 | for ( j = 0; j < samps; j++ ){
|
---|
| 110 | if ( *(image2+i*samps+j) != 0 ) {
|
---|
| 111 | counter++;
|
---|
| 112 | }
|
---|
| 113 | }
|
---|
| 114 | }
|
---|
| 115 | // n u m b e r o f z e r o e s r e m a i n i n g : 1 2 3 4 5 6 7 8 9 10
|
---|
| 116 | printf( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
|
---|
| 117 | printf("Number of zeroes remaining: %10ld",lines*samps-counter);
|
---|
| 118 | fflush( stdout );
|
---|
| 119 | #endif
|
---|
| 120 |
|
---|
[1904] | 121 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 122 | printf( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
|
---|
| 123 | printf( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
|
---|
| 124 | printf( "Iterations %5ld and %5ld.", count-1, count );
|
---|
| 125 | fflush( stdout );
|
---|
| 126 | #endif
|
---|
| 127 |
|
---|
| 128 | afterfirst2:
|
---|
| 129 |
|
---|
| 130 | /***************** FIRST RUN *********************/
|
---|
| 131 | /*
|
---|
| 132 | fprintf ( stdout, "First Application: " ); time(&t2); printf( ctime(&t2) );
|
---|
| 133 | */
|
---|
| 134 | for ( i = 0; i < lines; i++ ){
|
---|
| 135 | for ( j = 0; j < samps; j++ ){
|
---|
| 136 | if ( *(image2+i*samps+j) != 0 ){
|
---|
| 137 | *(image3+samps*i+j) = *(image2+i*samps+j);
|
---|
| 138 | continue;
|
---|
| 139 | }
|
---|
| 140 |
|
---|
| 141 | /* Count All Neighbors Test */
|
---|
| 142 | test = 0;
|
---|
| 143 | for ( ii = i-1; ii < i+2; ii++ ){
|
---|
| 144 | for ( jj = j-1; jj < j+2; jj++ ){
|
---|
| 145 | if (( ii < 0 ) || ( ii >= lines )) continue;
|
---|
| 146 | if (( jj < 0 ) || ( jj >= samps )) continue;
|
---|
| 147 | if ( *(image2+ii*samps+jj) != 0 ) test += 1;
|
---|
| 148 | }
|
---|
| 149 | }
|
---|
| 150 | if ( test < 3 ){
|
---|
| 151 | *(image3+samps*i+j) = 0;
|
---|
| 152 | continue;
|
---|
| 153 | }
|
---|
| 154 |
|
---|
| 155 | /* For void edge pixels: */
|
---|
| 156 |
|
---|
| 157 | nsteps = 0.0; ssteps = 0.0; esteps = 0.0; wsteps = 0.0;
|
---|
| 158 | nwsteps = 0.0; nesteps = 0.0; swsteps = 0.0; sesteps = 0.0;
|
---|
| 159 | north = 0.0; south = 0.0; east = 0.0; west = 0.0;
|
---|
| 160 | nw = 0.0; ne = 0.0; sw = 0.0; se = 0.0;
|
---|
| 161 |
|
---|
| 162 | nnesteps = 0.0; enesteps = 0.0; esesteps = 0.0; ssesteps = 0.0;
|
---|
| 163 | sswsteps = 0.0; wswsteps = 0.0; wnwsteps = 0.0; nnwsteps = 0.0;
|
---|
| 164 | nne = 0.0; ene = 0.0; ese = 0.0; sse = 0.0;
|
---|
| 165 | ssw = 0.0; wsw = 0.0; wnw = 0.0; nnw = 0.0;
|
---|
| 166 |
|
---|
| 167 |
|
---|
| 168 | /** NSEW **/
|
---|
| 169 | for ( ii = i - 1; ii >= 0; ii-- ){ /* North */
|
---|
| 170 | if ( ii <= 0 ) { north = 0; nsteps = 0; break;}
|
---|
| 171 | if ( *(image2+ii*samps+j) != 0 ){ north = *(image2+ii*samps+j); nsteps = i - ii; break;}
|
---|
| 172 | }
|
---|
| 173 |
|
---|
| 174 | for ( ii = i + 1; ii < lines; ii++ ){ /* South */
|
---|
| 175 | if ( ii >= lines-1 ){ south = 0; ssteps = 0; break;}
|
---|
| 176 | if ( *(image2+ii*samps+j) != 0 ){ south = *(image2+ii*samps+j); ssteps = ii - i; break;}
|
---|
| 177 | }
|
---|
| 178 |
|
---|
| 179 | for ( jj = j - 1; jj >= 0; jj-- ){ /* West */
|
---|
| 180 | if ( jj <= 0 ) { west = 0; wsteps = 0; break;}
|
---|
| 181 | if ( *(image2+i*samps+jj) != 0 ){ west = *(image2+i*samps+jj); wsteps = j - jj; break;}
|
---|
| 182 | }
|
---|
| 183 |
|
---|
| 184 | for ( jj = j + 1; jj < samps; jj++ ){ /* East */
|
---|
| 185 | if ( jj >= samps-1 ){ east = 0; esteps = 0; break;}
|
---|
| 186 | if ( *(image2+i*samps+jj) != 0 ){ east = *(image2+i*samps+jj); esteps = jj - j; break;}
|
---|
| 187 | }
|
---|
| 188 |
|
---|
| 189 |
|
---|
| 190 | /** Diagonals **/
|
---|
| 191 | /* Southeast */
|
---|
| 192 | for ( k = 1; k < infinit; k++ ){
|
---|
| 193 | ii = i + k; jj = j + k;
|
---|
| 194 | if (( ii == lines ) || ( jj == samps )){ se = 0; sesteps = 0; break;}
|
---|
| 195 | if ( *(image2+ii*samps+jj) != 0 ){ se = *(image2+ii*samps+jj); sesteps = 1.4142 * k; break;}
|
---|
| 196 | }
|
---|
| 197 |
|
---|
| 198 | /* Northeast */
|
---|
| 199 | for ( k = 1; k < infinit; k++ ){
|
---|
| 200 | ii = i - k; jj = j + k;
|
---|
| 201 | if (( ii == -1 ) || ( jj == samps )){ ne = 0; nesteps = 0; break;}
|
---|
| 202 | if ( *(image2+ii*samps+jj) != 0 ){ ne = *(image2+ii*samps+jj); nesteps = 1.4142 * k; break;}
|
---|
| 203 | }
|
---|
| 204 |
|
---|
| 205 | /* Northwest */
|
---|
| 206 | for ( k = 1; k < infinit; k++ ){
|
---|
| 207 | ii = i - k; jj = j - k;
|
---|
| 208 | if (( ii == -1 ) || ( jj == -1 )){ nw = 0; nwsteps = 0; break;}
|
---|
| 209 | if ( *(image2+ii*samps+jj) != 0 ){ nw = *(image2+ii*samps+jj); nwsteps = 1.4142 * k; break;}
|
---|
| 210 | }
|
---|
| 211 |
|
---|
| 212 | /* Southwest */
|
---|
| 213 | for ( k = 1; k < infinit; k++ ){
|
---|
| 214 | ii = i + k; jj = j - k;
|
---|
| 215 | if (( ii == lines ) || ( jj == -1 )){ sw = 0; swsteps = 0; break;}
|
---|
| 216 | if ( *(image2+ii*samps+jj) != 0 ){ sw = *(image2+ii*samps+jj); swsteps = 1.4142 * k; break;}
|
---|
| 217 | }
|
---|
| 218 |
|
---|
| 219 | /** Other 8 **/
|
---|
| 220 | /* NNE */
|
---|
| 221 | for ( k = 1; k < infinit; k++ ){
|
---|
| 222 | ii = i - (k*2); jj = j + k;
|
---|
| 223 | if (( ii <= -1 ) || ( jj >= samps )){ nne = 0; nnesteps = 0; break;}
|
---|
| 224 | if ( *(image2+ii*samps+jj) != 0 ){ nne = *(image2+ii*samps+jj); nnesteps = 2.2361 * k; break;}
|
---|
| 225 | }
|
---|
| 226 |
|
---|
| 227 | /* ENE */
|
---|
| 228 | for ( k = 1; k < infinit; k++ ){
|
---|
| 229 | ii = i - k; jj = j + (k*2);
|
---|
| 230 | if (( ii <= -1 ) || ( jj >= samps )){ ene = 0; enesteps = 0; break;}
|
---|
| 231 | if ( *(image2+ii*samps+jj) != 0 ){ ene = *(image2+ii*samps+jj); enesteps = 2.2361 * k; break;}
|
---|
| 232 | }
|
---|
| 233 |
|
---|
| 234 | /* ESE */
|
---|
| 235 | for ( k = 1; k < infinit; k++ ){
|
---|
| 236 | ii = i + k; jj = j + (k*2);
|
---|
| 237 | if (( ii >= lines ) || ( jj >= samps )){ ese = 0; esesteps = 0; break;}
|
---|
| 238 | if ( *(image2+ii*samps+jj) != 0 ){ ese = *(image2+ii*samps+jj); esesteps = 2.2361 * k; break;}
|
---|
| 239 | }
|
---|
| 240 |
|
---|
| 241 | /* SSE */
|
---|
| 242 | for ( k = 1; k < infinit; k++ ){
|
---|
| 243 | ii = i + (k*2); jj = j + k;
|
---|
| 244 | if (( ii >= lines ) || ( jj >= samps )){ sse = 0; ssesteps = 0; break;}
|
---|
| 245 | if ( *(image2+ii*samps+jj) != 0 ){ sse = *(image2+ii*samps+jj); ssesteps = 2.2361 * k; break;}
|
---|
| 246 | }
|
---|
| 247 |
|
---|
| 248 | /* SSW */
|
---|
| 249 | for ( k = 1; k < infinit; k++ ){
|
---|
| 250 | ii = i + (k*2); jj = j - k;
|
---|
| 251 | if (( ii >= lines ) || ( jj <= -1 )){ ssw = 0; sswsteps = 0; break;}
|
---|
| 252 | if ( *(image2+ii*samps+jj) != 0 ){ ssw = *(image2+ii*samps+jj); sswsteps = 2.2361 * k; break;}
|
---|
| 253 | }
|
---|
| 254 |
|
---|
| 255 | /* WSW */
|
---|
| 256 | for ( k = 1; k < infinit; k++ ){
|
---|
| 257 | ii = i + k; jj = j - (k*2);
|
---|
| 258 | if (( ii >= lines ) || ( jj <= -1 )){ wsw = 0; wswsteps = 0; break;}
|
---|
| 259 | if ( *(image2+ii*samps+jj) != 0 ){ wsw = *(image2+ii*samps+jj); wswsteps = 2.2361 * k; break;}
|
---|
| 260 | }
|
---|
| 261 |
|
---|
| 262 | /* WNW */
|
---|
| 263 | for ( k = 1; k < infinit; k++ ){
|
---|
| 264 | ii = i - k; jj = j - (k*2);
|
---|
| 265 | if (( ii <= -1 ) || ( jj <= -1 )){ wnw = 0; wnwsteps = 0; break;}
|
---|
| 266 | if ( *(image2+ii*samps+jj) != 0 ){ wnw = *(image2+ii*samps+jj); wnwsteps = 2.2361 * k; break;}
|
---|
| 267 | }
|
---|
| 268 |
|
---|
| 269 | /* NNW */
|
---|
| 270 | for ( k = 1; k < infinit; k++ ){
|
---|
| 271 | ii = i - (k*2); jj = j - k;
|
---|
| 272 | if (( ii <= -1 ) || ( jj <= -1 )){ nnw = 0; nnwsteps = 0; break;}
|
---|
| 273 | if ( *(image2+ii*samps+jj) != 0 ){ nnw = *(image2+ii*samps+jj); nnwsteps = 2.2361 * k; break;}
|
---|
| 274 | }
|
---|
| 275 |
|
---|
| 276 | elev = 0; range = 0;
|
---|
| 277 | /*NSEW*/
|
---|
| 278 | if ( nsteps > 0.5 ){ elev += north / nsteps; range += 1.00 / nsteps;}
|
---|
| 279 | if ( ssteps > 0.5 ){ elev += south / ssteps; range += 1.00 / ssteps;}
|
---|
| 280 | if ( esteps > 0.5 ){ elev += east / esteps; range += 1.00 / esteps;}
|
---|
| 281 | if ( wsteps > 0.5 ){ elev += west / wsteps; range += 1.00 / wsteps;}
|
---|
| 282 | /*Diag*/
|
---|
| 283 | if ( nwsteps > 0.5 ){ elev += nw / nwsteps; range += 1.00 / nwsteps;}
|
---|
| 284 | if ( nesteps > 0.5 ){ elev += ne / nesteps; range += 1.00 / nesteps;}
|
---|
| 285 | if ( swsteps > 0.5 ){ elev += sw / swsteps; range += 1.00 / swsteps;}
|
---|
| 286 | if ( sesteps > 0.5 ){ elev += se / sesteps; range += 1.00 / sesteps;}
|
---|
| 287 |
|
---|
| 288 | /*Other 8*/
|
---|
| 289 | if ( nnesteps > 0.5 ){ elev += nne / nnesteps; range += 1.00 / nnesteps;}
|
---|
| 290 | if ( enesteps > 0.5 ){ elev += ene / enesteps; range += 1.00 / enesteps;}
|
---|
| 291 | if ( esesteps > 0.5 ){ elev += ese / esesteps; range += 1.00 / esesteps;}
|
---|
| 292 | if ( ssesteps > 0.5 ){ elev += sse / ssesteps; range += 1.00 / ssesteps;}
|
---|
| 293 | if ( sswsteps > 0.5 ){ elev += ssw / sswsteps; range += 1.00 / sswsteps;}
|
---|
| 294 | if ( wswsteps > 0.5 ){ elev += wsw / wswsteps; range += 1.00 / wswsteps;}
|
---|
| 295 | if ( wnwsteps > 0.5 ){ elev += wnw / wnwsteps; range += 1.00 / wnwsteps;}
|
---|
| 296 | if ( nnwsteps > 0.5 ){ elev += nnw / nnwsteps; range += 1.00 / nnwsteps;}
|
---|
| 297 |
|
---|
| 298 | //temp = ( elev / range ) + 0.5 ;
|
---|
| 299 | temp = ( elev / range );
|
---|
| 300 | //+ 0.5 ;
|
---|
| 301 | //if ( temp > 10000 ) temp = 10000;
|
---|
| 302 | //if ( temp < 0 ) temp = 0;
|
---|
| 303 |
|
---|
| 304 | #ifdef _DEBUG2_
|
---|
| 305 | //printf("%g %g %g \n",temp,elev,range);
|
---|
| 306 | #endif
|
---|
| 307 |
|
---|
| 308 | *(image3+samps*i+j) = temp ;
|
---|
| 309 | }
|
---|
| 310 | }
|
---|
| 311 |
|
---|
| 312 |
|
---|
| 313 |
|
---|
| 314 | for ( i = 0; i < lines; i++ ){
|
---|
| 315 | for ( j = 0; j < samps; j++ ){
|
---|
| 316 | *(image2+samps*i+j)= *(image3+samps*i+j);
|
---|
| 317 | }
|
---|
| 318 | }
|
---|
| 319 |
|
---|
| 320 |
|
---|
| 321 | for ( i = 0; i < lines; i++ ){
|
---|
| 322 | for ( j = 0; j < samps; j++ ){
|
---|
| 323 | if ( *(image2+samps*i+j) == 0 ) goto again2;
|
---|
| 324 | }
|
---|
| 325 | }
|
---|
| 326 |
|
---|
| 327 | if ( smooth == 0 ) goto there2;
|
---|
| 328 |
|
---|
| 329 |
|
---|
| 330 | /************************ SMOOTH THE RESULT ***********************/
|
---|
| 331 |
|
---|
| 332 | image4 = (double*) xmalloc( lines*samps*sizeof(double));
|
---|
| 333 | memcpy(image4,image3,lines*samps*sizeof(double));
|
---|
| 334 |
|
---|
| 335 |
|
---|
| 336 | for ( i = 0; i < lines; i++ ) {
|
---|
| 337 | for ( j = 0; j < samps; j++ ) {
|
---|
| 338 | if ( *(image4+i*samps+j) != 0 ) { *(image3+i*samps+j) = *(image2+i*samps+j) ; continue; }
|
---|
| 339 |
|
---|
| 340 |
|
---|
| 341 | for ( k = 1; k < infinit; k++ ) { /* Find the smallest box size with data */
|
---|
| 342 | for ( ii = i-k; ii <= i+k; ii++ ){
|
---|
| 343 | if ( ii < 0 ) continue;
|
---|
| 344 | if ( ii >= lines ) break;
|
---|
| 345 | for ( jj = j-k; jj <= j+k; jj++ ) {
|
---|
| 346 | if ( jj < 0 ) continue;
|
---|
| 347 | if ( jj >= samps ) continue;
|
---|
| 348 | if ( *(image4+ii*samps+jj) != 0 ) goto k_nowset;
|
---|
| 349 | }
|
---|
| 350 | }
|
---|
| 351 | }
|
---|
| 352 |
|
---|
| 353 | k_nowset:
|
---|
| 354 | k = k / 4; if ( k < 1 ) k = 1; /* Errrrr. Make it fourth size */
|
---|
| 355 | sum = 0;
|
---|
| 356 | for ( ii = i-k; ii <= i+k; ii++ ) {
|
---|
| 357 | if ( ii < 0 ) iii = -1 - ii; else iii = ii;
|
---|
| 358 | if ( ii >= lines ) iii = lines - (ii - lines + 1);
|
---|
| 359 | for ( jj = j-k; jj <= j+k; jj++ ) {
|
---|
| 360 | if ( jj < 0 ) jjj = -1 - jj; else jjj = jj;
|
---|
| 361 | if ( jj >= samps ) jjj = samps - (jj - samps + 1);
|
---|
| 362 | sum += *(image2+samps*iii+jjj) ;
|
---|
| 363 | }
|
---|
| 364 | }
|
---|
| 365 | k = (k*2)+1;
|
---|
| 366 | *(image3+samps*i+j) = ( sum / k / k ) ;//+ 0.5;
|
---|
| 367 | }
|
---|
| 368 |
|
---|
[1904] | 369 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 370 | if ( !(i%100) ){
|
---|
| 371 | fprintf(stdout, "\b\b\b\b\b\b%5ld ", i ); /* Count lines on output screen */
|
---|
| 372 | fflush(stdout);
|
---|
| 373 | }
|
---|
| 374 | #endif
|
---|
| 375 | }
|
---|
| 376 |
|
---|
[1904] | 377 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 378 | fprintf(stdout, "\b\b\b\b\b\b%5ld ", lines );
|
---|
| 379 | fflush(stdout);
|
---|
| 380 | #endif
|
---|
| 381 |
|
---|
| 382 |
|
---|
| 383 | there2:
|
---|
| 384 |
|
---|
| 385 |
|
---|
| 386 | /*Allocate output image: */
|
---|
| 387 | imageout=(double*)xmalloc(samps*lines*sizeof(double));
|
---|
| 388 | memcpy(imageout,image3,lines*samps*sizeof(double));
|
---|
| 389 |
|
---|
| 390 | time(&t2);
|
---|
[1904] | 391 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 392 | printf ( "\n\nEnd "); printf( ctime(&t2) );
|
---|
| 393 | printf( "\n Total time: ");
|
---|
| 394 | printf( "%4.2f minutes. \n", difftime(t2,t1)/60 );
|
---|
| 395 | #endif
|
---|
| 396 |
|
---|
| 397 | #ifdef _DEBUG2_
|
---|
| 398 | printf( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
|
---|
| 399 | printf("Number of zeroes remaining: 0\n\n");
|
---|
| 400 | printf ( "\n");
|
---|
| 401 | #endif
|
---|
| 402 |
|
---|
| 403 | end:
|
---|
| 404 |
|
---|
[1904] | 405 | #ifdef _ISSM_DEBUG_
|
---|
[1] | 406 | printf( "Done.\a\n" );
|
---|
| 407 | #endif
|
---|
| 408 |
|
---|
| 409 | /*Assign output pointers: */
|
---|
| 410 | *pimageout=imageout;
|
---|
| 411 |
|
---|
| 412 | return 1;
|
---|
| 413 |
|
---|
| 414 | }
|
---|