module Main
where
-import Data.Array.Repa (
- Array,
- DIM1,
- DIM3,
- Shape,
- Z(..),
- (:.)(..),
- index,
- reshape,
- toList
- )
+import qualified Data.Array.Repa as R (map, reshape)
+import qualified Data.Array.Repa.IO.BMP as R (writeComponentsToBMP)
+import System.Environment (getArgs)
-import Data.Array.Repa.IO.Vector (readVectorFromTextFile)
+import Grid (make_grid, zoom)
+import MRI
+import Values (drop_z, zoom_shape)
---import Grid(make_grid, zoom)
+zoom_factor :: (Int, Int, Int)
+zoom_factor = (1,2,2)
-read_mri_data :: IO (Array DIM1 Int)
-read_mri_data = readVectorFromTextFile "./data/mridata.txt"
-
-mri_shape :: DIM3
-mri_shape = (Z :. 256 :. 256 :. 109)
-
main :: IO ()
main = do
- mridata <- read_mri_data
- let mridata2 = reshape mri_shape mridata
- let tmp = Data.Array.Repa.toList mridata2
- print tmp
--- let g = make_grid 1 (Data.Array.Repa.toList mridata2)
--- let output = zoom g 2
--- print "Hello, world."
+-- args <- getArgs
+-- let color = head args
+ let in_file = "./data/mri.bin"
+ let out_file = "output.bmp"
+ arr <- read_word16s in_file
+ let arrBrack = bracket_array arr
+ let arrInv = flip_x $ flip_y arrBrack
+ let arrSlice = z_slice 50 arrInv
+ let arrSlice' = R.reshape mri_slice3d arrSlice
+ let dbl_data = R.map fromIntegral arrSlice'
+ let g = make_grid 1 dbl_data
+ let output = zoom g zoom_factor
+ let mri_slice2d = drop_z $ zoom_shape zoom_factor mri_slice3d
+ let colors = values_to_colors $ R.reshape mri_slice2d output
+ let routput = R.map (\(red, _, _) -> red) colors
+ let goutput = R.map (\(_, green, _) -> green) colors
+ let boutput = R.map (\(_, _, blue) -> blue) colors
+ R.writeComponentsToBMP out_file routput goutput boutput