这一段时间一直在做关于血管增强的算法,查阅了一些论文,发现现在比较常用的就是基于各向异性扩散的血管增强算法,而这种增强算法主要使用的就是图像Hessian矩阵的特征值和特征向量。比较经典的增强算法是Frangi在1998年发表的Multiscale vessel enhancement filter, 该算法中主要通过Hessian矩阵的特征值和特征向量构建了所谓的血管参数(这里不罗列公式,可以googleFrangi的论文),通过统计对于每一个像素点的血管参数几乎都是0-1之间的数(用来表征图像中像素点属于血管的概率值---这里是本人的理解,如果有错误请指出),所以通过血管参数就可以通过归一化这个数据,然后再映射到0-4096区间内,得出血管的位置。但是这个算法有一个缺点就是对噪声比较敏感,所以在增强之后会出现许多假的“血管”,也就是其他的脑组织,但是对细小血管的分割效果还是不错的。基于这个缺陷,Rashindra Manniesing在其06年发表的一片论文中(Vessel Enhancing diffusion)对该算法进行了改进,其改进的方向主要是两点:首先在血管函数中增加了平滑因子,使得该函数可以降低对噪声的影像,达到平滑的目的,另外,通过构建扩散张量,使用扩散方程对图像进行扩散滤波,以达到对血管的区域进行增强,而对背景区域进行抑制处理。基本的思想也就是这些了,这里我主要分享以下在实现过程中遇到的问题:在计算出每一点的扩散张量后,由于所处理的数据为3维体数据,所以每一点的扩散张量实际上是一个3*3的矩阵(这里不同于传统PM方程中扩散函数),然后再计算扩散方程的过程中,需要分别计算图像的一阶梯度图像,二阶梯度图像以及扩散张量的一阶梯度。这里扩散张量的一阶梯度主要是通过计算相邻像素(6个方向)的扩散张量的对应位置的值计算出来的。例如,计算扩散张量第一行的三个值,这三个值表示了扩散张量在x方向上的梯度,所以首先要计算出该像素点左侧像素点的扩散张量以及该像素点右侧像素点的扩散张量,然后通过中心差分法计算出当前像素点所对应的扩散张量第一行的三个值:如果B点为当前点,A点和C点位左右两个相邻的像素值(x方向),对应的tensorA(0,0)=(tensorC(0,0)-tensorA(0,0))/2。同理可得其他像素点的扩散张量在三个方向上的一阶导数。
血管增强的各向异性扩散滤波(VED算法)
最新推荐文章于 2025-05-22 13:03:20 发布