]> gitweb.michael.orlitzky.com - spline3.git/blob - src/Main.hs
Add the MRI code as it is after its first successful output.
[spline3.git] / src / Main.hs
1 module Main
2 where
3
4 import Data.Array.Repa (
5 DIM2,
6 DIM3,
7 Z(..),
8 (:.)(..),
9 slice,
10 reshape,
11 Any(..),
12 All(..)
13 )
14 import qualified Data.Array.Repa as R (map)
15
16 import Data.Array.Repa.IO.BMP (writeComponentsToBMP)
17 import Data.Word
18 import System.Environment (getArgs)
19
20 import Grid (make_grid, zoom)
21 import MRI
22 import Values (read_values_3d, write_values_1d)
23
24 mri_shape2d :: DIM2
25 mri_shape2d = (Z :. 256*2 :. 256*2)
26
27 mri_shape3d :: DIM3
28 mri_shape3d = (Z :. 256 :. 256 :. 1)
29
30 main :: IO ()
31 main = do
32 -- args <- getArgs
33 -- let color = head args
34 -- let in_file = "./data/MRbrain.40." ++ color
35 let out_file = "MRbrain.50.red.out"
36 arr <- read_word16s
37 let arrBrack = bracket_array arr
38 let arrInv = flip_x $ flip_y arrBrack
39 let arrSlice = slice arrInv (Any :. (50 :: Int) :. All :. All)
40 let arrColor = raw_data_to_color arrSlice
41
42 let arrColor' = reshape mri_shape3d arrColor
43 let rdata = red_dbl_data arrColor'
44 let gdata = green_dbl_data arrColor'
45 let bdata = blue_dbl_data arrColor'
46
47 -- mridata <- read_values_3d mri_shape in_file
48
49 let gr = make_grid 1 rdata
50 let routput = zoom gr (2,2,1)
51
52 let gg = make_grid 1 gdata
53 let goutput = zoom gg (2,2,1)
54
55 let gb = make_grid 1 bdata
56 let boutput = zoom gb (2,2,1)
57
58 let routput' = R.map double_to_word8 (reshape mri_shape2d routput)
59 let goutput' = R.map double_to_word8 (reshape mri_shape2d goutput)
60 let boutput' = R.map double_to_word8 (reshape mri_shape2d boutput)
61
62 -- write_values_1d output out_file
63 writeComponentsToBMP out_file routput' goutput' boutput'
64 where
65 double_to_word8 :: Double -> Word8
66 double_to_word8 x =
67 if x > 255 then
68 255 :: Word8
69 else
70 if x < 0 then
71 0 :: Word8
72 else
73 fromIntegral $ truncate x