知乎同名账号同步发布。
参考文献
Estimating dual-energy CT imaging from single-energy CT data with material decomposition convolutional neural network
刚好做了个关于这篇论文的PPT,所以本篇博客的大量内容直接照搬PPT截图。
一、概念和模型功能简介
首先简要介绍一下双能CT的基本概念:
至于用双能CT的动机是什么我就不多介绍了,本文主要是讲解这篇paper的思想——material decomposition,即认为CT图像的每个pixel都是由不同的basis material组成的。
介绍一下模型的功能:
比如现在我手上有一张100kV的低能量CT图,我想要获取一张140kV的高能量CT图,那么我只需要获取140kV下的一个角度的投影数据(sinogram),和低能量CT图一并输入模型,就可以获取一张140kV的高能量CT图。
当然这个模型在实际应用中可能有点过于理想化了,但是不妨碍它的material decomposition的思想非常有意思,接下来就重点讲一下这个思想。
二、material decomposition的思想
我直接放上我做的PPT的截图:
首先作者认为,CT图的每个pixel都可以看作是由很多种basis material组成的,每种material都有自己的衰减系数,所以这个点的衰减系数就可以看作是不同material的衰减系数的线性组合。再根据衰减系数和CT值之间的关系式,就可以得出以下结论:
即一个点的CT值时不同basis material的CT值的线性组合,假设有m中basis material,那么就对应着m个α来控制线性组合的系数。当然上面那一行公式只是一个pixel的情况,假设一个CT图有
n
p
i
x
n_{pix}
npix个pixel,那么系数的数量就需要
n
p
i
x
×
m
n_{pix} \times m
npix×m个,将这些系数存储到一个矩阵A中,我们就可以将上述公式改写为矩阵的形式:
总之将每个pixel的CT值视为若干basis material的CT值的线性组合,组合系数存放在矩阵A中(也可以视A为每种basis material的比例)。
注意上图中的公式,除了矩阵A外,还有个向量b,这个向量就存储每种basis material的CT值。如何计算出这个b是十分重要的,而在之前,我们说这个模型的一个input就是a single-view high energy projection data,我们将它记为 P h i g h P_{high} Phigh;同样地,由于另一个input是低能量的CT图,我们可以根据它获取a single-view low energy projection data,记为 P l o w P_{low} Plow。我们令 P d i f = P h i g h − P l o w P_{dif}=P_{high}-P_{low} Pdif=Phigh−Plow,注意在本文中,所有 x x x d i f xxx_{dif} xxxdif这样的符号,都代表着对应的 x x x h i g h − x x x l o w xxx_{high}-xxx_{low} xxxhigh−xxxlow,即高能量的情况减去对应的低能量的情况。我们说,如何计算出b是很重要的,其实就是要计算出 b d i f b_{dif} bdif,由于 P d i f P_{dif} Pdif是已知的,所以可以分析P和b之间的关系,这是下一部分的内容。
三、P和b的关系
再次强调,P是single-view projection data,即单角度的sinogram;b是存放不同basis material的CT值的向量。
首先,根据上述结论,我们有:
根据上述公式,我们有:
这个是作者在paper中给出的公式,如果之前将的公式你都理解了,那么上面这张图应该没问题。然后定义矩阵M=R·A:
我们就得到了P和b的关系表达式,注意M中有未知量A,所以严格来讲,如果已知A和
P
d
i
f
P_{dif}
Pdif,那么就可以求解
b
d
i
f
b_{dif}
bdif。求解的方法如下:
P来源于输入模型的数据,A要怎么求解呢,带着这样的疑问,接下来我们就可以介绍该paper的方法——FLESH-DECT了。
四、FLESH-DECT架构
上图是该架构的方法逻辑,之前我们在讲架构的输入和输出时提到过,该架构的输入是低能量CT图、单角度高能量投影数据。我们可以通过架构的输入获取
P
d
i
f
P_{dif}
Pdif,然后通过
P
d
i
f
P_{dif}
Pdif和A,就可以算得
b
d
i
f
b_{dif}
bdif,然后通过A和
b
d
i
f
b_{dif}
bdif,就可以得到
I
d
i
f
I_{dif}
Idif。现在将
I
d
i
f
I_{dif}
Idif加到低能量CT图上,就能得到高能量CT图了。
知道了方法逻辑后,我们直接看架构图:
比较重要的公式我在图中标注了出来。注意低能量图片要先进行神经网络的去噪处理,并且 P d i f P_{dif} Pdif也要先进行神经网络的预处理。上述架构中的MD-CNN就是生成A的。
上图中有一个loss,但那只是loss1,还有一个loss2。对loss的描述如下:
注意这里的loss2包含了material decomposition的重要思想,那就是由于可以将A和b的相乘视为basis material的组合,所以这个相乘过程本来就应该有去噪的功效,所以A和b的相乘结果可以作为架构中对低能量CT图去噪结果的label。当然上述公式需要计算
b
l
o
w
b_{low}
blow,其计算方法类似于
b
d
i
f
b_{dif}
bdif,就不赘述了。
五、网络细节
简单看下网络结构就好:
这个是对低能量图片进行去噪的网络。
这个是对单角度投影数据进行预处理的网络。
这个是生成A的MD-CNN。
六、实验结果
首先是对m值的调参:
m代表着假设有多少种basis material,可以看出m为10的时候,效果较好。
最后简单看看实验结果,左边是低能量CT图,中间是高能量CT图(ground-truth),右边是模型预测的高能量CT图: