【图像分割】基于matlab心脏中心线提取【含Matlab源码 092期】

418 阅读2分钟

一、简介

中心线提取是图像分割的重要步骤之一,中心线提取的好坏直接影响图像分割效果,因此研究中心线提取是很关键的问题

中心线提取大致分为五种:

一 基于拓扑细化的方法

使用形态学腐蚀操作来不断去除物体的边界,直到仅剩其骨架,由于该方法是一个迭代过程,所以会很耗时,且易受图像质量的影响。

二 基于距离变换的方法

通过定位距离物体边界最远的一组点来确定物体的中心线,通常采用欧式距离,可以理解为一系列最大内切球的球心构成了物体的中心线,有代表性的是基于边界的距离变换和基于源点的距离变换

三 基于路径规划的方法

应用于虚拟内窥和机器人路径规划

四 基于追踪的方法

通过判断管状物体的局部方向获得当前位置近似的中心线趋势,并结合图像中物体的局部信息,得到当前位置处物体横截面的中心点。缺点是在追踪过程中未考虑全局信息,会导致中心线提取不完整
在这里插入图片描述

二、源代码

clc;
I = rgb2gray(imread ('22.bmp'));
Id = double(I);
%高斯滤波
h = fspecial('gaussian',[3,3], 2);
Ig = imfilter(Id, h);
%多尺度血管骨架提取
Ivessel = FrangiFilter2D(Ig);
figure,imshow(Ivessel);
%腐蚀
se = strel('disk', 2);
bw2 = imerode(Ivessel, se);
%细化
bw3 = bwmorph(bw2,'thin',inf);
%消除垂直于血管走向的干扰
bw4 = ThreeLinkFilter(bw3);
%消除面积比较小的联通分支
bw5 = bwareaopen(bw4, 256);
figure,imshow(bw5);
%与源图像叠加
Iout = imadd(Id, double(bw5)*255);
%显示结果
figure,
%imshow(Iout, [0, 255]);
imshow(Ivessel, [0, 255]);

三、运行结果

在这里插入图片描述

四、备注

版本:2014a