itk中的特征提取算法(二)

本文介绍二值图像边界识别的基本方法,包括基于边界搜索的方法如光栅扫描法、边缘跟踪法等,以及基于数学形态学的方法。此外还详细介绍了ITK库中用于边界识别的不同类及其使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

边界是图像的基本特征之一,同时也是图像的研究热点。本文的内容是对二值图像的边界识别。


常用的基本方法有以下几种:
1.基于边界搜索的方法:
光栅扫描法:设定一定的阈值进行多次行扫描和列扫描;
边缘跟踪法:先检测到一个边缘点,然后沿着边缘点跟踪计算,直到回到边缘点;其中,八邻域搜索的边界跟踪算法,又叫标签处理算法;
虫随法:进入黑色区域,左转,进入黑色区域,右转,一直回到运动起始点。
2.基于数学形态学的方法:
先腐蚀再相减
针对边界提取,itk中也有几个不同的类,分别都依托与不同的理论基础。
itkBinaryErodeImageFilter 和 itkSimpleContourExtractorImageFilter 中用的原理是先腐蚀再相减;
itkContourExtractor2DImageFilter 中的原理是"marching squares",类似三维重建面绘制中的"marching cube";
itkCannyEdgeDetectionImageFilter 是依附于canny算子的边缘搜索;
itkBinaryContourImageFilter 和 itkLabelContourImageFilter 貌似比较特殊,在像素扫描的同时加入了多线程,在速度方面有一定的优势。

下面看itkBinaryContourImageFilter的用法:

typedef itk::BinaryContourImageFilter< ImageType, ImageType> FilterType;
FilterType::Pointer binaryContourFilter= FilterType::New();
binaryContourFilter->SetInput( intput_data);
binaryContourFilter->FullyConnectedOn();//开启26邻域单连通 
binaryContourFilter->SetForegroundValue(0);//设置前景色
binaryContourFilter->SetBackgroundValue(255);//设置背景色
binaryContourFilter->Update();

(其他几个类的用法都很简单,都是SetInput->Update->GetOutput,就不一一列举了。可能由于兼容高维度的原因,itk的这几个类有写得好烦,各种迭代套循环~~有时间自己写一个试试)
-------这里先留坑------


边界算法原理并不复杂,就是迭代套循环,大部分的算法目标优化都集中在时间和效率。设计出好的跟踪方法,将迭代的步数减少,效率自然提高(拼硬件不算!)。


参考文献:
1. https://itk.org/Wiki/ITK/Examples/EdgesAndGradients/BinaryContourImageFilter
2. https://itk.org/Wiki/ITK/Examples/EdgesAndGradients/BinaryBoundaries
3. http://blog.youkuaiyun.com/wqvbjhc/article/details/2299066
4. 《二值图像中目标物体轮廓的边界跟踪算法》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值