-
Notifications
You must be signed in to change notification settings - Fork 6
/
00-intro.jl
72 lines (61 loc) · 2.47 KB
/
00-intro.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# ---
# jupyter:
# jupytext:
# text_representation:
# extension: .jl
# format_name: light
# format_version: '1.3'
# jupytext_version: 1.0.5
# kernelspec:
# display_name: Julia 1.4.2
# language: julia
# name: julia-1.4
# ---
# ### MRI reconstruction introductory notebook for ISBI 2019 tutorial
#
# This jupyter notebook is in a directory with other notebooks
# that demonstrate MRI reconstruction using the Julia language
# and the Michigan Image Reconstruction Toolbox (MIRT).
#
# 2019-03-14 Jeff Fessler, University of Michigan
# ### Initial steps
#
# See getting started instructions here:
# https://github.com/JeffFessler/MIRT.jl/blob/master/doc/start.md
# ### Test your installation
#
# The next cell loads the packages needed for this initial test.
# It might take a little bit of time to run the first time you try it
# because Julia is essentially a compiled language under the hood,
# even though it feels like an interactive language to the user,
# so it will be compiling things behind the scenes.
# Load all packages needed for this demo
using MIRT: ellipse_im, jim # https://github.com/JeffFessler/MIRT.jl
using FFTW: fft
# ### View the Shepp-Logan image and its spectrum
# The `ellipse_im` function in MIRT can generate phantom images consisting of ellipses such as the Shepp-Logan image.
#
# The `jim` function in MIRT is a jiffy image display routine.
image = ellipse_im(256, oversample=2)
jim(image, "Shepp-Logan Phantom")
# calculate k-space data using fft
kspace = fft(image) # this is a 2D FFT because "image" is a 2D array
jim(kspace, fft0=true) # show k-space with 0 at center, ala matlab's "fftshift"
# It is hard to see much on a linear scale, so now use a log scale
logger = (x ; min=-6) -> log10.(max.(abs.(x) / maximum(abs.(x)), (10.)^min))
jim(logger(kspace), "k-space data on log scale", fft0=true)
# ### Getting help
# In addition to the documentation linked above,
# to learn about any command in Julia just type `?` followed by the command name
# and Julia will return the documentation string
# that goes with that command.
# Here is an example.
# This example illustrates the very useful "multiple dispatch" feature of Julia;
# essentially there are multiple versions of this function
# that you can call in several different ways
# with different argument combinations,
# and with optimal keyword arguments.
#?jim # uncomment this line to see
# ### End of introduction!
#
# If you got this far you are ready for more interesting demos next.