CV-0.3.5.1: examples/dftmanip.hs
{-#LANGUAGE ScopedTypeVariables#-}
module Main where
import CV.ColourUtils
import CV.DFT
import CV.Drawing
import CV.Edges
import CV.Filters
import CV.Image
import CV.ImageOp
import CV.Pixelwise
import Control.Applicative hiding ((<**>))
import qualified CV.ImageMath as IM
import qualified CV.Transforms as T
import Data.Complex
fi = fromIntegral
main = do
Just x <- loadImage "smallLena.jpg"
let d :: Pixelwise (Complex D32)
d = fromImage $ dft x
mpper f = \(x,y) -> f (x,y) + (sin (7*fi x))
d2' = remapImage mpper x
d2 = dft d2'
d2c = d2 <# circleOp (0:+0) (130,102) 13 Filled
<# circleOp (0:+0) (71,102) 13 Filled
dftd1 = (toImage d) <# circleOp (0:+0) (101,101) 30 Filled
saveImage "dftmanip.png" $ montage (2,3) 10
[
logarithmicCompression $ fst $ dftSplit $ dftd1
,stretchHistogram $ idft dftd1
,stretchHistogram $ d2'
,logarithmicCompression $ fst $ dftSplit $ d2
,stretchHistogram $ fst $ dftSplit $ d2c
,stretchHistogram $ idft $ d2c
]