module Graphics.Image.Processing.Complex (
(!+!), realPartI, imagPartI,
mkPolarI, cisI, polarI, magnitudeI, phaseI,
conjugateI,
fft, ifft
) where
import Prelude hiding (map, zipWith)
import Graphics.Image.Interface
import Graphics.Image.ColorSpace.Complex
import Graphics.Image.Processing.Complex.Fourier
infix 6 !+!
(!+!) :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e)) =>
Image arr cs e -> Image arr cs e -> Image arr cs (Complex e)
(!+!) = zipWith (+:)
realPartI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs (Complex e) -> Image arr cs e
realPartI = map realPart
imagPartI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs (Complex e) -> Image arr cs e
imagPartI = map imagPart
mkPolarI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs e -> Image arr cs e -> Image arr cs (Complex e)
mkPolarI = zipWith mkPolar
cisI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs e -> Image arr cs (Complex e)
cisI = map cis
polarI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs (Complex e) -> (Image arr cs e, Image arr cs e)
polarI !zImg = (magnitudeI zImg, phaseI zImg)
magnitudeI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs (Complex e) -> Image arr cs e
magnitudeI = map magnitude
phaseI :: (Applicative (Pixel cs), Array arr cs e, Array arr cs (Complex e), RealFloat e) =>
Image arr cs (Complex e) -> Image arr cs e
phaseI = map phase
conjugateI :: (Applicative (Pixel cs), Array arr cs (Complex e), RealFloat e) =>
Image arr cs (Complex e) -> Image arr cs (Complex e)
conjugateI = map conjugate