Skip to content
Snippets Groups Projects
  1. Nov 27, 2012
  2. Nov 26, 2012
  3. Nov 22, 2012
  4. Nov 21, 2012
  5. Nov 20, 2012
  6. Nov 19, 2012
  7. Nov 16, 2012
  8. Nov 15, 2012
  9. Nov 14, 2012
  10. Nov 12, 2012
  11. Nov 11, 2012
    • Andreas Schenk's avatar
      refactored ValueHolder, ImageStateImpl and FFT · 5161efae
      Andreas Schenk authored
      Changed in detail:
      ------------------
      
      - removed DEPRECATED and unused code (slice and row pointers) in value holder
      - switched from new allocatd array to std::vector
      - removed explicit data initialization loop
      - using size_t instead of unsigned int for memory allocation
      - removed padding code
      - removed try catch(...) statements
      - added overflow check for big volumes
      - optimized 3D index to linear index calculation
      - removed physical extent for spatial domain (identical to logical extend not that padding is gone)
      - switched FFT to out of place transforms
      
      Benefits
      --------
      
      - memory for large images is correctly allocated
      - if the memory can't be allocated an exception is thrown instead of crashing the program
      - speed increase for FFT ca. 12% and for algorithms using direct value access (e.g. Stat) ca. 7%
      
      Issues
      -----
      
      - FFTs are not out of place, leading to increased memory usage for c2c DFT backtransform and
        hc2r FFT/DFT backtransform (3x image size instead of 2x image size). If necessary it would
        be possible to add a fallback for these cases (i.e. catch bad_alloc for the tmp state) and
        do them in place in low memory conditions. Padding for the in-place transform could be added
        to the std::vector either at construction time or otherwise using reserve().
      5161efae
Loading