一、简介
中心线提取是图像分割的重要步骤之一,中心线提取的好坏直接影响图像分割效果,因此研究中心线提取是很关键的问题
中心线提取大致分为五种:
一 基于拓扑细化的方法
使用形态学腐蚀操作来不断去除物体的边界,直到仅剩其骨架,由于该方法是一个迭代过程,所以会很耗时,且易受图像质量的影响。
二 基于距离变换的方法
通过定位距离物体边界最远的一组点来确定物体的中心线,通常采用欧式距离,可以理解为一系列最大内切球的球心构成了物体的中心线,有代表性的是基于边界的距离变换和基于源点的距离变换
三 基于路径规划的方法
应用于虚拟内窥和机器人路径规划
四 基于追踪的方法
通过判断管状物体的局部方向获得当前位置近似的中心线趋势,并结合图像中物体的局部信息,得到当前位置处物体横截面的中心点。缺点是在追踪过程中未考虑全局信息,会导致中心线提取不完整
二、源代码
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