MR-laboration: design av pulssekvenser

Relevanta dokument
Signal- och Bildbehandling, TSBB14. Laboration 2: Sampling och rekonstruktion. DFT.

Flerdimensionella signaler och system

TSBB14 Laboration: Intro till Matlab 1D

Fig. Exempel på en B-mode ultraljudsbild av ett hjärta.

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

Teori... SME118 - Mätteknik & Signalbehandling SME118. Johan Carlson 2. Teori... Dagens meny

Lösning till tentamen i Medicinska Bilder, TSBB31, DEL 1: Grundläggande 2D signalbehandling

TSKS21 Signaler, Information och Bilder Lab 2: Digitalisering

Försättsblad till skriftlig tentamen vid Linköpings universitet TER1(17) TERE(1)

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

TANA17 Matematiska beräkningar med Matlab

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

15 februari 2016 Sida 1 / 32

Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007)

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Signal- och bildbehandling TSEA70

TEM Projekt Transformmetoder

Signal- och bildbehandling TSBB03, TSBB14

7 Olika faltningkärnor. Omsampling. 2D Sampling.

Datorövning 1 Fördelningar

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

Beräkningsverktyg HT07

Laboration: Grunderna i MATLAB

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

Datorövning 1: Fördelningar

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Försättsblad till skriftlig tentamen vid Linköpings universitet G35(18) TER4(12)

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

Laboration i Fourieroptik

Geometriska transformationer

Lösning till tentamen i Medicinska Bilder, TSBB31, DEL 1: Grundläggande 2D signalbehandling

Signal- och Bildbehandling, TSBB14. Laboration 2: Sampling och Tidsdiskreta signaler

Medicinska bilder. Programkurs 6 hp Medical Images TSBB31 Gäller från: 2018 VT. Fastställd av. Fastställandedatum

Signalanalys med snabb Fouriertransform

Laboration i Fourieroptik

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

DT1120/DT1130 Spektrala transformer Tentamen

TSBB31 Medicinska bilder Föreläsning 3

Introduktion till MATLAB

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Flerdimensionell signalbehandling SMS022

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Laboration 3 Sampling, samplingsteoremet och frekvensanalys

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

Uppgift 1 ( Betyg 3 uppgift )

Lab 1: Operationer på gråskalebilder

Laboration i Fourieranalys, TMA132 Signalanalys med snabb Fouriertransform

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Datorövning 1: Fördelningar

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Matlabövning 1 Funktioner och grafer i Matlab

Spektrala Transformer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Funktionsteori Datorlaboration 2

Matlabövning 1 Funktioner och grafer i Matlab

Datorlaborationer i matematiska metoder E1, del C, vt 2002

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Parametriserade kurvor

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TSBB16 Datorövning A Samplade signaler Faltning

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Signaler, information & bilder, föreläsning 12

TNM011 Grafisk teknik Laboration 3 - Färg

Lösning till tentamen i Medicinska Bilder, TSBB31, DEL 1: Grundläggande 2D signalbehandling

Transformationer i R 2 och R 3

Lösning till tentamen i Medicinska Bilder, TSBB31, DEL 1: Grundläggande 2D signalbehandling

Miniprojektuppgift i TSRT04: Mobiltelefontäckning

Instruktion för laboration 1

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

Signal- och Bildbehandling FÖRELÄSNING 7. En bild är en 2D signal. För en digital bild gäller. Fig. 2.1

Laboration 2: Styrkefunktion samt Regression

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Laboration i Fourieranalys för F2, TM2, Kf2 2011/12 Signalanalys med snabb Fouriertransform (FFT)

Matriser och linjära ekvationssystem

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Lösningsförslag TSRT09 Reglerteori

Datorövning: Fouriertransform med Python

Försättsblad till skriftlig tentamen vid Linköpings universitet R36 R37

Lösning till tentamen i Medicinska Bilder, TSBB31, DEL 1: Grundläggande 2D signalbehandling

TNM059 Grafisk teknik Laboration 4 - Färg

Analys o Linjär algebra. Lektion 7.. p.1/65

Signaler, information & bilder, föreläsning 13

Börja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1).

Mer om geometriska transformationer

1 Förberedelser. 2 Att starta MATLAB, användning av befintliga m-filer. 3 Geometriskt fördelad avkomma

Laboration 1. Grafisk teknik Rastrering. Sasan Gooran (HT 2004)

Laboration 3. Ergodicitet, symplektiska scheman och Monte Carlo-integration

Spektrala Transformer

Laboration: Grunderna i Matlab

Affina avbildningar Fraktala bilder Itererade funktionssystem. Affina avbildningar, itererade funktionssystem och fraktala bilde

Vad är spektralanalys? Spektralanalys. Frekvensinnehåll. Enkelt exempel

Signal- och bildbehandling TSBB03

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 26 november 2015 Sida 1 / 28

Transkript:

MR-laboration: design av pulssekvenser TSBB3 Medicinska Bilder Ansvarig lärare: Anders Eklund anders.eklund@liu.se Innehåll Uppgift Initialisering av k-space Koordinater i k-space Navigering i k-space med gradienter Rekonstruktion Artefakter Uppgift Uppgiften är att rekonstruera en 2D MR-bild genom att skapa pulssekvenser (gradienter i magnetfältet) som samplar ett simulerat k-space. Timkostnaden för en riktig MR-kamera är hög så det är viktig att samplingen i k- space görs så effektivt som möjligt, så att undersökningstiden blir kort. Det simulerade k-space initieras med hjälp av Matlab-funktionen kspaceinit och samplas sedan genom att anropa funktionen kspacesample med pulssekvensen ni skapar. Använd help kspacesample för att ta reda på hur funktionen fungerar. Vi vet att huvudet på patienten som vi ska avbilda har storleken W x = W y = 4. Precis som på en riktig MR-kamera så finns det begränsning på hur stora gradienter vi kan använda. Gradientens amplitud är begränsad enligt ḡ(t) = gx(t) 2 + gy(t) 2.2 t, dvs. om man vill förflytta sig längre i k-space än.2 så måste man göra det i flera tidssteg (sampel). Vi kommer att söka av k-space linje för linje med en ny excitering (RF-puls) för varje linje. Efter vare excitering förflyttas vi tillbaka till origo i k-space. Denna labb fokuserar på design av pulssekvenser, medan andra viktiga parametrar som repetitionstid (TR) och ekotid (TE) är bestämda i simulatorn. För att slippa kompensera för den gyromagnetiska konstanten γ antar vi att samplingstätheten i tidsled ges av t = γ 2π. Initialisering av k-space Definiera, N, antalet sampel per dimension i k-space. N är med fördel ett udda tal, så att vi får ett sampel i origo. Ett sampel på avståndet /W från origo i k-space (Fourierdomänen) motsvarar en våglängd med längden W i spatialdomänen, dvs vi kan återge objektet med denna storlek utan spatiell vikning (aliasing) om vi väljer samplingsavståndet

k W. Simulatorn initieras med funktionen kspaceinit som returnerar ett handle som vi senare använder för att generera k-space sampel. Skapa ett nytt Matlab-skript, t.ex. MR.m, och skriv in följande kod clear all close all clc W = 4; N = 255; deltak = /W; h = kspaceinit( none ); kspace = zeros(n); Spara MR.m i samma katalog som filerna ni laddade ner. Matlab-funktionerna kspacesample.m och kspaceinit.m ska inte ändras! Koordinater i k-space Vi vet antalet sampel, N, och samplingsavståndet k. Vi kan nu beräkna koordinaterna i k-space för våra sampelpunkter. Sambandet mellan k-space koordinater och motsvarande gradienter ges av: k x (t) = γ 2π t g x (τ)dτ k y (t) = γ 2π t g y (τ)dτ där vi för enkelhetens skull här sätter γ/2π = och approximerar koordinaten för ett sampel k(t n ) som en Riemann-summa av gradienterna, vilket kan göras med funktionen cumsum i Matlab. Navigering i k-space med gradienter Nästa steg är att definiera gradienterna så att när vi anropar Matlab-funktionen kspacesample erhåller sampel för våra önskade k-space koordinater. Vi gör en ny excitering (ett nytt anrop av kspacesample) för varje linje vi samplar och vid varje excitation förflyttas vi tillbaka till origo i k-space. Gradientvektorn består av två delar. Den första delen navigerar till början på linjen, vi gör en sk. readout. Vi är i detta läge bara intresserade av att ta oss dit så snabbt som möjligt. De k-space sampel vi erhåller på vägen är vi normalt inte intresserade av. Den andra delen av gradientvektorn tar oss utmed en linje i k-space med 2

sampelavståndet k i N sampel. Dessa sampel sparas på motsvarande rad i vår kspace matris. För att slippa hantera de k-space sampel som vi inte är intresserade av så kan vi vi ge kspacesample ytterligare ett argument, en indikator vektor v som har samma längd som g. kspacesample returnerar då bara de sampel där v. Observera att det är tillräckligt att sampla (N+)/2 linjer i k-space för att generera en bild av objektet. Skriv in följande kod i MR.m, efter koden ni redan har skrivit, och gör färdigt koden genom att fylla i alla ställen med.... N = (N-)/2; maxgrad =.2; % max gradient kmax = N*deltak; for p = :N+; % loop over (N+)/2 first lines i k-space ky_start = deltak*(n + - p); % start coordinates for line p kx_start =... N_readout =... % min number of readout samples gx_readout =... * ones(n_readout,); gy_readout =... * ones(n_readout,); g_readout = [gx_readout, gy_readout]; gx_line =... gy_line =... g_line = [gx_line, gy_line]; v =... g = [g_readout; g_line]; % gradients k = cumsum(g); % coordinates figure() plot( k(:,), k(:,2),.b ); axis([-.35,.35,-.35,.35]); grid on drawnow if p== hold on plot([kmax kmax -kmax -kmax],[kmax -kmax kmax -kmax], or ) hold off end kspace(p,:) = kspacesample(h,g,v); end 3

Koordinaterna för den första linjen bör se ut ungefär som i figuren ovan. För att försäkra sig om att pulssekvensen är korrekt kan det vara praktiskt att plotta hörnen - k-space, se nedanstående kod som också finns i den tidigare givna koden. kmax = N*deltak; kmin = -kmax; figure() plot([kmax kmax kmin kmin],[kmax kmin kmax kmin], or ) hold on plot(k(:,),k(:,2),.b ) grid on hold off Notera också att kspacesample returnerar det sampel som motsvarar positionen efter att gradienten har verkat. Om man t.ex vill att första samplet ska vara i origo måste första raden i gradientvektorn vara [, ]. 4

Matlab-vektorerna i koden är illustrerade i figuren nedan. g: v: g_readout deltak g_line Fråga: Varför är den första positionen i g line (deltak, )? Fråga: Varför består v av ett antal :or följt av ett antal :or? Fråga: Vilket är det minimala värdet på N readout? Motivera! 5

Magnituden av våra k-space sampel bör se ut som i figuren nedan. Vi använder här logaritmen av magnituden, eftersom magnituden i origo är mycket högre jämfört med resten av k-space (prova att ta bort log() för att se detta). figure(2) imagesc(log(abs(kspace))), axis image, colormap gray Använd nu den Hermitska egenskapen hos Fourierdomänen för att återskapa hela k-space. Utnyttja funktionerna flipud, fliplr och conj. Tänk på att nolllinjen bara ska vara med en gång. kspace2 = kspace; kspace2 =...... kspace = kspace + kspace2; imagesc(log(abs(kspace))), axis image, colormap gray Fråga: Vi utnyttjar här sambandet att k-space är Hermitisk. Under vilket villkor gäller detta antagande? 6

Rekonstruktion Eftersom k-space samplen nu ligger på en regelbunden grid kan rekonstruktionen utföras mha en invers 2D FFT (ifft2 i Matlab). Tänk på att Matlabs FFT har origo i övre vänstra hörnet. Använd funktionerna ifftshift och fftshift för att kasta om samplen före och efter själva Fourier-transformen. im =... figure(4) imagesc(abs(im)), colormap gray, axis image Fråga: Ser den rekonstruerade bilden ut som förväntat? Titta på realdelen och imaginärdelen för sig, för att försäkra er om att ni har samplat rätt (imaginärdelen kommer då att vara väldigt nära ). Hur stort är det största imaginära värdet? (max(imag(im(:)))) figure(5) imagesc(real(im)), colormap gray, axis image, title( Real part ) figure(6) imagesc(imag(im)), colormap gray, axis image, title( Imaginary part ) Fråga: Vad händer om ni ändrar W från 4 till 3? Förklara resultatet! Fråga: Vad händer om ni ändrar W från 4 till 5? Förklara resultatet! Här ska ni ignorera det som syns längs kanterna på bilden. Detta syns inte i verkligheten, utan är en effekt av att kspacesample inte är perfekt. Artefakter Genom att aktivera funktionen jitter h = kspaceinit( jitter ) kan vi simulera ett slumpmässigt tidsfel för våra k-space sampel. Hur ser denna artefakt ut? Titta på realdelen och imaginärdelen av den rekonstruerade bilden, med och utan artefakter. Lycka till! 7