1
$\begingroup$

I have large amounts of sparse 2d and 3d "volumetric" data, i.e. fixed data associated with positions in a uniform (integer coordinate) grid. I think of it as partial function

$$f: \mathbb Z^n \to D.$$

The data defined for each point has always the same structure - it's usually a list of numbers, or a matrix or another (nested) 3d grid of data. Ideally, I could store an arbitrary but fixed-format expression on each point.

I need operations such as the following:

  • Accessing individual elements efficiently
  • Accessing all elements in a neighborhood
  • Applying operations to individual elements and neighborhoods, including convolutions and more general filters
  • Constructing a grid with only a rearranged sublist of the current data on each point (e.g. for rearranging and pre-alpha-multiplying the color channels in an image, I would map the data {r,g,b,a} on each point to say a*{b,g,r})
  • Dropping points which match certain criteria.
  • Listing all indices for which data is defined.
  • Converting this data structure to other representations for interoperability and visualization

I would like to abstract-away the different ways of representing such data (I could think of using Image, Image3D, an array/tensor (an expression), a SparseArray, an Association, other ways to represent finite mappings, etc) and focus on the operations.

Has somebody already done this or seen a project that uses something like that?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.