拉东变换全解: CT和烂苹果 [2]

在开始讲拉东逆变换之前. 先来说说比较实际的快速拉东算法
上一期忘记说了= =, 拉东变换的取值范围


快速拉东变换 ---- 投影
在上一篇中说到拉东变换其实和CT的一样的, 也是一个屏幕在绕着一个物体旋转, 然后得到 θ∈[0, π) 的正弦图
但是仔细想一下, 在θ相同的时候, 只要 r 取值不同就可以得到正弦图的 "一条" 了啊, 为什么要那么麻烦每次都计算一次无聊到死的积分
于是, 为了偷懒, 人们就开始不旋转屏幕, 而开始旋转ρ函数 (脑补一下病人绑在病床上, 每秒钟自转200圈的感觉)

大概思路有: 1. 确保需要投影的点都在旋转范围内(蓝色的圆) [这就是为什么图片需要padding的原因了] 2. 把整个在圆内的点旋转θ 3. 把整个范围进行x轴积分 4. 然后就得到了 θ 为一个值时, r 为任意值的拉东变换了, 用公式表示成下面 (不标准写法)


这个就是拉东变换的快速算法了, 然后就说说非常正规的拉东逆变换

非常正规的拉东逆变换
在讲逆变换之前先来说说正规的"变换"的写法, 不然符号非常非常容易混乱
对 f(t) 进行傅里叶变换可以写成: F[f(t)](ω) 而傅里叶逆变换可以写成: F^-1 [F(f)] (t)
所以拉东变换可以写成以下的形式

拉东逆变换正式开始

在Rρ(r, θ)这个结果中, 固定住角度θ, 并且对 r 进行傅里叶变换

在经过繁琐的化简任务后得到: (见最下方的化简过程)

然后就会很神奇地发现这是一个原ρ密度函数的二维傅里叶变换, 即

那么做傅里叶逆变换就得到了原函数了

起码我没见过有人用这个方法= =, 所以就有了一下各种快速算法

快速的拉东逆变换(不精准) -- 逆投影
参照快速拉东变换的做法, 逆变换的思路就是: 既然我们不知道内部的情况, 只知道投影之后的影子R(θ). 那么针对一个特定的角度θ, 我们有投影结果R, 那么我们假设内部的分别为线状, 恰好能生成这样的影子

这个就叫做逆投影了, 那么对每个角度θ都进行逆投影然后叠加在一起, 那么就可以得到内部图像的影像了, 用公式表示大概就是下面的东西 (乱凑的):


我们这里用一个实验品做做测试 :



我们可以看到已经和原图像差不多一模一样了, 但是同时也可以看到有一片白色的光晕
这也说明如果把Rρ直接扔进逆投影变换出来的结果并不理想
这时候我们就需要把Rρ进行预处理, 我所知道的预处理有两种 (实际上肯定不止的)

第一种是把值比较高的地方, 左右压下去 (这就意味着是比较亮的边缘是比较暗的)

(没有实例, 但是我已经知道结果了)
这样变换出来之后白色方块周围确实已经变暗了很多, 所以这种方法是可行的
但是这个方法也有一个问题, 就是如果目标图像非常精细, 而你的信号分辨率又不够好, 这种方法反而会让图像变得更糟, 这时候就需要另一个方法了

第二种方法就是把信号的低频分量过滤掉, 保留下大部分的高频分量
操作: 把信号作傅里叶变换, 然后把频率为0的分量乘以0, 高一点的乘以一个比0大一点点的数字, 再高频率的乘以一个再大一点点的数字, 直到最高频率的乘以1或者2, 然后把乘好的这堆频率分量进行傅里叶逆变换得到信号, 然后再把信号扔进逆投影


可以看到方块的棱角清晰了很多, 而且光晕也减轻了很多, 但同时方块的亮度也被减少了

其实第二种方法就是我自己使用的方法了, 在实际操作中也得到了非常好的结果, 再宣传一下自己= =

拉东变换也到此结束啦
下面是逆变换的推导过程
