| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Main
- type SmallSize = Word32
- type Plane = Array Dim2
- type SymbPlane = Array Dim2
- type ColorImage a = Array Dim2 (YUV a)
- type ColorImage8 = ColorImage Word8
- type YUV a = (a, a, a)
- shape2 :: Integral i => i -> i -> Dim2
- readImage :: Verbosity -> FilePath -> IO ColorImage8
- vectorStorableFrom :: (C sh, Storable a) => (ForeignPtr c -> ForeignPtr a) -> Array sh c -> Vector a
- imageFromArray :: (PixelBaseComponent c ~ a, Storable a) => (ForeignPtr b -> ForeignPtr a) -> Array Dim2 b -> Image c
- writeImage :: Int -> FilePath -> ColorImage8 -> IO ()
- writeGrey :: Int -> FilePath -> Plane Word8 -> IO ()
- colorImageExtent :: ColorImage8 -> (Size, Size)
- fromInt :: (NativeInteger i ir, NativeFloating a ar) => Exp i -> Exp a
- floatFromByte :: (NativeFloating a ar, PseudoRing a, Real a, RationalConstant a) => Exp Word8 -> Exp a
- byteFromFloat :: (NativeFloating a ar, Field a, Real a, RationalConstant a) => Exp a -> Exp Word8
- imageFloatFromByte :: (C array, C sh, NativeFloating a ar, PseudoRing a, Real a, RationalConstant a) => array sh Word8 -> array sh a
- imageByteFromFloat :: (C array, C sh, NativeFloating a ar, Field a, Real a, RationalConstant a) => array sh a -> array sh Word8
- yuvByteFromFloat :: (NativeFloating a ar, Field a, Real a, RationalConstant a) => Exp (YUV a) -> Exp (YUV Word8)
- colorImageFloatFromByte :: (C array, C sh, NativeFloating a ar, PseudoRing a, Real a, RationalConstant a) => array sh (YUV Word8) -> array sh (YUV a)
- colorImageByteFromFloat :: (C array, C sh, NativeFloating a ar, Field a, Real a, RationalConstant a) => array sh (YUV a) -> array sh (YUV Word8)
- fastRound :: (NativeInteger i ir, NativeFloating a ar) => Exp a -> Exp i
- splitFraction :: NativeFloating a ar => Exp a -> (Exp Size, Exp a)
- ceilingToInt :: NativeFloating a ar => Exp a -> Exp Size
- atomDim2 :: Shape2 (Atom i)
- atomIx2 :: Index2 (Atom i)
- dim2 :: Exp i -> Exp i -> Exp (Shape2 i)
- ix2 :: Exp i -> Exp i -> Exp (Index2 i)
- fromSize2 :: NativeFloating a ar => (Exp Size, Exp Size) -> (Exp a, Exp a)
- indexLimit :: SymbPlane a -> Index2 (Exp Size) -> Exp a
- limitIndices :: (C array, C sh) => Exp Dim2 -> array sh Ix2 -> array sh Ix2
- shiftIndicesHoriz :: (C array, C sh) => Exp Size -> array sh Ix2 -> array sh Ix2
- shiftIndicesVert :: (C array, C sh) => Exp Size -> array sh Ix2 -> array sh Ix2
- type VecExp a v = Vec (Exp a) (Exp v)
- vecYUV :: PseudoRing a => VecExp a (YUV a)
- indexFrac :: (NativeFloating a ar, Real a, Field a, RationalConstant a) => VecExp a v -> SymbPlane v -> Index2 (Exp a) -> Exp v
- indexFrac1 :: (NativeFloating a ar, Real a, Field a, RationalConstant a) => VecExp a v -> SymbPlane v -> Index2 (Exp a) -> Exp v
- gatherFrac :: (NativeFloating a ar, Real a, Field a, RationalConstant a, C v) => VecExp a v -> SymbPlane v -> SymbPlane (Index2 a) -> SymbPlane v
- gatherFrac_ :: (NativeFloating a ar, Real a, Field a, RationalConstant a, C v) => VecExp a v -> SymbPlane v -> SymbPlane (Index2 a) -> SymbPlane v
- rotateStretchMoveCoords :: (Storable a, C a, Real a, Field a, RationalConstant a, NativeFloating a ar) => Exp (a, a) -> Exp (a, a) -> Exp Dim2 -> SymbPlane (a, a)
- inRange :: Comparison a => Exp a -> Exp a -> Exp Bool
- inBox :: Comparison a => (Exp a, Exp a) -> (Exp a, Exp a) -> Exp Bool
- validCoords :: (NativeFloating a ar, Field a, Real a, RationalConstant a) => (Exp Size, Exp Size) -> SymbPlane (a, a) -> SymbPlane MaskBool
- rotateStretchMove :: (Storable a, C a, Real a, Field a, RationalConstant a, NativeFloating a ar, C v) => VecExp a v -> Exp (a, a) -> Exp (a, a) -> Exp Dim2 -> SymbPlane v -> SymbPlane (MaskBool, v)
- rotate :: (Storable a, C a, Real a, Field a, RationalConstant a, NativeFloating a ar, C v) => VecExp a v -> Exp (a, a) -> SymbPlane v -> SymbPlane v
- runRotate :: IO (Float -> ColorImage8 -> IO ColorImage8)
- brightnessValue :: Exp (YUV a) -> Exp a
- brightnessPlane :: (C array, C size) => array size (YUV a) -> array size a
- rowHistogram :: (C array, Additive a) => array Dim2 (YUV a) -> array Dim1 a
- tailArr :: C array => array Dim1 a -> array Dim1 a
- differentiate :: (C array, Additive a) => array Dim1 a -> array Dim1 a
- the :: Array () a -> Exp a
- fold1All :: (C sh, C a) => (Exp a -> Exp a -> Exp a) -> Array sh a -> Exp a
- scoreHistogram :: PseudoRing a => Array Dim1 a -> Exp a
- runScoreRotation :: IO (Float -> ColorImage8 -> IO Float)
- findOptimalRotation :: IO ([Float] -> ColorImage8 -> IO Float)
- transpose :: SymbPlane a -> SymbPlane a
- lowpassVert :: (Field a, Real a, RationalConstant a) => SymbPlane a -> SymbPlane a
- lowpass :: (Field a, Real a, RationalConstant a) => SymbPlane a -> SymbPlane a
- nestM :: Monad m => Int -> (a -> m a) -> a -> m a
- lowpassMulti :: IO (Int -> Plane Float -> IO (Plane Float))
- highpassMulti :: IO (Int -> Plane Float -> IO (Plane Float))
- pad :: C a => Exp a -> Exp Dim2 -> SymbPlane a -> SymbPlane a
- padCArray :: Storable a => a -> (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a
- clipCArray :: Storable a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a
- mapPairInt :: (Integral i, Integral j) => (i, i) -> (j, j)
- correlatePaddedSimpleCArray :: FFTWReal a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a
- cyclicReverse2d :: Storable a => CArray (Int, Int) a -> CArray (Int, Int) a
- untangleCoefficient :: RealFloat a => Complex a -> Complex a -> (Complex a, Complex a)
- untangleSpectra2d :: (RealFloat a, Storable a) => CArray (Int, Int) (Complex a) -> CArray (Int, Int) (Complex a, Complex a)
- correlatePaddedComplexCArray :: FFTWReal a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a
- correlatePaddedCArray :: FFTWReal a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a
- liftCArray2 :: Storable a => (CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a) -> Plane a -> Plane a -> IO (Plane a)
- type Id a = a -> a
- fixArray :: Id (Array sh a)
- prepareOverlapMatching :: IO (Int -> (Float, ColorImage8) -> IO ((Float, Float), Plane Float))
- wrap :: Exp Size -> Exp Size -> Exp Size -> Exp Size
- displacementMap :: Exp Size -> Exp Size -> Exp Dim2 -> SymbPlane (Size, Size)
- attachDisplacements :: Exp Size -> Exp Size -> SymbPlane a -> SymbPlane (a, (Size, Size))
- minimumOverlapScores :: (Select a, PseudoRing a, IntegerConstant a, Real a) => ((Exp Size, Exp Size) -> Exp a -> Exp a) -> Exp Size -> (Exp Size, Exp Size) -> (Exp Size, Exp Size) -> SymbPlane (a, (Size, Size)) -> SymbPlane (a, (Size, Size))
- allOverlapsFromCorrelation :: Dim2 -> Exp Float -> Exp Dim2 -> Exp Dim2 -> SymbPlane Float -> SymbPlane (Float, (Size, Size))
- allOverlapsRun :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Plane Word8))
- argmax :: (Comparison a, Select a, Select b) => Exp (a, b) -> Exp (a, b) -> Exp (a, b)
- argmaximum :: (C sh, Comparison a, Select a, Select b) => Array sh (a, b) -> Exp (a, b)
- optimalOverlap :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Float, (Size, Size)))
- shrink :: (Field a, RationalConstant a, Real a, NativeFloating a ar) => Shape2 (Exp Size) -> SymbPlane a -> SymbPlane a
- shrinkFactors :: Integral a => Dim2 -> Shape2 a -> Shape2 a -> Shape2 a
- optimalOverlapBig :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Float, (Size, Size)))
- clip :: C a => (Exp Size, Exp Size) -> (Exp Size, Exp Size) -> SymbPlane a -> SymbPlane a
- overlappingArea :: (Ord a, Num a) => Shape2 a -> Shape2 a -> (a, a) -> ((a, a), (a, a), (a, a))
- optimalOverlapBigFine :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Float, (Size, Size)))
- optimalOverlapBigMulti :: Dim2 -> Dim2 -> Int -> IO (Float -> Float -> Plane Float -> Plane Float -> IO [(Float, (Size, Size), (Size, Size))])
- overlapDifference :: (Algebraic a, RationalConstant a, Real a, NativeFloating a ar) => (Exp Size, Exp Size) -> SymbPlane a -> SymbPlane a -> Exp a
- overlapDifferenceRun :: IO ((Size, Size) -> Plane Float -> Plane Float -> IO Float)
- overlap2 :: (Field a, Real a, RationalConstant a, C v) => VecExp a v -> (Exp Size, Exp Size) -> (SymbPlane v, SymbPlane v) -> SymbPlane v
- composeOverlap :: IO ((Size, Size) -> ((Float, ColorImage8), (Float, ColorImage8)) -> IO ColorImage8)
- emptyCountCanvas :: IO (Dim2 -> IO (Plane (Word32, YUV Float)))
- type MaskBool = Word8
- maskFromBool :: Exp Bool -> Exp MaskBool
- boolFromMask :: Exp MaskBool -> Exp Bool
- intFromBool :: Exp MaskBool -> Exp Word32
- type RotatedImage = ((Float, Float), (Float, Float), ColorImage8)
- addToCountCanvas :: (PseudoRing a, NativeFloating a ar) => VecExp a v -> SymbPlane (MaskBool, v) -> SymbPlane (Word32, v) -> SymbPlane (Word32, v)
- updateCountCanvas :: IO (RotatedImage -> Plane (Word32, YUV Float) -> IO (Plane (Word32, YUV Float)))
- finalizeCountCanvas :: IO (Plane (Word32, YUV Float) -> IO ColorImage8)
- diffAbs :: Real a => Exp a -> Exp a -> Exp a
- diffWithCanvas :: IO (RotatedImage -> Plane (YUV Float) -> IO (Plane (MaskBool, Float)))
- finalizeCountCanvasFloat :: IO (Plane (Word32, YUV Float) -> IO (Plane (YUV Float)))
- emptyCanvas :: IO (Dim2 -> IO ColorImage8)
- addMaskedToCanvas :: IO (RotatedImage -> Plane MaskBool -> Plane (YUV Word8) -> IO (Plane (YUV Word8)))
- updateShapedCanvas :: IO (RotatedImage -> Plane Float -> Plane (Float, YUV Float) -> IO (Plane (Float, YUV Float)))
- maybePlus :: C a => (Exp a -> Exp a -> Exp a) -> Exp (Bool, a) -> Exp (Bool, a) -> Exp (Bool, a)
- maskedMinimum :: (C sh, C array, Real a) => array (sh, SmallSize) (Bool, a) -> array sh (Bool, a)
- generate :: C sh => Exp sh -> (Exp (Index sh) -> Exp b) -> Array sh b
- type Geometry a = Geometry Size a
- distanceMapBox :: (Field a, NativeFloating a ar, Real a, RationalConstant a) => Exp Dim2 -> Exp (Geometry a) -> SymbPlane (Bool, (((a, (a, a)), (a, (a, a))), ((a, (a, a)), (a, (a, a)))))
- distance :: (Algebraic a, Real a, IntegerConstant a) => Point2 (Exp a) -> Point2 (Exp a) -> Exp a
- outerProduct :: (C sha, C shb, C array) => (Exp a -> Exp b -> Exp c) -> array sha a -> array shb b -> array (sha, shb) c
- isZero :: (Comparison i, Integral i, IntegerConstant i) => Exp i -> Exp Bool
- expEven :: (Comparison i, Integral i, IntegerConstant i) => Exp i -> Exp Bool
- separateDistanceMap :: (C array, C sh, C a) => array sh (bool, ((a, a), (a, a))) -> array (sh, SmallSize) (bool, a)
- containedAnywhere :: (C array, C sh, Field a, NativeFloating a ar, Real a, RationalConstant a) => array SmallSize (Geometry a) -> array sh (a, a) -> array sh Bool
- distanceMapContained :: (RationalConstant a, NativeFloating a ar, PseudoRing a, Field a, Real a) => Exp Dim2 -> Exp (Geometry a) -> Array SmallSize (Geometry a) -> SymbPlane a
- pixelCoordinates :: NativeFloating a ar => Exp Dim2 -> SymbPlane (a, a)
- distanceMapPoints :: (C sh, C array, Real a, Algebraic a, IntegerConstant a) => array sh (a, a) -> array SmallSize (a, a) -> array sh a
- distanceMap :: (Algebraic a, Real a, RationalConstant a, NativeFloating a ar) => Exp Dim2 -> Exp (Geometry a) -> Array SmallSize (Geometry a) -> Array SmallSize (a, a) -> SymbPlane a
- pow :: (Repr Value a ~ Value ar, IsFloating ar, TranscendentalConstant ar) => Exp a -> Exp a -> Exp a
- distanceMapGamma :: (Algebraic a, Real a, RationalConstant a, NativeFloating a ar, TranscendentalConstant ar) => Exp a -> Exp Dim2 -> Exp (Geometry a) -> Array SmallSize (Geometry a) -> Array SmallSize (a, a) -> SymbPlane a
- emptyWeightedCanvas :: IO (Dim2 -> IO (Plane (Float, YUV Float)))
- addToWeightedCanvas :: (PseudoRing a, NativeFloating a ar) => VecExp a v -> SymbPlane (a, v) -> SymbPlane (a, v) -> SymbPlane (a, v)
- updateWeightedCanvas :: IO (Float -> Geometry Float -> [Geometry Float] -> [Point2 Float] -> ColorImage8 -> Plane (Float, YUV Float) -> IO (Plane (Float, YUV Float)))
- finalizeWeightedCanvas :: IO (Plane (Float, YUV Float) -> IO ColorImage8)
- processOverlap :: Args -> [(Float, ColorImage8)] -> [((Int, (FilePath, ((Float, Float), Plane Float))), (Int, (FilePath, ((Float, Float), Plane Float))))] -> IO ([(Float, Float)], [((Float, Float), ColorImage8)])
- processOverlapRotate :: Args -> [(Float, ColorImage8)] -> [((Int, (FilePath, ((Float, Float), Plane Float))), (Int, (FilePath, ((Float, Float), Plane Float))))] -> IO ([(Float, Float)], [((Float, Float), ColorImage8)])
- process :: Args -> IO ()
- rotateTest :: IO ()
- scoreTest :: IO ()
- main :: IO ()
Documentation
type ColorImage a = Array Dim2 (YUV a) Source
type ColorImage8 = ColorImage Word8 Source
vectorStorableFrom :: (C sh, Storable a) => (ForeignPtr c -> ForeignPtr a) -> Array sh c -> Vector a Source
imageFromArray :: (PixelBaseComponent c ~ a, Storable a) => (ForeignPtr b -> ForeignPtr a) -> Array Dim2 b -> Image c Source
writeImage :: Int -> FilePath -> ColorImage8 -> IO () Source
colorImageExtent :: ColorImage8 -> (Size, Size) Source
fromInt :: (NativeInteger i ir, NativeFloating a ar) => Exp i -> Exp a Source
floatFromByte :: (NativeFloating a ar, PseudoRing a, Real a, RationalConstant a) => Exp Word8 -> Exp a Source
byteFromFloat :: (NativeFloating a ar, Field a, Real a, RationalConstant a) => Exp a -> Exp Word8 Source
imageFloatFromByte :: (C array, C sh, NativeFloating a ar, PseudoRing a, Real a, RationalConstant a) => array sh Word8 -> array sh a Source
imageByteFromFloat :: (C array, C sh, NativeFloating a ar, Field a, Real a, RationalConstant a) => array sh a -> array sh Word8 Source
yuvByteFromFloat :: (NativeFloating a ar, Field a, Real a, RationalConstant a) => Exp (YUV a) -> Exp (YUV Word8) Source
colorImageFloatFromByte :: (C array, C sh, NativeFloating a ar, PseudoRing a, Real a, RationalConstant a) => array sh (YUV Word8) -> array sh (YUV a) Source
colorImageByteFromFloat :: (C array, C sh, NativeFloating a ar, Field a, Real a, RationalConstant a) => array sh (YUV a) -> array sh (YUV Word8) Source
fastRound :: (NativeInteger i ir, NativeFloating a ar) => Exp a -> Exp i Source
splitFraction :: NativeFloating a ar => Exp a -> (Exp Size, Exp a) Source
ceilingToInt :: NativeFloating a ar => Exp a -> Exp Size Source
vecYUV :: PseudoRing a => VecExp a (YUV a) Source
indexFrac :: (NativeFloating a ar, Real a, Field a, RationalConstant a) => VecExp a v -> SymbPlane v -> Index2 (Exp a) -> Exp v Source
indexFrac1 :: (NativeFloating a ar, Real a, Field a, RationalConstant a) => VecExp a v -> SymbPlane v -> Index2 (Exp a) -> Exp v Source
gatherFrac :: (NativeFloating a ar, Real a, Field a, RationalConstant a, C v) => VecExp a v -> SymbPlane v -> SymbPlane (Index2 a) -> SymbPlane v Source
gatherFrac_ :: (NativeFloating a ar, Real a, Field a, RationalConstant a, C v) => VecExp a v -> SymbPlane v -> SymbPlane (Index2 a) -> SymbPlane v Source
rotateStretchMoveCoords :: (Storable a, C a, Real a, Field a, RationalConstant a, NativeFloating a ar) => Exp (a, a) -> Exp (a, a) -> Exp Dim2 -> SymbPlane (a, a) Source
validCoords :: (NativeFloating a ar, Field a, Real a, RationalConstant a) => (Exp Size, Exp Size) -> SymbPlane (a, a) -> SymbPlane MaskBool Source
rotateStretchMove :: (Storable a, C a, Real a, Field a, RationalConstant a, NativeFloating a ar, C v) => VecExp a v -> Exp (a, a) -> Exp (a, a) -> Exp Dim2 -> SymbPlane v -> SymbPlane (MaskBool, v) Source
rotateStretchMove rot mov
first rotate and stretches the image according to rot
and then moves the picture.
rotate :: (Storable a, C a, Real a, Field a, RationalConstant a, NativeFloating a ar, C v) => VecExp a v -> Exp (a, a) -> SymbPlane v -> SymbPlane v Source
runRotate :: IO (Float -> ColorImage8 -> IO ColorImage8) Source
brightnessValue :: Exp (YUV a) -> Exp a Source
brightnessPlane :: (C array, C size) => array size (YUV a) -> array size a Source
scoreHistogram :: PseudoRing a => Array Dim1 a -> Exp a Source
runScoreRotation :: IO (Float -> ColorImage8 -> IO Float) Source
findOptimalRotation :: IO ([Float] -> ColorImage8 -> IO Float) Source
lowpassVert :: (Field a, Real a, RationalConstant a) => SymbPlane a -> SymbPlane a Source
mapPairInt :: (Integral i, Integral j) => (i, i) -> (j, j) Source
correlatePaddedSimpleCArray :: FFTWReal a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a Source
untangleSpectra2d :: (RealFloat a, Storable a) => CArray (Int, Int) (Complex a) -> CArray (Int, Int) (Complex a, Complex a) Source
correlatePaddedComplexCArray :: FFTWReal a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a Source
correlatePaddedCArray :: FFTWReal a => (Int, Int) -> CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a Source
Should be yet a little bit more efficient than correlatePaddedComplexCArray
since it uses a real back transform.
liftCArray2 :: Storable a => (CArray (Int, Int) a -> CArray (Int, Int) a -> CArray (Int, Int) a) -> Plane a -> Plane a -> IO (Plane a) Source
prepareOverlapMatching :: IO (Int -> (Float, ColorImage8) -> IO ((Float, Float), Plane Float)) Source
minimumOverlapScores :: (Select a, PseudoRing a, IntegerConstant a, Real a) => ((Exp Size, Exp Size) -> Exp a -> Exp a) -> Exp Size -> (Exp Size, Exp Size) -> (Exp Size, Exp Size) -> SymbPlane (a, (Size, Size)) -> SymbPlane (a, (Size, Size)) Source
Set all scores to zero within a certain border. Otherwise the matching algorithm will try to match strong bars at the borders that are actually digitalization artifacts.
allOverlapsFromCorrelation :: Dim2 -> Exp Float -> Exp Dim2 -> Exp Dim2 -> SymbPlane Float -> SymbPlane (Float, (Size, Size)) Source
argmaximum :: (C sh, Comparison a, Select a, Select b) => Array sh (a, b) -> Exp (a, b) Source
optimalOverlap :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Float, (Size, Size))) Source
shrink :: (Field a, RationalConstant a, Real a, NativeFloating a ar) => Shape2 (Exp Size) -> SymbPlane a -> SymbPlane a Source
optimalOverlapBig :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Float, (Size, Size))) Source
overlappingArea :: (Ord a, Num a) => Shape2 a -> Shape2 a -> (a, a) -> ((a, a), (a, a), (a, a)) Source
optimalOverlapBigFine :: Dim2 -> IO (Float -> Plane Float -> Plane Float -> IO (Float, (Size, Size))) Source
optimalOverlapBigMulti :: Dim2 -> Dim2 -> Int -> IO (Float -> Float -> Plane Float -> Plane Float -> IO [(Float, (Size, Size), (Size, Size))]) Source
overlapDifference :: (Algebraic a, RationalConstant a, Real a, NativeFloating a ar) => (Exp Size, Exp Size) -> SymbPlane a -> SymbPlane a -> Exp a Source
overlap2 :: (Field a, Real a, RationalConstant a, C v) => VecExp a v -> (Exp Size, Exp Size) -> (SymbPlane v, SymbPlane v) -> SymbPlane v Source
composeOverlap :: IO ((Size, Size) -> ((Float, ColorImage8), (Float, ColorImage8)) -> IO ColorImage8) Source
type RotatedImage = ((Float, Float), (Float, Float), ColorImage8) Source
addToCountCanvas :: (PseudoRing a, NativeFloating a ar) => VecExp a v -> SymbPlane (MaskBool, v) -> SymbPlane (Word32, v) -> SymbPlane (Word32, v) Source
updateCountCanvas :: IO (RotatedImage -> Plane (Word32, YUV Float) -> IO (Plane (Word32, YUV Float))) Source
finalizeCountCanvas :: IO (Plane (Word32, YUV Float) -> IO ColorImage8) Source
emptyCanvas :: IO (Dim2 -> IO ColorImage8) Source
addMaskedToCanvas :: IO (RotatedImage -> Plane MaskBool -> Plane (YUV Word8) -> IO (Plane (YUV Word8))) Source
updateShapedCanvas :: IO (RotatedImage -> Plane Float -> Plane (Float, YUV Float) -> IO (Plane (Float, YUV Float))) Source
maybePlus :: C a => (Exp a -> Exp a -> Exp a) -> Exp (Bool, a) -> Exp (Bool, a) -> Exp (Bool, a) Source
maskedMinimum :: (C sh, C array, Real a) => array (sh, SmallSize) (Bool, a) -> array sh (Bool, a) Source
distanceMapBox :: (Field a, NativeFloating a ar, Real a, RationalConstant a) => Exp Dim2 -> Exp (Geometry a) -> SymbPlane (Bool, (((a, (a, a)), (a, (a, a))), ((a, (a, a)), (a, (a, a))))) Source
distance :: (Algebraic a, Real a, IntegerConstant a) => Point2 (Exp a) -> Point2 (Exp a) -> Exp a Source
outerProduct :: (C sha, C shb, C array) => (Exp a -> Exp b -> Exp c) -> array sha a -> array shb b -> array (sha, shb) c Source
isZero :: (Comparison i, Integral i, IntegerConstant i) => Exp i -> Exp Bool Source
expEven :: (Comparison i, Integral i, IntegerConstant i) => Exp i -> Exp Bool Source
separateDistanceMap :: (C array, C sh, C a) => array sh (bool, ((a, a), (a, a))) -> array (sh, SmallSize) (bool, a) Source
containedAnywhere :: (C array, C sh, Field a, NativeFloating a ar, Real a, RationalConstant a) => array SmallSize (Geometry a) -> array sh (a, a) -> array sh Bool Source
distanceMapContained :: (RationalConstant a, NativeFloating a ar, PseudoRing a, Field a, Real a) => Exp Dim2 -> Exp (Geometry a) -> Array SmallSize (Geometry a) -> SymbPlane a Source
pixelCoordinates :: NativeFloating a ar => Exp Dim2 -> SymbPlane (a, a) Source
distanceMapPoints :: (C sh, C array, Real a, Algebraic a, IntegerConstant a) => array sh (a, a) -> array SmallSize (a, a) -> array sh a Source
distanceMap :: (Algebraic a, Real a, RationalConstant a, NativeFloating a ar) => Exp Dim2 -> Exp (Geometry a) -> Array SmallSize (Geometry a) -> Array SmallSize (a, a) -> SymbPlane a Source
For every pixel
it computes the distance to the closest point on the image part boundary
which lies in any other image.
The rationale is that we want to fade an image out,
wherever is another image that can take over.
Such a closest point can either be a perpendicular point
at one of the image edges,
or it can be an image corner
or an intersection between this image border and another image border.
The first kind of points is computed by distanceMapContained
and the second kind by distanceMapPoints.
We simply compute the distances to all special points
and chose the minimal distance.
pow :: (Repr Value a ~ Value ar, IsFloating ar, TranscendentalConstant ar) => Exp a -> Exp a -> Exp a Source
distanceMapGamma :: (Algebraic a, Real a, RationalConstant a, NativeFloating a ar, TranscendentalConstant ar) => Exp a -> Exp Dim2 -> Exp (Geometry a) -> Array SmallSize (Geometry a) -> Array SmallSize (a, a) -> SymbPlane a Source
addToWeightedCanvas :: (PseudoRing a, NativeFloating a ar) => VecExp a v -> SymbPlane (a, v) -> SymbPlane (a, v) -> SymbPlane (a, v) Source
updateWeightedCanvas :: IO (Float -> Geometry Float -> [Geometry Float] -> [Point2 Float] -> ColorImage8 -> Plane (Float, YUV Float) -> IO (Plane (Float, YUV Float))) Source
finalizeWeightedCanvas :: IO (Plane (Float, YUV Float) -> IO ColorImage8) Source
processOverlap :: Args -> [(Float, ColorImage8)] -> [((Int, (FilePath, ((Float, Float), Plane Float))), (Int, (FilePath, ((Float, Float), Plane Float))))] -> IO ([(Float, Float)], [((Float, Float), ColorImage8)]) Source
processOverlapRotate :: Args -> [(Float, ColorImage8)] -> [((Int, (FilePath, ((Float, Float), Plane Float))), (Int, (FilePath, ((Float, Float), Plane Float))))] -> IO ([(Float, Float)], [((Float, Float), ColorImage8)]) Source
rotateTest :: IO () Source