核磁共振成像学习笔记——从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 ...
随机推荐
- 从云AK泄露利用看企业特权管理
从云AK泄露利用看企业特权管理 目录 - 缘起 - 当前主流AK泄露检测方式 - 防止AK滥用的关键要素? - 哪些算特权账号管理? - 如何做特权账号管理? - 特权管理与堡垒机.IAM.零信任的关 ...
- 海康摄像机使用GB28181接入SRS服务器的搭建步骤---源码安装的方式
下载代码 地址:https://github.com/ossrs/srs-gb28181 https://github.com/ossrs/srs-gb28181.git 注意:使用的是含有gb281 ...
- Kubernetes 多租户:资源配额
资源配额用于管理命名空间中对象使用的资源量,我们可以按 CPU 和内存用量或对象数量来设置配额.通过资源配额,可以确保租户不会使用超过其分配份额的集群资源. 资源配额是通过 ResourceQuota ...
- Linux 宝塔部署 ASP.NET Core 应用
第一步,发步应用 我这是一个API 应用和 MVC 应用 设置,服务器上要运行的端口 API 端口5000 MVC 端口5001 打包文件夹,发步 1.桌面新建俩个文件夹 2.右键项目发步,选中iis ...
- Deepin系统navicat15安装
Deepin系统安装navicat15(已验证) 下载Navicat15 通过下面地址下载Navicat15,默认下载到桌面即可 $ https://download.navicat.com.cn/d ...
- day43-反射02
2.Class类 2.1基本介绍 Class类也是类,因此也继承Object类 Class类对象不是new出来的,而是系统创建的 对于某个类的Class类对象,在内存中只有一份,因为类只加载一次 每个 ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(25)-Fiddler如何优雅地在正式和测试环境之间来回切换-下篇
1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考. 2.实际工作场景 2.1问题场景 (1)已发布 ...
- PAT (Advanced Level) Practice 1002 A+B for Polynomials 分数 25
This time, you are supposed to find A+B where A and B are two polynomials. Input Specification: Each ...
- [CG从零开始] 3. 安装 pyassimp 库加载模型文件
assimp 是一个开源的模型加载库,支持非常多的格式,还有许多语言的 binding,这里我们选用 assimp 的 python 的 binding 来加载模型文件.不过社区主要是在维护 assi ...
- C# 内存泄漏之 Internal 关键词代表什么?
一:背景 1. 背景 前段时间有位朋友咨询说他的程序出现了非托管内存泄漏,说里面有很多的 HEAP_BLOCK 都被标记成了 Internal 状态,而且 size 都很大, 让我帮忙看下怎么回事? ...