Slice-Selective Acquisition of 3D Phantom
Scanner
B0: Float64 1.5
B1: Float64 1.0e-5
Gmax: Float64 0.06
Smax: Int64 500
ADC_ฮt: Float64 2.0e-6
seq_ฮt: Float64 1.0e-5
GR_ฮt: Float64 1.0e-5
RF_ฮt: Float64 1.0e-6
RF_ring_down_T: Float64 2.0e-5
RF_dead_time_T: Float64 0.0001
ADC_dead_time_T: Float64 1.0e-5
While in the previous examples we simulated using hard RF pulses, in this demonstration we will illustrate the principles of slice selection. First, let's import a 3D phantom, in this case a brain slab (thickness of $2\,\mathrm{cm}$), by calling the function brain_phantom3D
.
obj = brain_phantom3D()
obj.ฮw .= 0 # Removes the off-resonance
p1 = plot_phantom_map(obj, :T2 ; height=400)
"../assets/3-phantom.html"
Now, we are going to import a sequence which acquires 3 slices in the longitudinal axis. Note that the sequence contains three EPIs to acquire 3 slices of the phantom.
seq_file = joinpath(dirname(pathof(KomaMRI)), "../examples/1.sequences/epi_multislice.seq")
seq = read_seq(seq_file)
p2 = plot_seq(seq; range=[0,10], height=400)
"../assets/3-seq.html"
We can take a look to the slice profiles by using the function simulate_slice_profile
:
z = range(-2., 2., 200) * 1e-2; # -2 to 2 cm
rf1, rf2, rf3 = findall(is_RF_on.(seq))
M1 = simulate_slice_profile(seq[rf1]; z)
M2 = simulate_slice_profile(seq[rf2]; z)
M3 = simulate_slice_profile(seq[rf3]; z)
"../assets/3-profile.html"
Now let's simulate the acquisition. Notice the three echoes, one for every slice excitation.
raw = simulate(obj, seq, sys; sim_params=Dict{String,Any}("Nblocks"=>20))
p3 = plot_signal(raw; slider=false, height=300)
"../assets/3-signal.html"
Finally, we reconstruct the acquiered images.
# Get the acquisition data
acq = AcquisitionData(raw)
# Setting up the reconstruction parameters and perform reconstruction
Nx, Ny = raw.params["reconSize"][1:2]
reconParams = Dict{Symbol,Any}(:reco=>"direct", :reconSize=>(Nx, Ny))
image = reconstruction(acq, reconParams)
# Plotting the slices
p4 = plot_image(abs.(image[:, :, 1]); height=360, title="Slice 1")
p5 = plot_image(abs.(image[:, :, 2]); height=360, title="Slice 2")
p6 = plot_image(abs.(image[:, :, 3]); height=360, title="Slice 3")
"../assets/3-recon3.html"
This page was generated using Literate.jl.