'**SUMMARY**
This method provides a way of performing an inverse discrete Fourier transform
on a real/imaginary image pair and obtaining the result as a SimpleCV image. This
method is helpful if you wish to perform custom filter development.
**PARAMETERS**
* *raw_dft_image* - A list object with either one or three IPL images. Each image should
have a 64f depth and contain two channels (the real and the imaginary).
**RETURNS**
A simpleCV image.
**EXAMPLE**
Note that this is an example, I don\'t recommend doing this unless you know what
you are doing.
>>> raw = img.getRawDFT()
>>> cv.SomeOperation(raw)
>>> result = img.InverseDFT(raw)
>>> result.show()
**SEE ALSO**
:py:meth:`rawDFTImage`
:py:meth:`getDFTLogMagnitude`
:py:meth:`applyDFTFilter`
:py:meth:`highPassFilter`
:py:meth:`lowPassFilter`
:py:meth:`bandPassFilter`
:py:meth:`InverseDFT`
:py:meth:`applyButterworthFilter`
:py:meth:`InverseDFT`
:py:meth:`applyGaussianFilter`
:py:meth:`applyUnsharpMask`'

def InverseDFT(self, raw_dft_image):

    input = []
    w = raw_dft_image[0].width
    h = raw_dft_image[0].height
    if (len(raw_dft_image) == 1):
        gs = cv.CreateImage((w, h), cv.IPL_DEPTH_64F, 2)
        cv.Copy(self._DFT[0], gs)
        input.append(gs)
    else:
        for img in raw_dft_image:
            temp = cv.CreateImage((w, h), cv.IPL_DEPTH_64F, 2)
            cv.Copy(img, temp)
            input.append(img)
    if (len(input) == 1):
        cv.DFT(input[0], input[0], cv.CV_DXT_INV_SCALE)
        result = cv.CreateImage((w, h), cv.IPL_DEPTH_8U, 1)
        data = cv.CreateImage((w, h), cv.IPL_DEPTH_64F, 1)
        blank = cv.CreateImage((w, h), cv.IPL_DEPTH_64F, 1)
        cv.Split(input[0], data, blank, None, None)
        (min, max, pt1, pt2) = cv.MinMaxLoc(data)
        denom = (max - min)
        if (denom == 0):
            denom = 1
        cv.Scale(data, data, (1.0 / denom), ((1.0 * (- min)) / denom))
        cv.Mul(data, data, data, 255.0)
        cv.Convert(data, result)
        retVal = Image(result)
    else:
        results = []
        data = cv.CreateImage((w, h), cv.IPL_DEPTH_64F, 1)
        blank = cv.CreateImage((w, h), cv.IPL_DEPTH_64F, 1)
        for i in range(0, len(raw_dft_image)):
            cv.DFT(input[i], input[i], cv.CV_DXT_INV_SCALE)
            result = cv.CreateImage((w, h), cv.IPL_DEPTH_8U, 1)
            cv.Split(input[i], data, blank, None, None)
            (min, max, pt1, pt2) = cv.MinMaxLoc(data)
            denom = (max - min)
            if (denom == 0):
                denom = 1
            cv.Scale(data, data, (1.0 / denom), ((1.0 * (- min)) / denom))
            cv.Mul(data, data, data, 255.0)
            cv.Convert(data, result)
            results.append(result)
        retVal = cv.CreateImage((w, h), cv.IPL_DEPTH_8U, 3)
        cv.Merge(results[0], results[1], results[2], None, retVal)
        retVal = Image(retVal)
    return retVal
