- Timestamp:
- 10/11/12 11:23:47 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/HoleFillerx/HoleFillerx.cpp
r12520 r13622 10 10 11 11 int HoleFillerx(double** pimageout,double* image, int lines,int samps,int smooth){ 12 12 13 13 FILE *fp1; 14 14 unsigned long filesize; … … 29 29 float ssw, wsw, wnw, nnw; 30 30 float sum; 31 31 32 32 time_t t1, t2; 33 33 … … 45 45 image2 = xNew<double>(lines*samps); 46 46 memcpy(image2,image,lines*samps*sizeof(double)); 47 47 48 48 for ( i = 0; i < lines; i++ ){ 49 49 for ( j = 0; j < samps; j++ ){ … … 84 84 85 85 again2: 86 86 87 87 #ifdef _DEBUG2_ 88 88 counter=0; … … 99 99 fflush( stdout ); 100 100 #endif 101 101 102 102 afterfirst2: 103 103 … … 128 128 129 129 /* For void edge pixels: */ 130 130 131 131 nsteps = 0.0; ssteps = 0.0; esteps = 0.0; wsteps = 0.0; 132 132 nwsteps = 0.0; nesteps = 0.0; swsteps = 0.0; sesteps = 0.0; … … 139 139 ssw = 0.0; wsw = 0.0; wnw = 0.0; nnw = 0.0; 140 140 141 142 141 /** NSEW **/ 143 142 for ( ii = i - 1; ii >= 0; ii-- ){ /* North */ … … 150 149 if ( *(image2+ii*samps+j) != 0 ){ south = *(image2+ii*samps+j); ssteps = ii - i; break;} 151 150 } 152 151 153 152 for ( jj = j - 1; jj >= 0; jj-- ){ /* West */ 154 153 if ( jj <= 0 ) { west = 0; wsteps = 0; break;} 155 154 if ( *(image2+i*samps+jj) != 0 ){ west = *(image2+i*samps+jj); wsteps = j - jj; break;} 156 155 } 157 156 158 157 for ( jj = j + 1; jj < samps; jj++ ){ /* East */ 159 158 if ( jj >= samps-1 ){ east = 0; esteps = 0; break;} … … 161 160 } 162 161 163 164 162 /** Diagonals **/ 165 163 /* Southeast */ … … 169 167 if ( *(image2+ii*samps+jj) != 0 ){ se = *(image2+ii*samps+jj); sesteps = 1.4142 * k; break;} 170 168 } 171 169 172 170 /* Northeast */ 173 171 for ( k = 1; k < infinit; k++ ){ … … 176 174 if ( *(image2+ii*samps+jj) != 0 ){ ne = *(image2+ii*samps+jj); nesteps = 1.4142 * k; break;} 177 175 } 178 176 179 177 /* Northwest */ 180 178 for ( k = 1; k < infinit; k++ ){ … … 183 181 if ( *(image2+ii*samps+jj) != 0 ){ nw = *(image2+ii*samps+jj); nwsteps = 1.4142 * k; break;} 184 182 } 185 183 186 184 /* Southwest */ 187 185 for ( k = 1; k < infinit; k++ ){ … … 198 196 if ( *(image2+ii*samps+jj) != 0 ){ nne = *(image2+ii*samps+jj); nnesteps = 2.2361 * k; break;} 199 197 } 200 198 201 199 /* ENE */ 202 200 for ( k = 1; k < infinit; k++ ){ … … 205 203 if ( *(image2+ii*samps+jj) != 0 ){ ene = *(image2+ii*samps+jj); enesteps = 2.2361 * k; break;} 206 204 } 207 205 208 206 /* ESE */ 209 207 for ( k = 1; k < infinit; k++ ){ … … 212 210 if ( *(image2+ii*samps+jj) != 0 ){ ese = *(image2+ii*samps+jj); esesteps = 2.2361 * k; break;} 213 211 } 214 212 215 213 /* SSE */ 216 214 for ( k = 1; k < infinit; k++ ){ … … 226 224 if ( *(image2+ii*samps+jj) != 0 ){ ssw = *(image2+ii*samps+jj); sswsteps = 2.2361 * k; break;} 227 225 } 228 226 229 227 /* WSW */ 230 228 for ( k = 1; k < infinit; k++ ){ … … 233 231 if ( *(image2+ii*samps+jj) != 0 ){ wsw = *(image2+ii*samps+jj); wswsteps = 2.2361 * k; break;} 234 232 } 235 233 236 234 /* WNW */ 237 235 for ( k = 1; k < infinit; k++ ){ … … 240 238 if ( *(image2+ii*samps+jj) != 0 ){ wnw = *(image2+ii*samps+jj); wnwsteps = 2.2361 * k; break;} 241 239 } 242 240 243 241 /* NNW */ 244 242 for ( k = 1; k < infinit; k++ ){ … … 247 245 if ( *(image2+ii*samps+jj) != 0 ){ nnw = *(image2+ii*samps+jj); nnwsteps = 2.2361 * k; break;} 248 246 } 249 247 250 248 elev = 0; range = 0; 251 249 /*NSEW*/ … … 259 257 if ( swsteps > 0.5 ){ elev += sw / swsteps; range += 1.00 / swsteps;} 260 258 if ( sesteps > 0.5 ){ elev += se / sesteps; range += 1.00 / sesteps;} 261 259 262 260 /*Other 8*/ 263 261 if ( nnesteps > 0.5 ){ elev += nne / nnesteps; range += 1.00 / nnesteps;} … … 269 267 if ( wnwsteps > 0.5 ){ elev += wnw / wnwsteps; range += 1.00 / wnwsteps;} 270 268 if ( nnwsteps > 0.5 ){ elev += nnw / nnwsteps; range += 1.00 / nnwsteps;} 271 269 272 270 //temp = ( elev / range ) + 0.5 ; 273 271 temp = ( elev / range ); … … 275 273 //if ( temp > 10000 ) temp = 10000; 276 274 //if ( temp < 0 ) temp = 0; 277 275 278 276 #ifdef _DEBUG2_ 279 277 //_printLine_(temp << " " << elev << " " << range << " "); … … 284 282 } 285 283 286 287 288 284 for ( i = 0; i < lines; i++ ){ 289 285 for ( j = 0; j < samps; j++ ){ … … 292 288 } 293 289 294 295 290 for ( i = 0; i < lines; i++ ){ 296 291 for ( j = 0; j < samps; j++ ){ … … 298 293 } 299 294 } 300 295 301 296 if ( smooth == 0 ) goto there2; 302 303 297 304 298 /************************ SMOOTH THE RESULT ***********************/ 305 299 306 300 image4 = xNew<double>(lines*samps); 307 301 memcpy(image4,image3,lines*samps*sizeof(double)); 308 309 302 310 303 for ( i = 0; i < lines; i++ ) { 311 304 for ( j = 0; j < samps; j++ ) { 312 305 if ( *(image4+i*samps+j) != 0 ) { *(image3+i*samps+j) = *(image2+i*samps+j) ; continue; } 313 314 306 315 307 for ( k = 1; k < infinit; k++ ) { /* Find the smallest box size with data */ … … 324 316 } 325 317 } 326 318 327 319 k_nowset: 328 320 k = k / 4; if ( k < 1 ) k = 1; /* Errrrr. Make it fourth size */ … … 343 335 } 344 336 345 346 337 there2: 347 348 338 349 339 /*Allocate output image: */ … … 352 342 353 343 time(&t2); 354 344 355 345 #ifdef _DEBUG2_ 356 346 _printString_( "\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" ); … … 358 348 printf ( "\n"); 359 349 #endif 360 350 361 351 end: 362 352
Note:
See TracChangeset
for help on using the changeset viewer.