edu.emory.mathcs.jtransforms.dct

## Class DoubleDCT_3D

• ```public class DoubleDCT_3D
extends Object```
Computes 3D Discrete Cosine Transform (DCT) of double precision data. The sizes of all three dimensions can be arbitrary numbers. This is a parallel implementation of split-radix and mixed-radix algorithms optimized for SMP systems.

Part of the code is derived from General Purpose FFT Package written by Takuya Ooura (http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html)
Author:
Piotr Wendykier (piotr.wendykier@gmail.com)
• ### Constructor Summary

Constructors
Constructor and Description
```DoubleDCT_3D(int slices, int rows, int columns)```
Creates new instance of DoubleDCT_3D.
• ### Method Summary

All Methods
Modifier and Type Method and Description
`void` ```forward(double[][][] a, boolean scale)```
Computes the 3D forward DCT (DCT-II) leaving the result in `a` .
`void` ```forward(double[] a, boolean scale)```
Computes the 3D forward DCT (DCT-II) leaving the result in `a` .
`void` ```inverse(double[][][] a, boolean scale)```
Computes the 3D inverse DCT (DCT-III) leaving the result in `a`.
`void` ```inverse(double[] a, boolean scale)```
Computes the 3D inverse DCT (DCT-III) leaving the result in `a`.
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Constructor Detail

• #### DoubleDCT_3D

```public DoubleDCT_3D(int slices,
int rows,
int columns)```
Creates new instance of DoubleDCT_3D.
Parameters:
`slices` - number of slices
`rows` - number of rows
`columns` - number of columns
• ### Method Detail

• #### forward

```public void forward(double[] a,
boolean scale)```
Computes the 3D forward DCT (DCT-II) leaving the result in `a` . The data is stored in 1D array addressed in slice-major, then row-major, then column-major, in order of significance, i.e. the element (i,j,k) of 3D array x[slices][rows][columns] is stored in a[i*sliceStride + j*rowStride + k], where sliceStride = rows * columns and rowStride = columns.
Parameters:
`a` - data to transform
`scale` - if true then scaling is performed
• #### forward

```public void forward(double[][][] a,
boolean scale)```
Computes the 3D forward DCT (DCT-II) leaving the result in `a` . The data is stored in 3D array
Parameters:
`a` - data to transform
`scale` - if true then scaling is performed
• #### inverse

```public void inverse(double[] a,
boolean scale)```
Computes the 3D inverse DCT (DCT-III) leaving the result in `a`. The data is stored in 1D array addressed in slice-major, then row-major, then column-major, in order of significance, i.e. the element (i,j,k) of 3D array x[slices][rows][columns] is stored in a[i*sliceStride + j*rowStride + k], where sliceStride = rows * columns and rowStride = columns.
Parameters:
`a` - data to transform
`scale` - if true then scaling is performed
• #### inverse

```public void inverse(double[][][] a,
boolean scale)```
Computes the 3D inverse DCT (DCT-III) leaving the result in `a`. The data is stored in 3D array.
Parameters:
`a` - data to transform
`scale` - if true then scaling is performed