X-Git-Url: http://gitweb.michael.orlitzky.com/?p=spline3.git;a=blobdiff_plain;f=src%2FMRI.hs;h=1c244c1c81c8b738b95bcf5385d52290e536082a;hp=5cca1aed9ffcd2ab9250cd5883326fd45a59f087;hb=fc0d3c47103269ed75788a87bb5f28ee70408c89;hpb=dba4d4af1a19b54e392f8e41b03e40714c4ac6ab diff --git a/src/MRI.hs b/src/MRI.hs index 5cca1ae..1c244c1 100644 --- a/src/MRI.hs +++ b/src/MRI.hs @@ -7,8 +7,6 @@ module MRI ( flip_x, flip_y, - mri_shape, - mri_slice3d, read_word16s, round_array, swap_bytes, @@ -30,27 +28,12 @@ import Data.Array.Repa.IO.BMP as R (writeImageToBMP) import Values -mri_depth :: Int -mri_depth = 109 - -mri_width :: Int -mri_width = 256 - -mri_height :: Int -mri_height = 256 - -mri_shape :: DIM3 -mri_shape = (Z :. mri_depth :. mri_height :. mri_width) - mri_lower_threshold :: Double mri_lower_threshold = 1400 mri_upper_threshold :: Double mri_upper_threshold = 2500 -mri_slice3d :: DIM3 -mri_slice3d = (Z :. 1 :. mri_height :. mri_width) - -- | RawData is an array of words (16 bits), as contained in the MRI -- data files. type RawData sh = Array U sh Word16 @@ -63,8 +46,8 @@ type ColorData sh = Array U sh RGB {-# INLINE read_word16s #-} -read_word16s :: FilePath -> IO RawData3D -read_word16s path = do +read_word16s :: FilePath -> DIM3 -> IO RawData3D +read_word16s path mri_shape = do arr <- R.readArrayFromStorableFile path mri_shape c <- R.copyP arr now $ c @@ -105,17 +88,17 @@ round_array = R.map round -flip_y :: Source r Word16 => Array r DIM3 Word16 -> Array D DIM3 Word16 -flip_y arr = +flip_y :: Source r Word16 => Int -> Array r DIM3 Word16 -> Array D DIM3 Word16 +flip_y height arr = R.unsafeTraverse arr id (\get (Z :. z :. y :. x) -> - get (Z :. z :. (mri_height - 1) - y :. x)) + get (Z :. z :. (height - 1) - y :. x)) -flip_x :: Source r Word16 => Array r DIM3 Word16 -> Array D DIM3 Word16 -flip_x arr = +flip_x :: Source r Word16 => Int -> Array r DIM3 Word16 -> Array D DIM3 Word16 +flip_x width arr = R.unsafeTraverse arr id (\get (Z :. z :. y :. x) -> - get (Z :. z :. y :. (mri_width - 1) - x)) + get (Z :. z :. y :. (width - 1) - x)) {-# INLINE write_word16s #-}