【核磁共振成像】方格化重建
目录
- 一、缩放比例
- 二、方格化变换的基础
- 三、重建时间
- 四、方格化核
一、缩放比例
对于笛卡尔K空间直线轨迹数据可直接用FFT重建,而如果K空间轨迹的任何部分都是非均匀取样的 可用DFT直接重建,有时称为共轭相位重建,但此法太慢不实用。把数据再取样到直线格使能FFT重建要快得多。普遍应用的内插方法是把数据与一个平滑函数卷积再取样,这个 重建过程(包括FFT) 被称为 方格化。
方格化在K空间中用一个卷积转换输入数据到一个均匀直线格数据集,因自选密度本身是紧支的(即有限区域外都是零),只要测量值是大于或等于奈奎斯特频率采样的,任意位置的K空间值都可以被测量值的sinc内插精确计算(即测量的K空间值与sinc函数卷积)。
sinc内插的缺点是sinc函数不是紧支的。因此,在每个新K空间位置计算K空间值,要求sinc函数被所有测量的数据乘,导致比较长的计算时间。
在方格化中,sinc函数被一个紧支函数(方格化核)取代以节省计算时间。K空间数据与方格化核卷积等价于图像被核的FT乘。
sinc卷积方格化导致些许图像质量损失,因为再取样卷积的K空间导致一个带有混叠的图像。通常通过K空间过取样以增大FOV(把直线混叠的复制进一步推离开推向),以降低混叠,然后在FT后放弃额外的FOV。

左为模拟的spiral扫描图像,显示有混叠伪影。
混叠延申到无限远,即使显示的截面有限(方框是扫描中指定的FOV)。
右为从左图(尚无直线再取样)的K空间数据的内插产生的图像
如果对应于左图的K空间数据与一紧支函数而不是sinc卷积,混叠伪影就不会被截去。
径向投影MR数据也可以用CT中常用的滤波背投影算法,但此法在MRI中不受欢迎。对一个离散数据集再取样问题已经发展了许多方法,直接内插会导致伪影,基于卷积的方法比如方格化在MRI中被广泛使用,因为它比其他方法快,并且能给出足够好的图像质量。
所谓 两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加。在连续情况下,叠加指的是对两个函数的乘积求积分,在离散情况下就是加权求和,为简单起见就统一称为叠加。卷积的“卷”,指的的函数的翻转,从 g(t) 变成 g(-t) 的这个过程;同时,“卷”还有滑动的意味在里面。如果把卷积翻译为“褶积”,那么这个“褶”字就只有翻转的含义了。卷积的“积”,则指的是积分/加权求和。
以信号分析为例,卷积的结果是不仅跟当前时刻输入信号的响应值有关,也跟过去所有时刻输入信号的响应都有关系,考虑了对过去的所有输入的效果的累积。在图像处理中,卷积处理的结果,其实就是把每个像素周边的,甚至是整个图像的像素都考虑进来,对当前像素进行某种加权处理。所以说,“积”是全局概念,或者说是一种“混合”,把两个函数在时间或者空间上进行混合。
进行“卷”(翻转)的目的其实是施加一种约束,它指定了在“积”的时候以什么为参照。在信号分析的场景,它指定了在哪个特定时间点的前后进行“积”,在空间分析的场景,它指定了在哪个位置的周边进行累积处理。
二、方格化变换的基础
方格化所需要的步骤为:
(1)对各个输入数据点计算K空间位置和密度补偿。
(2)计算方格化核及其反傅里叶变换,存储方格化核作为一个查找表或者对各个输入、输出数据样本存储值。
(3)如果需要,从输入数据减去基线。
(4)准备一个待输出K空间矩阵,对各个输入数据样本在输入点的紧支距离内找出所有均匀直线输出位置。
(5)应用一个K空间窗和符号交替到再取样的直线K空间数据上。
(6)反傅里叶变换均匀直线再取样的K空间数据上。
(7)如果K空间过取样用于降低混叠,提取图像的中间位置相应于所希望的最终FOV。
(8)用方格化核的反傅里叶变换除以中间像。
(9)如果需要实像或虚像,进行符号交替。
(10)计算最终图像,比例缩放。

方格化是一个局部过程,只需在原取样点附近执行。
为了节省计算时间,方格化核值通常不再对各个输出点计算。方格化核值只对相对小数量点计算,比如256点,并存在一个查找表中。如果同样的K空间轨迹用于重复的重建,并且有足够多存储器的话,第一个像之后所有像的重建时间可通过查表而大大节省。
三、重建时间
方格化重建 可分为三步:卷积、FFT和被方格化核的IFT除。
卷积步乘法运算次数 是输入数据样本数Ns乘以位于各输入样本的距离w内的均匀直线位置数。如果w是用均匀直线样本的单位给定的,乘运算次数对于1D方格化是wNs,对2D方格化是w^2Ns,以此类推。
例如 在傅里叶变换中,一个复数函数的实部和虚部分别对应着信号的振幅和相位。如果一个信号的傅里叶变换F(k)的共轭F*(k)等于F(-k),那么这个信号的相位是对称的,即F(k)和F*(k)相位相等。相位信息可以用来描述信号的时间演化和频率成分。
受敲击的鼓面振幅沿半径方向的分布就是一个贝塞尔函数(考虑正负号)。实际上,这些振动是各阶贝塞尔函数的叠加。
根据图像阵列的特性,对其按下列步骤进行FFT变换:
(1)将图像数据阵列变换为按列存储,即从下到上,从左到右;
(2)对每一列图像数据进行1-D FFT;
(3)将按列处理后的数据结果存储,并对它们按原图像阵列的形式,即按行重新存储;
(4)对重新排列的数据逐行进行1-D FFT;
(5)将每行处理后的数据存储起来,即得到2-D 数字图像FFT结果。
关于离散傅里叶变换变换:
(1)实数信号变换的结果X[k]是一组复数,里面一半数据和另一半是共轭的。意味着N点DFT,只有N/2的数据是含有有用信息的。
(2)用DFT的结果如何做频谱分析,即在采样频率为fs的情况下, x[n]的n只是一个离散的数值。
四、方格化核
最佳1D方格化核g(K)是Kaiser-Bessel函数,在终像最逼近理想像(例如用共轭相位重建)的意义上说,Kaiser-Bessel函数作为方格化核能给出最佳结果。

(a)图为Kaiser-Bessel函数(任意单位)作为K空间距离(以K空间为单位)的函数
(b)图为Kaiser-Bessel函数(任意单位)的反傅里叶变换曲线作为图像视野L的函数,Kaiser-Bessel函数参数w=4,b=8
相关文章:
【核磁共振成像】方格化重建
目录 一、缩放比例二、方格化变换的基础三、重建时间四、方格化核 一、缩放比例 对于笛卡尔K空间直线轨迹数据可直接用FFT重建,而如果K空间轨迹的任何部分都是非均匀取样的 可用DFT直接重建,有时称为共轭相位重建,但此法太慢不实用。把数据再…...
JAVA中时间戳和LocalDateTime的互转
时间戳转LocalDateTime: 要将时间戳转换为LocalDateTime并将LocalDateTime转换回时间戳,使用Java的java.time包。以下是示例代码: import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId;public class Times…...
无涯教程-进程 - 创建终止
到现在为止,我们知道无论何时执行程序,都会创建一个进程,并且该进程将在执行完成后终止,如果我们需要在程序中创建一个进程,并且可能希望为其安排其他任务,该怎么办。能做到吗?是的,显然是通过…...
LLMs参考资料第一周以及BloombergGPT特定领域的训练 Domain-specific training: BloombergGPT
1. 第1周资源 以下是本周视频中讨论的研究论文的链接。您不需要理解这些论文中讨论的所有技术细节 - 您已经看到了您需要回答讲座视频中的测验的最重要的要点。 然而,如果您想更仔细地查看原始研究,您可以通过以下链接阅读这些论文和文章。 1.1 Trans…...
LeetCode字符串数组最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入:strs [“dog”,“raceca…...
Git gui教程---第八篇 Git gui的使用 创建一个分支
一般情况下一个主分支下代码稳定的情况下会新建出一个分支,然后在分支上修改,修改完成稳定后再合并到主分支上。 或者几个人合作写一份代码,每个人各一个分支,测试稳定再合并到主分支上。 在git gui选择菜单栏“分支”࿰…...
Docker修改daemon.json添加日志后无法启动的问题
docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升…...
QT6编译的文件分布情况
工程文件和编译文件位置分布 工程文件是自己建立的源文件位置,而同等级的位置在工程构建时会重新生成一个编译后的文件夹,里面包含了可执行的exe文件。而这个文件夹的内容也是QT ide运行时读取的文件,但这个文件的内容在IDE中如果不重新构建…...
2023中国算力大会 | 中科驭数加入DPU推进计划,探讨DPU如何激活算网融合新基建
8月18日,由工业和信息化部、宁夏回族自治区人民政府共同主办的2023中国算力大会在宁夏银川隆重召开。作为DPU算力基础设施领军企业,中科驭数产品运营部副总经理曹辉受邀在中国信通院承办的算网融合分论坛发表主题演讲《释放极致算力 DPU激活算网融合新基…...
leetcode 115. 不同的子序列
2023.8.25 使用dp数组解决。 定义一个二维dp数组,dp[i][j]的含义为:字符串s(下标为i-1)中,子序列t(下标为j-1)出现的个数。 当字符串s[i-1]和t[j-1]相同时,递推公式为:d…...
gradio应用transformer模块部署生成式人工智能应用程序
文章目录 gradio简介hello world范例文本分类文本问答抽取式问答gr.Interface自定义实现问答Blocks使用gradio简介 gradio只需在原有的代码中增加几行,就能自动化生成交互式web页面,并支持多种输入输出格式,比如图像分类中的图>>标签,超分辨率中的图>>图等。 …...
【目标检测】“复制-粘贴 copy-paste” 数据增强实现
文章目录 前言1. 效果展示代码说明3. 参考文档4. 不合适点 前言 本文来源论文《Simple Copy-Paste is a Strong Data Augmentation Method for Instance Segmentation》(CVPR2020),对其数据增强方式进行实现。 论文地址:https:/…...
深度学习知识总结2:主要涉及深度学习基础知识、卷积神经网络和循环神经网络
往期链接:Summer 1 : Summarize linear neural networks and multi-layer perceptron Summer 2: Summarize CNN and RNN 文章目录 Summer 2: Summarize CNN and RNNPart 1 Deep Learning> 层和块> 参数管理和延后初始化> 读写文件和GPU Part 2 CNN> 从…...
Spring Boot 集成 WebSocket 实现服务端推送消息到客户端
WebSocket 简介 WebSocket 协议是基于 TCP 的一种新的网络协议,它实现了浏览器与服务器全双工(full-duplex)通信—允许服务器主动发送信息给客户端,这样就可以实现从客户端发送消息到服务器,而服务器又可以转发消息到客…...
vr游乐场项目投资方案VR主题游乐馆互动体验
VR文旅景区沉浸互动体验项目是指利用虚拟现实技术在文旅景区中创建沉浸式的互动体验项目。通过虚拟现实技术,游客可以身临其境地体验景区的风景和文化,与虚拟场景中的元素进行互动。 普乐蛙VR设备 普乐蛙VR设备案例分享 这种项目可以为游客带来全新的旅游…...
chrom扩展开发配合百度图像文字识别实现自动登录(后端.net core web api)
好久没做浏览器插件开发了,因为公司堡垒机,每次登录都要输入账号密码和验证码。太浪费时间了,就想着做一个右键菜单形式的扩展。 实现思路也很简单,在这里做下记录,方便下次开发参考。 一,先来了解下chro…...
香港服务器怎么打开SSH
SSH是一种远程登录协议,可以通过加密方式在网络上安全地传输数据。它允许用户在远程服务器上执行命令,管理文件和目录,并进行其他系统管理任务。 如何打开SSH服务? 1.确认已安装OpenSSH服务器: 你可以通过命令sudoapt-geti…...
【LeetCode】437.路径总和Ⅲ
题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节…...
Mybatis-plus中操作JSON字段
1.实体类上要加上自动映射 TableName(value "school", autoResultMap true)2.json字段上加上json处理器 TableField(value "cover_url", typeHandler JacksonTypeHandler.class)private List<String> cover_url;参考博客 http://www.dedeyun.co…...
第十五课、Windows 下打包发布 Qt 应用程序
功能描述:讲解了 Windows 下打包发布 Qt 应用程序的三种方法,并对比优缺点 一、利用 windepolyqt 工具打包发布 Qt 提供了一个 windeployqt 工具来自动创建可部署的文件夹。 打包发布流程: 1. 新建一个文件夹,将编译后的可执行…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
