数学中的图像重构 -- CT中的 Radon 变换 图解
这是我之前在剑桥大学上的一节研究生应数选修课 Image Reconstruction,之前没怎么听懂,所以这段时间想把它补起来。
这节课老师没有明确的讲义,所以我就照记着的一些书的顺序,把它复习了。
整堂课只有我一个人上 QAQ,所以应该算是在数学系里比较小众的方向吧。
因此这篇笔记 基本上是为了 我自己以后查资料或公式好找一点。
笔记部分摘自 Mathematical Methods in Image Reconstruction. F.Natterer and F.Wuebbeling.
- 笔记总目录
- 专栏
文章目录
- 引言
- 图像重构 Intro
- Radon Transform 拉东变换 Rf{\color{red}\mathcal{R}f}Rf
- 傅里叶变换 F{\color{red}\mathcal{F}}F
- BackProjection operator 后向投影 算子 R∗{\color{red}\mathcal{R}^*}R∗
引言
图像重构 Intro
Radon Transform 拉东变换 Rf{\color{red}\mathcal{R}f}Rf
拉东变换是一个积分变换
先它将定义在二维平面上的一个函数 f(x1,x2)f(x_1,x_2)f(x1,x2) 沿着平面上的任意一条直线做线积分,相当于对函数 f(x1,x2)f(x_1,x_2)f(x1,x2) 做 CT扫描
令 X射线 在 xxx 点 线性衰减后 为f(x)f(x)f(x)。 那么 X射线光束 LLL 经过的部分成像就是 g(L)=∫Lf(x)dxg(L)=\int_L f(x)dxg(L)=∫Lf(x)dx 。
如果我们用 sss (原点到射线的距离)与 θ\thetaθ (距离的夹角)表示射线 LLL, 如图:
可得这条直线为 L(θ,s)={x∈R2:x⋅θ=s},θ∈S1,s∈R1L(\theta,s) = \{x\in \R^2: x\cdot \theta = s\},\; \theta \in S^1, \; s\in \R^1L(θ,s)={x∈R2:x⋅θ=s},θ∈S1,s∈R1
可得如下方程:
g(θ,s)=∫x⋅θ=sf(x)dx=(Rf)(θ,s)g(\theta,s) = \int_{x\cdot \theta = s} f(x)dx = (\mathcal{R}f)(\theta,s)g(θ,s)=∫x⋅θ=sf(x)dx=(Rf)(θ,s)
- 用python把它表示出来:
import matplotlib.pyplot as plt
import numpy as np
# 为了之后扩展到 n 维 这里用 x_1 x_2 表示
x1 = np.arange(-10,10.01,.01) # x_1 可以理解为 二维(x,y) 坐标轴的x
x2 = np.arange(-10,10.01,.01) # x_2 可以理解为 二维(x,y) 坐标轴的y
xv = np.meshgrid(x1,x2) # 网格化
degree = 45 # theta 角度
theta = degree/180 *np.pi
s = 2. # s 长度
Lv = abs(xv[0]*np.cos(theta) + xv[1]*np.sin(theta)-s) # x1*cos(theta) + x2*cos(theta) - s = 0
L = np.max((Lv<0.01)*xv[1],axis=0)+np.min((Lv<0.01)*xv[1],axis=0) # 筛选出 满足条件的值
# L.nonzero() L 的非零值坐标
plt.plot(x1[L.nonzero()],L[L.nonzero()],'blue')
plt.show()
- 我还做了变量为 sss 和 θ\thetaθ 的动图:
- 接下来,把它拓展到更高维度 n 维。
- 构筑 n 维超平面 H(θ,s)={x∈Rn:x⋅θ=s},θ∈Sn−1(unit sphere) ,s∈R1H(\theta,s) = \{x\in \R^n: x\cdot \theta = s\},\; \theta \in S^{n-1} \text{ (unit sphere) }, \; s\in \R^1H(θ,s)={x∈Rn:x⋅θ=s},θ∈Sn−1 (unit sphere) ,s∈R1
- 超平面垂直于 θ\thetaθ 距离为 sss
- 同时 H(−θ,−s)=H(θ,s)H(-\theta,-s) = H(\theta,s)H(−θ,−s)=H(θ,s) 为 偶函数
- 可定义
(Rf)(θ,s)=∫x⋅θ=sf(x)dx=∫H(θ,s)f(x)dx(\mathcal{R}f) (\theta, s)= \int_{x\cdot \theta = s} f(x)dx = \int_{H(\theta,s)}f(x) dx(Rf)(θ,s)=∫x⋅θ=sf(x)dx=∫H(θ,s)f(x)dx
- Rf\mathcal{R}fRf 函数在 单位圆柱 unit sylinder 上
Cn={(θ,s):θ∈Sn−1,s∈R1}{\color{red}C^n} = \{(\theta,s): \theta \in S^{n-1} ,\; s\in \R^1\}Cn={(θ,s):θ∈Sn−1,s∈R1}
因为 H(−θ,−s)=H(θ,s)H(-\theta,-s) = H(\theta,s)H(−θ,−s)=H(θ,s) , 所以 (Rf)(−θ,−s)=Rf(θ,s)(\mathcal{R}f)(-\theta,-s) = \mathcal{R}f(\theta,s)(Rf)(−θ,−s)=Rf(θ,s) 为偶函数
由于 s−x⋅θ=0s - x\cdot \theta = 0s−x⋅θ=0 变换可得:
(Rf)(θ,s)=∫Rnδ(s−x⋅θ)f(x)dx(\mathcal{R}f)(\theta,s) = \int_{\R^n} \delta(s - x \cdot \theta) f(x) dx(Rf)(θ,s)=∫Rnδ(s−x⋅θ)f(x)dx
- θ⊥={x∈Rn:x⋅θ=0}\theta^\perp = \{x\in\R^n: x\cdot \theta = 0\}θ⊥={x∈Rn:x⋅θ=0} 正交 θ\thetaθ 的子空间
(Rf)(θ,s)=∫θ⊥f(sθ+y)dy(\mathcal{R}f)(\theta,s) = \int_{\theta^\perp}f(s\theta + y) dy(Rf)(θ,s)=∫θ⊥f(sθ+y)dy
- 由于 f∈S(Rn)f \in {\color{red}\mathcal{S}(\R^n)}f∈S(Rn) 在速降函数空间内(Schwartz space)
- 那么 Rf∈S(Cn)\mathcal{R}f \in \mathcal{S}(C^n)Rf∈S(Cn)
- S(Cn){\color{red}\mathcal{S}(C^n)}S(Cn) 为
S(Cn)={g∈C∞(Cn):sl∂k∂skg(θ,s)bounded ,l,k=0,1,⋯}\mathcal{S}(C^n) = \Big \{ g \in \mathcal{C}^\infty(C^n): s^l \frac{\partial^k}{\partial s^k} g(\theta,s) \text{ bounded }, \; l,k = 0,1,\cdots \Big \} S(Cn)={g∈C∞(Cn):sl∂sk∂kg(θ,s) bounded ,l,k=0,1,⋯}
C∞(Cn){\color{red}\mathcal{C}^\infty}(C^n)C∞(Cn) 是所有从 CnC^nCn 射到 C\mathcal{C}C 的光滑函数 (无穷阶可导的函数)
卷积运算
(g⋆h)(θ,s)=∫R1g(θ,s−t)h(θ,t)dt(g \star h)(\theta, s) = \int_{\R^1} g(\theta, s-t)h(\theta, t)dt(g⋆h)(θ,s)=∫R1g(θ,s−t)h(θ,t)dt
傅里叶变换 F{\color{red}\mathcal{F}}F
F(g(θ,s))=(2π)−1/2∫R1g(θ,s)e−isσds\mathcal{F}(g(\theta, s)) = (2\pi)^{-1/2} \int_{\R^1}g(\theta, s) e^{-is\sigma} dsF(g(θ,s))=(2π)−1/2∫R1g(θ,s)e−isσds
- 当 f∈S(Rn),θ∈Sn−1(unit sphere) ,σ∈R1f\in \mathcal{S}(\R^n), \; \theta \in S^{n-1} \text{ (unit sphere) }, \; \sigma \in \R^1f∈S(Rn),θ∈Sn−1 (unit sphere) ,σ∈R1
F[(Rf)(θ,σ)]Cn=(2π)n−12F[f(σθ)]Rn\mathcal{F}\big[(\mathcal{R}f)(\theta, \sigma)\big]_{C^n} = (2\pi)^{\frac{n-1}{2}}\mathcal{F}[f(\sigma \theta)]_{\R^n}F[(Rf)(θ,σ)]Cn=(2π)2n−1F[f(σθ)]Rn
- 当 f,g∈S(Rn)f, g \in \mathcal{S}(\R^n)f,g∈S(Rn)
Rf⋆RgCn=R(f⋆g)Rn\underset{C^n}{\mathcal{R}f \star \mathcal{R}g} = \underset{\R^n}{\mathcal{R}(f\star g)}CnRf⋆Rg=RnR(f⋆g)
BackProjection operator 后向投影 算子 R∗{\color{red}\mathcal{R}^*}R∗
(R∗g)(x)=∫Sn−1g(θ,x⋅θ)dθ,g∈S(Cn)(\mathcal{R}^* g)(x) = \int_{S^{n-1}} g(\theta, x\cdot \theta) d\theta, \; g\in \mathcal{S}(C^n)(R∗g)(x)=∫Sn−1g(θ,x⋅θ)dθ,g∈S(Cn)
因此 对于 g=Rf,(R∗g)(x)g = \mathcal{R}f, \; (\mathcal{R}^*g)(x)g=Rf,(R∗g)(x) 是 所有超平面 经过 xxx, fff 的积分 的均值。
在数学中 可以说 R∗\mathcal{R}^*R∗ 是 R\mathcal{R}R 的共轭
对于 g∈S(R1),f∈S(Rn)g \in \mathcal{S}(\R^1), \; f\in \mathcal{S}(\R^n)g∈S(R1),f∈S(Rn)
∫R1g(s)(Rf)(θ,s)ds=∫Rng(x⋅θ)f(x)dx\int_{\R^1} g(s) (\mathcal{R}f)(\theta,s) ds = \int_{\R^n} g(x \cdot \theta)f(x) dx∫R1g(s)(Rf)(θ,s)ds=∫Rng(x⋅θ)f(x)dx
- 对于 g∈S(Cn),f∈S(Rn)g \in \mathcal{S}(C^n), \; f\in \mathcal{S}(\R^n)g∈S(Cn),f∈S(Rn)
∫Sn−1∫R1gRfdθds=∫Rn(R∗g)f(x)d(x)dx\int_{S^{n-1}}\int_{\R^1} g \mathcal{R}f d\theta ds = \int_{\R^n} (\mathcal{R}^*g)f(x)d(x) dx∫Sn−1∫R1gRfdθds=∫Rn(R∗g)f(x)d(x)dx
- 当 f∈S(Rn)f\in \mathcal{S}(\R^n)f∈S(Rn) 和 g∈S(Cn)g\in \mathcal{S}(C^n)g∈S(Cn)
(R∗g)⋆f=R∗(g⋆Rf)(\mathcal{R}^*g ) \star f = \mathcal{R}^* (g \star \mathcal{R}f)(R∗g)⋆f=R∗(g⋆Rf)
- 当 g∈S(Cn)g\in\mathcal{S}(C^n)g∈S(Cn) 为偶 (例 g(θ,s)=g(−θ,−s)g(\theta,s)= g(-\theta,-s)g(θ,s)=g(−θ,−s) )
F[(R∗g)(ξ)]=2(2π)n−12∣ξ∣1−nF[g(ξ∣ξ∣,∣ξ∣)]\mathcal{F}\big[(\mathcal{R}^* g)(\xi)\big] = 2 (2\pi)^{\frac{n-1}{2}}\lvert \xi \rvert^{1-n} \mathcal{F}\Big[g(\frac{\xi}{\lvert \xi \rvert},\lvert \xi \rvert)\Big]F[(R∗g)(ξ)]=2(2π)2n−1∣ξ∣1−nF[g(∣ξ∣ξ,∣ξ∣)]
- 通过 Riesz potential 里斯位势 在 CnC^nCn
F[(Iαg)(θ,σ)]=∣σ∣−αF[g(θ,σ)],α<1\mathcal{F}\big[(\mathcal{I}^\alpha g)(\theta, \sigma)\big] = \lvert \sigma \rvert^{-\alpha} \mathcal{F}\Big[g(\theta,\sigma)\Big], \; \alpha <1F[(Iαg)(θ,σ)]=∣σ∣−αF[g(θ,σ)],α<1
数学中的图像重构 -- CT中的 Radon 变换 图解相关推荐
- opencv 截取轮廓中的图像——实现PS中的抠图功能 Opencv extract area circled by contour
opencv 截取轮廓中的图像--实现PS中的抠图功能 Opencv extract area circled by contour https://blog.csdn.net/sac761/arti ...
- 【CT算法,radon变换】基于MATLAB的CT算法,radon变换的三维建模仿真
1.软件版本 MATLAB2021a 2.本算法理论知识 1.输入:T(x,y,z) 使用stl读取函数完成T的导入工作 2.做Radon变换,得投影图:P 正常Radon变换即可. 3.对P:应用斜 ...
- opencv 截取轮廓中的图像——实现PS中的抠图功能
我们很容易用findContours()函数将图像中的轮廓提取出来,但是并没有将轮廓所包围的图像输出的函数,以下是几个有类似功能的函数: cvimageroi():得到包围ROI(感兴趣区域)的矩形区 ...
- (二十二:2020.11.09)论文学习之《CT中伪影的识别和规避》
脚踏实地地解决CT的伪影问题(一)<Artifacts in CT: Recog-nition and Avoidance> 讲在前面 摘要 介绍 物理伪影 一.Beam Hardenin ...
- matlab仿真光场成像,光场图像重构算法仿真
引言 光场成像由于获取了光辐射的完整分布, 可以通过光场信息重构算法的数据处理手段计算出所需的对焦图像[.光场相机通过四维坐标系参数表征出空间内光辐射位置信息和方向信息, 因此与传统相机的二维图像相比 ...
- matlab中单独存图_Matlab中图片保存的四种方法
Matlab 中图片保存的四种方法 matlab 的绘图和可视化能力是不用多说的, 可以说在业内是家喻户晓的. Matlab 提供了丰富 的绘图函数,比如 ez** 系类的简易绘图函数, surf . ...
- 利用靶区勾画的RT struct文件分析相关联的Dicom图像中肿瘤部分的CT(HU)值分布(升级版)
利用靶区勾画的RT struct文件分析相关联的Dicom图像中肿瘤部分的CT(HU)值分布(升级版) % ============================================== ...
- 在matlab中以图像中心为旋转轴逆时针旋转30度自编程序,MATLAB数学建模习题
MATLAB数学建模习题1 一.单项选择题(将选择答案写在答题纸上,每小题2分共20分) 1.在MATLAB命令窗口中键入命令,Vname=prod(7:9)/prod(1:3),可计算组合数 如果省 ...
- 【转】CT图像重构方法详解——傅里叶逆变换法、直接反投影法、滤波反投影法
转自:CT图像重构方法详解--傅里叶逆变换法.直接反投影法.滤波反投影法_Absolute Zero-CSDN博客_反投影法 绪 在做CT图像处理的时候遇到很多问题,对于滤波反变换有许多细 ...
最新文章
- 【原创】rman 全库备份脚本
- 13 款惊艳的 Node.js 框架——第1部分
- 内网能PING通TELNET通不能访问解决
- pandas 如何判断指定列是否(全部)为NaN(空值)
- Angular安装教程
- Spring @Import
- VMware安装ubuntu中几个问题的解决——VMware Tools
- 单片机c语言期末考试题(a)的答案,单片机C语言期末考试题(A).doc
- netcat运行出错
- Mysql中contact、group_concat、concat_ws、repeat
- 销量之王,去年程序员最爱看的技术书就是它
- 小甲鱼Python课后练习题及答案01
- 如何减小电压跟随器输出电阻_电压跟随器秘笈:LM358电压跟随器+运放问题
- 图片底下配的文字叫什么_图片下面加文字 图片周边留白加文字,照片加边框并在照片下面加文字...
- 你要问我应用层?我就和你扯扯扯
- 在格式化的场景下,React input 的光标的处理办法
- Android仿射密码破译app
- 由浅入深玩转华为WLAN—12安全认证配置(5)Portal认证,外置Protal服务器TSM对接
- matlab神经网络 股票预测模型,基于BP神经网络的股票预测模型
- 95 费解的开关(递推)