The 4D image is governed by the class Image4d<VOXEL>. It aims to provide the same support via its methods as i3d::Image3d<VOXEL> does for 3D images. In fact, this class is more or less a wrapper to Image3d owing to the memory model employed. It also provides means to load/store 3D image sequence.
Technically, 3D sequence image (= 4D image) is stored in a std::vector of i3d::Image3d. That implies that separate frames lay in the memory separately while voxels within each frame lay in a single continuous block. This setup allows for swaping some frames out of the main memory as well as for high utilization of caches when working with single frame.
The 2D sequence image (= 3D image) is supported by using the class i3d::Image3d. See the next section for more details. This model enables the user to use functions that were originally designed for the pure 3D static image whenever appropriate. Additionaly, compared to the i3d::Image3d class, the ability to load and manipulate 3D image sequences was added.
i3d::Image3d<VOXEL> with the following interpretation: xy plane holds 2D image at given time while z axis represents time-line. The time-line will be denoted as t axis from this time on. The time-line is to be understood as non-empty continuous integer interval where higher numbers represent later frames. The interval must not contain holes. In other words: the z-value denotes the frame number (starting from zero).i3d::Image3d<VOXEL>. It provides almost all methods, apropriately modified, that one may find in the class i3d::Image3d. The 3D sequence image is implemented in the class Image4d whose documentation is the best source for details.It is licensed under The GNU General Purpose License. It can be downloaded from the CBIA web pages: http://cbia.fi.muni.cz/projects/optical-flow-downloads.html .
1.5.4