当前位置: 首页 > news >正文

医学图像重建—第一章笔记

序言

本书涵盖内容:
2D parallel beam imaging
2D fan beam imaging
3D parallel ray imaging
3D parallel plane imaging
3D cone beam imaging

算法包括:analytical method,iterative method

应用于:
X-ray CT
single photon emission CT(SPECT)
positron emission tomography(PET)
magnetic resonance imaging(MRI)

层析的基本原理

tomos:希腊语,意为截面,切片。
tomography:横截面成像的过程。
断层成像:得到物体内部的截面图像。
CT:computed tomography,计算机断层成像。
图像重建:由物体投影数据得到断层成像。

投影即射线和,线积分,radon变换。
下面举几个投影的例子:
1、二维 x-y 平面中的一个均匀圆盘,圆盘的圆心在坐标原点。圆盘投影值表示为:
p ( s ) = 2 ρ R 2 − s 2 , ∣ s ∣ < R p(s) = 2\rho \sqrt{R^2-s^2}, |s|<R p(s)=2ρR2s2 ,s<R
p ( s ) = 0 , ∣ s ∣ ≥ R p(s) = 0, |s|\geq R p(s)=0,sR
由于圆盘是中心对称的几何体,因此对于所有角度来说,投影都一样: p ( s , θ ) = p ( s ) p(s,\theta)=p(s) p(s,θ)=p(s)
2、 y 轴上坐标为 ( 0 , r ) (0,r) (0,r)的点源投影:
p ( s , θ ) = 1 , s = r s i n θ p(s, \theta) = 1, s=rsin\theta p(s,θ)=1,s=rsinθ
p ( s , θ ) = 0 , s ≠ r s i n θ p(s, \theta) = 0, s\neq rsin\theta p(s,θ)=0,s=rsinθ
探测器旋转一圈,采集到的投影数据是一个正弦函数。
由此,人们将投影数据称为正弦图。

点源重建:解出点源的位置以及数值。
投影数据:沿着每条与探测器垂直的直线,对物体求线积分。
反投影:沿着每条与探测器垂直的直线,将投影数据均匀涂抹回去。
反投影导致边缘模糊不清,先在点源投影脉冲两边添加一对负值的翅膀(滤波)再进行反投影。(FBP,Filtered Backprojection)
点源重建只需要两个角度投影数据。

反投影的定义取决于投影是如何定义的。但反投影运算并不是投影运算的逆运算,反投影算子不是投影算子的逆算子。
一个2x2的矩阵: A = [ a i j ] 2 × 2 A=[a_{ij}]_{2\times 2} A=[aij]2×2,对其进行0度与90度的投影:
p 11 = a 11 + a 21 p_{11} = a_{11} + a_{21} p11=a11+a21
p 12 = a 12 + a 22 p_{12} = a_{12} + a_{22} p12=a12+a22
p 21 = a 11 + a 12 p_{21} = a_{11} + a_{12} p21=a11+a12
p 22 = a 21 + a 22 p_{22} = a_{21} + a_{22} p22=a21+a22
进行反投影:
B = [ p 11 + p 21 p 12 + p 21 p 11 + p 22 p 12 + p 22 ] B=\begin{bmatrix} p_{11} + p_{21} & p_{12} + p_{21}\\ p_{11} + p_{22} & p_{12} + p_{22} \end{bmatrix} B=[p11+p21p11+p22p12+p21p12+p22]
原矩阵,投影矩阵,反投影矩阵: A , P , B A,P,B A,P,B,三者存在以下关系:
P = C A P = CA P=CA
B = C T P B = C^TP B=CTP
B = C T C A B = C^T C A B=CTCA
反投影算子 C T C^T CT与投影算子 C C C的关系不是求逆而是共轭转置

f ( x , y ) f(x,y) f(x,y)为物体截面密度函数
投影函数(射线和,线积分,Radon变换)有下面下面几种表达方式:
p ( s , θ ) = ∫ ∫ f ( x , y ) δ ( x c o s θ + y s i n θ − s ) d x d y p(s,\theta)=\int \int f(x,y)\delta(xcos\theta + ysin\theta -s)dxdy p(s,θ)=∫∫f(x,y)δ(xcosθ+ysinθs)dxdy
p ( s , θ ) = ∫ ∫ f ( x , y ) δ ( x ⃗ ⋅ θ ⃗ − s ) d x d y p(s,\theta)=\int \int f(x,y)\delta(\vec{x}\cdot \vec{\theta} -s)dxdy p(s,θ)=∫∫f(x,y)δ(x θ s)dxdy
p ( s , θ ) = ∫ f ( s c o s θ − t s i n θ , s s i n θ + t c o s θ ) d t p(s,\theta)=\int f(scos\theta - tsin\theta, ssin\theta+tcos\theta)dt p(s,θ)=f(scosθtsinθ,ssinθ+tcosθ)dt
p ( s , θ ) = ∫ f ( θ ⃗ + t θ ′ ⃗ ) d t p(s,\theta)=\int f(\vec{\theta} + t\vec{\theta'})dt p(s,θ)=f(θ +tθ )dt
p ( s , θ ) = ∫ f θ ( s , t ) d t p(s,\theta)=\int f_{\theta}(s,t)dt p(s,θ)=fθ(s,t)dt
以上表达式积分范围为 [ − ∞ , ∞ ] [-\infty, \infty] [,]
θ ⃗ , θ ′ ⃗ \vec{\theta}, \vec{\theta'} θ ,θ 为垂直与平行于平行束方向的单位向量。
θ \theta θ为探测器绕物体逆时针转,等价于物体绕旋转中心顺时针转。

反投影图像的几种表达方式:
b ( x , y ) = ∫ 0 π p ( s , θ ) ∣ s = x c o s θ + y s i n θ d θ b(x,y) = \int_0^\pi p(s,\theta)|_{s=xcos\theta + ysin\theta}d\theta b(x,y)=0πp(s,θ)s=xcosθ+ysinθdθ
b ( x , y ) = ∫ 0 π p ( s , θ ) ∣ s = x ⃗ ⋅ θ ⃗ d θ b(x,y) = \int_0^\pi p(s,\theta)|_{s=\vec{x} \cdot \vec{\theta}}d\theta b(x,y)=0πp(s,θ)s=x θ dθ
b ( x , y ) = ∫ 0 π p ( x ⃗ ⋅ θ ⃗ , θ ) d θ b(x,y) = \int_0^\pi p(\vec{x} \cdot \vec{\theta},\theta) d\theta b(x,y)=0πp(x θ ,θ)dθ
b ( x , y ) = 1 2 ∫ 0 2 π p ( s , θ ) ∣ s = x c o s θ + y s i n θ d θ b(x,y) = \frac{1}{2}\int_0^{2\pi} p(s,\theta)|_{s=xcos\theta + ysin\theta}d\theta b(x,y)=2102πp(s,θ)s=xcosθ+ysinθdθ

函数 f ( x ⃗ ) = δ ( x ⃗ − x ⃗ 0 ) = δ ( x − x 0 ) δ ( y − y 0 ) f(\vec{x}) = \delta(\vec{x} - \vec{x}_0) = \delta(x - x_0)\delta(y - y_0) f(x )=δ(x x 0)=δ(xx0)δ(yy0)的Radon变换:(逐步推导)
p ( s , θ ) = ∫ ∫ f ( x ⃗ ) δ ( x ⃗ ⋅ θ ⃗ − s ) d x d y p(s,\theta)=\int \int f(\vec{x})\delta(\vec{x}\cdot \vec{\theta} -s)dxdy p(s,θ)=∫∫f(x )δ(x θ s)dxdy
p ( s , θ ) = ∫ ∫ δ ( x − x 0 ) δ ( y − y 0 ) δ ( x c o s θ + y s i n θ − s ) d x d y p(s,\theta)=\int \int \delta(x - x_0)\delta(y - y_0) \delta(xcos\theta + ysin\theta -s)dxdy p(s,θ)=∫∫δ(xx0)δ(yy0)δ(xcosθ+ysinθs)dxdy
p ( s , θ ) = ∫ δ ( y − y 0 ) ∫ δ ( x − x 0 ) δ ( x c o s θ + y s i n θ − s ) d x d y p(s,\theta)=\int \delta(y - y_0) \int \delta(x - x_0) \delta(xcos\theta + ysin\theta -s)dxdy p(s,θ)=δ(yy0)δ(xx0)δ(xcosθ+ysinθs)dxdy
p ( s , θ ) = ∫ δ ( y − y 0 ) δ ( x 0 c o s θ + y s i n θ − s ) d y p(s,\theta)=\int \delta(y - y_0) \delta(x_0cos\theta + ysin\theta -s)dy p(s,θ)=δ(yy0)δ(x0cosθ+ysinθs)dy
p ( s , θ ) = δ ( x 0 c o s θ + y 0 s i n θ − s ) p(s,\theta)=\delta(x_0cos\theta + y_0sin\theta -s) p(s,θ)=δ(x0cosθ+y0sinθs)
这里运用了 δ \delta δ函数的第一条性质。

补充

之前共轭转置和代数余子式转置都叫做adjoint
现在共轭转置叫adjugate,代数余子式转置叫classical adjoint
代数余子式转置: C ∗ = ∣ C ∣ C − 1 C^* = |C|C^{-1} C=CC1
共轭转置: C ∗ = C H = c o n j ( C T ) C^* = C^H = conj(C^T) C=CH=conj(CT)
因此书上的这个伴随只得是共轭转置。
参考:[学习笔记]共轭转置矩阵与伴随矩阵都用A*表示合理吗? - 裴以鹏的文章 - 知乎. https://zhuanlan.zhihu.com/p/87330558.

狄拉克分布函数 δ ( x ) \delta(x) δ(x)可以通过高斯函数 G ( x , n ) G(x,n) G(x,n)来定义:
l i m n → ∞ ∫ − ∞ ∞ G ( x , n ) f ( x ) d x = ∫ − ∞ ∞ δ ( x ) f ( x ) d x = f ( 0 ) lim_{n\rightarrow \infty} \int_{-\infty}^{\infty} G(x,n)f(x)dx =\int_{-\infty}^{\infty} \delta(x) f(x)dx = f(0) limnG(x,n)f(x)dx=δ(x)f(x)dx=f(0)
其中, f ( x ) f(x) f(x)为一个平滑函数,对于任意N有 l i m x → ∞ x N f ( x ) = 0 lim_{x\rightarrow \infty} x^N f(x) = 0 limxxNf(x)=0 G ( x , n ) = ( n / π ) 1 / 2 e − n x 2 G(x,n) = (n/\pi)^{1/2} e^{-nx^2} G(x,n)=(n/π)1/2enx2

δ ( x ) \delta(x) δ(x)的性质:
∫ − ∞ ∞ δ ( x − a ) f ( x ) d x = ∫ − ∞ ∞ δ ( x ) f ( x + a ) d x = f ( a ) \int_{-\infty}^{\infty} \delta(x-a)f(x)dx = \int_{-\infty}^{\infty} \delta(x)f(x+a)dx = f(a) δ(xa)f(x)dx=δ(x)f(x+a)dx=f(a)
∫ − ∞ ∞ δ ( a x ) f ( x ) d x = f ( 0 ) / ∣ a ∣ \int_{-\infty}^{\infty} \delta(ax)f(x)dx = f(0)/|a| δ(ax)f(x)dx=f(0)/∣a
∫ − ∞ ∞ δ ( n ) ( x ) f ( x ) d x = ( − 1 ) n f ( n ) ( 0 ) \int_{-\infty}^{\infty} \delta^{(n)}(x)f(x)dx = (-1)^n f^{(n)}(0) δ(n)(x)f(x)dx=(1)nf(n)(0)
δ ( g ( x ) ) f ( x ) = Σ n δ ( x − λ n ) / ∣ g ′ ( λ n ) ∣ \delta (g(x)) f(x) = \Sigma_n \delta(x-\lambda_n)/|g'(\lambda_n)| δ(g(x))f(x)=Σnδ(xλn)/∣g(λn), λ n \lambda_n λn g g g的零点

二维狄拉克分布函数 δ ( x ⃗ ) = δ ( x ) δ ( y ) \delta (\vec{x}) = \delta(x)\delta(y) δ(x )=δ(x)δ(y)
三维狄拉克分布函数 δ ( x ⃗ ) = δ ( x ) δ ( y ) δ ( z ) \delta (\vec{x}) = \delta(x)\delta(y)\delta(z) δ(x )=δ(x)δ(y)δ(z)

相关文章:

医学图像重建—第一章笔记

序言 本书涵盖内容&#xff1a; 2D parallel beam imaging 2D fan beam imaging 3D parallel ray imaging 3D parallel plane imaging 3D cone beam imaging 算法包括&#xff1a;analytical method&#xff0c;iterative method 应用于&#xff1a; X-ray CT single photon…...

python-pytorch基础之神经网络分类

这里写目录标题 生成数据函数定义数据集定义loader加载数据定义神经网络模型测试输出是否为2个输入数据&#xff0c;输出结果 训练模型函数计算正确率 训练数据并保存模型测试模型准备数据加载模型预测对比结果 生成数据函数 import randomdef get_rectangle():widthrandom.ra…...

【C++ 程序设计】实战:C++ 变量实践练习题

目录 01. 变量&#xff1a;定义 02. 变量&#xff1a;初始化 03. 变量&#xff1a;参数传递 04. 变量&#xff1a;格式说明符 ① 占位符 “%d” 改为格式说明符 “%llu” ② 占位符 “%d” 改为格式说明符 “%f” 或 “%e” 05. 变量&#xff1a;字节数统计 06. 变量&a…...

微软对Visual Studio 17.7 Preview 4进行版本更新,新插件管理器亮相

近期微软发布了Visual Studio 17.7 Preview 4版本&#xff0c;而在这个版本当中&#xff0c;全新设计的扩展插件管理器将亮相&#xff0c;并且可以让用户可更简单地安装和管理扩展插件。 据了解&#xff0c;目前用户可以从 Visual Studio Marketplace 下载各式各样的 VS 扩展插…...

Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?

Kafka怎么做到避免消息重复消费的&#xff1f; 消费者组是什么&#xff1f; 消费者&#xff1a; 1、订阅Topic&#xff08;主题&#xff09; 2、从订阅的Topic消费&#xff08;pull&#xff09;消息&#xff0c; 3、将消费消息的offset&#xff08;偏移量&#xff09;保存在K…...

MongoDB 的增、查、改、删

Monogo使用 增 单条增加 db.member.insertOne({"name":"张三","age":18,"create":new Date()}) db.member.insert({"name":"李四1","age":18,"create":new Date()}) db.member.insertOne(…...

mysql常用操作命令

mysql常用操作命令 mysql:单进程多线程模型,一个SQL语句无法利用多个cpu core 一:基本命令 0.查看当前连接数 show global status like Thread$; show variables like "%timeout%"; show variables like "log_%";1.查看当前连接状态 show processlist…...

数学建模常见模型汇总

优化问题 线性规划、半定规划、几何规划、非线性规划、整数规划、多目标规划(分层序列法)、动态规划、存贮论、代理模型、响应面分析法、列生成算法 预测模型 微分方程、小波分析、回归分析、灰色预测、马尔可夫预测、时间序列分析(AR MAMA.RMA ARTMA LSTM神经网络)、混沌模…...

C#使用LINQ查询操作符实例代码(二)

目录 六、连表操作符 1、内连接2、左外连接(DefaultIfEmpty)3、组连接七、集合操作 八、分区操作符 1、Take()&#xff1a;2、TakeWhile()&#xff1a;3、Skip()&#xff1a;4、SkipWhile()&#xff1a;九、聚合操作符 1、Count&#xff1a; 返回集合项数。 2、LongCount&…...

jenkinsfile小试牛刀

序 本文主要演示一下如何用jenkinsfile来编译java服务 安装jenkins 这里使用docker来安装jenkins docker run --name jenkins-docker \ --volume $HOME/jenkins_home:/var/jenkins_home \ -p 8080:8080 jenkins/jenkins:2.416之后访问http://${yourip}:8080&#xff0c;然后…...

C++ xmake构建

文章目录 一、xmake.lua二、xmake常用语句 一、xmake.lua --xmake.luaset_project("XXX")add_rules("mode.debug", "mode.release") set_config("arch", "x64")if is_plat("windows") then -- the release modei…...

推荐带500创作模型的付费创作V2.1.0独立版系统源码

ChatGPT 付费创作系统 V2.1.0 提供最新的对应版本小程序端&#xff0c;上一版本增加了 PC 端绘画功能&#xff0c; 绘画功能采用其他绘画接口 – 意间 AI&#xff0c;本版新增了百度文心一言接口。 后台一些小细节的优化及一些小 BUG 的处理&#xff0c;前端进行了些小细节优…...

wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别

目录 wps表格横纵坐标轴怎么设置&#xff1f; MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP&#xff0c;全连接网络&#xff0c;DNN三者的关系 wps表格横纵坐标轴怎么设置&#xff1f; 1、打开表格点击图的右侧…...

rdb和aof

RDB持久化&#xff1a;原理是将Redis在内存中的数据库记录定时dump到磁盘上的RDB持久化AOF持久化&#xff1a;原理是将Redis的操作日志以追加的方式写入文件 rdb&#xff1a; 开启方式&#xff1a;客户端可以通过向Redis服务器发送save或bgsave命令让服务器生成rdb文件&#…...

TCP网络通信编程之网络上传文件

【图片】 【思路解析】 【客户端代码】 import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;/*** ProjectName: Study* FileName: TCPFileUploadClient* author:HWJ* Data: 2023/7/29 18:44*/ public class TCPFil…...

Java中对Redis的常用操作

目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类&#xff0c;创建RedisTempla…...

链路追踪设计

...

Golang之路---02 基础语法——常量 (包括特殊常量iota)

常量 //显式类型定义const a string "test" //隐式类型定义const b 20 //多个常量定义 const(c "test2"d 2.3e 27)iota iota是Golang语言的常量计数器&#xff0c;只能在常量表达式中使用 iota在const关键字出现时将被重置为0&#xff0c;const中每新…...

Pytest学习教程_装饰器(二)

前言 pytest装饰器是在使用 pytest 测试框架时用于扩展测试功能的特殊注解或修饰符。使用装饰器可以为测试函数提供额外的功能或行为。   以下是 pytest 装饰器的一些常见用法和用途&#xff1a; 装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。可以创建可重…...

redis的如何使用

1、redis的使用 1.1windows安装 安装包下载地址&#xff1a;Releases dmajkic/redis GitHub 1.2 redis中常使用的几个文件 1.3 redis中运行 双击redis-server&#xff0c;既可以运行。 1.4使用redis客户单来连接redis 1.5redis的常用指标 redis-serve 服务端,端口号&am…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...