核磁共振成像学习笔记——从FID信号到K空间
在理想磁场环境下(没有不存在场不均匀性),对于一个没有梯度场的方块。


此时,RF pulse的两路正交信号(相位差为90°)对此方块进行激发,然后收取信号,我们可以得到由此方块产生的FID信号。


设此信号为\(S(t)\),则此信号由\(S_c(t)\)与\(S_s(t)\)组成,分别组成\(S(t)\)的实部与虚部。
\begin{aligned}
S_c(t)=M_{xy}e^{-t/T_2}\cos({\omega}t)\\
S_s(t)=M_{xy}e^{-t/T_2}\sin({\omega}t)
\end{aligned}
\right.
\]
这是我们的接受线圈接收到的两组正交信号。
再利用欧拉公式
\begin{aligned}
\cos({\omega}t)=\frac{e^{i{\omega}t}+e^{-{i{\omega}t}}}{2}\\
\sin({\omega}t)=\frac{e^{i{\omega}t}-e^{-{i{\omega}t}}}{2i}
\end{aligned}
\right.
\]
使
\]
则
\]
此时,我们忽略衰减项\(e^{-t/T_2}\),则
\]
这是我们对单个方块进行激发的结果,那么此时,引入梯度磁场进行空间定位。


根据拉莫尔进动(Larmor precession)
\]
Phase encoding gradient和frequency encoding gradient的出现会使得这个方块内部的每个位置的进动频率\(\omega\)发生变化。但需要注意Phase encoding gradient和frequency encoding gradient是不能够同时开启的(SE序列中)。然后,我们看自旋回波序列(SE)。

在接收信号前,分别开启了一段Phase encoding gradient和frequency encoding gradient。在接收信号的时候,frequency encoding gradient全程保持开启。
先进行公式推导,\(S(t)\)即为上文理想方块条件下推导得出的,我们将\(M_{xy}\)设定为\(\rho(x,y)\)表示方块中每个位置在加权设定后的信号强度,则
\]
其中
\]
设定\(G_x\)为frequency encoding gradient,\(G_y\)为Phase encoding gradient,和序列图中保持一致,\(0\)至\(t\)为开始采样至实时采样的时间,SE序列图中的\(t_1\)和\(t_2\)为其中的两个\(t\)(这是一个变上限积分)。
令
\begin{aligned}
k_x=2\pi\int_{0}^{t}{G_x(t^{\prime})}dt^{\prime}\\
k_y=2\pi\int_{0}^{t}{G_y(t)}dt^{\prime}
\end{aligned}
\right.
\]
则
\]
即
\]
至此,在数学上说明了\(S(t)\)与\(\rho(x,y)\)互为傅里叶变换对。这时,我们将方块分割为一个3*3的方块进行进一步的说明。

其中的数值为该位置对应的\(\rho(x,y)\)数值。
以\(S_c(t)\)信号为例,其组成的是\(S(t)\)中的实部,在没有进行空间编码前

根据SE序列的波形,先是进行了Phase encoding gradient

Phase encoding gradient改变的也是\(\omega\),但作用了一段时间就停止了,相当于把纵向的各个单位以不同的\(\omega\)推了相同的时间,那么他们的相位\(\theta\)就发生了变化。并且,通过改变Phase encoding gradient的斜率,可以使得\(\theta\)的数值发生变化,对于一个3*3的方块,想要进行空间定位就要改变三次Phase encoding gradient斜率。
然后在收取数据的同时,进行frequency encoding gradient

frequency encoding gradient同样改变了\(\omega\),并且与收取信号同时进行,就此完成了区块的空间定位。通俗的来说,假设这些区块在一个环形的跑道进行赛跑,Phase encoding gradient就相当于在跑步开始之前,将同一个跑道上的每个跑者推到不同的起点上,frequency encoding gradient相当于使得不同跑道上的跑者有不同的跑步速度。
让我们回到公式
\begin{aligned}
k_x=2\pi\int_{0}^{t}{G_x(t^{\prime})}dt^{\prime}\\
k_y=2\pi\int_{0}^{t}{G_y(t)}dt^{\prime}
\end{aligned}
\right.
\]
这里面的\(k_x\)与\(k_y\)就是位于K空间的\(xy\)坐标(注意\(t\)与\(t^{\prime}\)的区别)。\(G_y(t)\)就是Phase encoding gradient,在SE序列中每次都需要重新变化斜率,需要在y方向将区域分割成多少块,就需要变化多少次斜率,每次变化都需要经过一个\(TR\)。而\(G_x\)则保持不变,并且只需要增加采样点数就可以增加此方向的区块分割,不需要增加采样的时间。故我们使用SE序列进行图像重建的时候,最好将分块更多的方向对应frequency encoding gradient,因为每次Phase encoding gradient都需要消耗一个\(TR\)。这里我截取MRI,The Basics书中的一幅图说明这一点。

对于一个\(3*3\)的方块,哪边放在frequency encoding gradient都无所谓。但如果是一个\(128*256\)的方块,那么就需要将256的那条边放在frequency encoding gradient上,以减少重建时间。
参考:
[1]MRI From Picture to Proton
[2]MRI, The Basics
[3]MRI磁振影像學 盧家鋒
[4]MRI原理-信号 - lemon lelieven的文章 - 知乎 https://zhuanlan.zhihu.com/p/137255997
[5]【磁共振的K空间】 https://www.bilibili.com/video/BV1ch411e7Yc/?share_source=copy_web&vd_source=0e8c3fe50c67df43ceeb30f63e36eb0d
核磁共振成像学习笔记——从FID信号到K空间的更多相关文章
- APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...
- APUE学习笔记——10.可靠信号与不可靠信号
首先说明:现在大部分Unix系系统如Linux都已经实现可靠信号. 1~31信号与SIGRTMIN-SIGRTMAX之间并不是可靠信号与不可靠信号的区别,在大多数系统下他们都是可靠信号. 只不过: 1 ...
- C++学习笔记(1)——数据类型占空间大小
boolean bool 1 byte character char 1 byte May be signed or unsigned wchar_t 1 byte char16_t ...
- oracle 学习笔记(2)创建表空间及用户授权
原文:http://www.cnblogs.com/smartvessel/archive/2009/07/06/1517690.html Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的 ...
- Oracle学习笔记—数据库,实例,表空间,用户、表之间的关系
之前一直使用的关系型数据库是Mysql,而新公司使用Oracle,所以最近从网上搜集了一些资料,整理到这里,如果有不对的地方,欢迎大家讨论. 基本概念: 数据库:Oracle 数据库是数据的物理存储. ...
- 主席树学习笔记(静态区间第k大)
题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输出 ...
- AXI_LITE源码学习笔记
AXI_LITE源码学习笔记 1. axi_awready信号的产生 准备接收写地址信号 // Implement axi_awready generation // axi_awready is a ...
- Linux学习笔记19——信号2
上一节中讲到了sigprocmask函数,它的作用是检查或修改它的进程信号掩码,这一节我们主要学习捕捉与忽略信号的函数sigaction和等待信号函数. 一 sigaction函数的作用 定义在接收 ...
- DBus学习笔记
摘要:DBus作为一个轻量级的IPC被越来越多的平台接受,在MeeGo中DBus也是主要的进程间通信方式,这个笔记将从基本概念开始记录笔者学习DBus的过程 [1] DBus学习笔记一:DBus学习的 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- STL再回顾(非常见知识点)
目录 为人熟知的pair类型 再谈STL 迭代器的使用 常用的STL容器 顺序容器 vector(向量) 构造方式 拥有的常用的成员函数(java人称方法) string 构造方式 成员函数 dequ ...
- 玩转Configmap配置应用的各种姿势
在 k8s 中使用配置主要可以有以下几种方式来实现: 1. 向容器传递命令行参数 2. 为每个容器指定自定义的环境变量 3. 通过特殊类型的卷将配置文件挂载到容器中 在 k8s 中覆盖命令行参数 和 ...
- Windows 客户端802.1x的一些设置
802.1x作为网络准入的验证,自然有很多好处.但是在实施过程中也遇到了些小问题.我在这里记录下来,希望对大家有帮助,遇到问题的时候能有个参考. 基于用户验证的方式,当用户修改了密码后,验证失败.此时 ...
- 聊聊计算机之Intel CPU的MESI协议
1.on-chip概念 on-chip:每个CPU有好几个物理核,它们分布在CPU上,称为on-chip on-chip first cache:每个核内的一级缓存 on chip branch ta ...
- Kibana:如何周期性地为 Dashboard 生成 PDF Report
转载自:https://blog.csdn.net/UbuntuTouch/article/details/108449775 按照上面的方式填写.记得把之前的 URL 拷贝到 webhook 下的 ...
- H5调用微信支付
这里用的是 vue项目; 首先在mounted中判断是否有openId,如果没有,则去获取 let openid = localStorage.getItem('openid'); if (!open ...
- [题解] Atcoder ARC 142 D Deterministic Placing 结论,DP
题目 (可能有点长,但是请耐心看完,个人认为比官方题解好懂:P) 首先需要注意,对于任意节点i上的一个棋子,如果在一种走法中它走到了节点j,另一种走法中它走到了节点k,那么这两种走法进行完后,棋子占据 ...
- 关于 LOCATE vs LIKE vs INSTR 性能分析
网上很多流传关于Mysql字符串对比的函数性能说法是 INSTR >> LOCATE >> LIKE 字符串,所以今天我自己测一下看看真假. 这是在字符串较长的情况下测试的结 ...
- 实例分析Scheduled Thread Pool Executor与Timer的区别
摘要:JDK 1.5开始提供Scheduled Thread PoolExecutor类,Scheduled Thread Pool Executor类继承Thread Pool Executor类重 ...
- 常用cmd及bat脚本命令
1.内部命令和外部命令 cmd 命令 :内部命令和外部命令 内部命令 系统自带命令 dir copy 外部命令 调用应用程序,可自由拓展 mstsc.exe(mstsc)远程连接 ping (ping ...