海南网站建设获客,网站开发维护公司经营范围,深圳设计网站开发,广州专门做网站目录 1、水平集2、itkFastMarchingImageFilter 快速步进分割3、itkShapeDetectionLevelSetImageFilter 快速步进分割 1、水平集
水平集是跟踪轮廓和表面运动的一种数字化方法。基于图像的亮度均值、梯度、边缘特征的微分计算#xff0c;进行水平集分割。在itk中#xff0c;所… 目录 1、水平集2、itkFastMarchingImageFilter 快速步进分割3、itkShapeDetectionLevelSetImageFilter 快速步进分割 1、水平集
水平集是跟踪轮廓和表面运动的一种数字化方法。基于图像的亮度均值、梯度、边缘特征的微分计算进行水平集分割。在itk中所有基于分割滤波器水平集必须用浮点精度来进行操作输出的数字化类型默认为浮点型也可以被转换为双精度但是不能使用整型或者无符号数据类型。
2、itkFastMarchingImageFilter 快速步进分割
该类使用快速行进求解Eikonal方程其中速度始终为非负且仅取决于位置。
使用熵满足方案执行更新其中仅使用“逆风”邻域。 Fast Marching 的此实现使用 std::priority_queue 来定位下一个要更新的正确网格位置。快速行进以 (N log N) 步扫描 N 个网格点以获得锋面传播通过网格时的到达时间值。
当图像梯度很高时前面的传播速率很慢而梯度很低的区域传播速率快。此方法可是轮廓不断传播直到图像中的解剖结构边缘在那写边缘前将速率降低下来。
此类基于水平集图像类型和速度图像类型进行模板化初始前沿由两个容器指定一个包含已知点另一个包含试验点。 活动点是那些已经是对象一部分的点并且考虑包含试验点。 为了使过滤器不断发展至少必须指定一些试验点。 例如可以将它们指定为活动点周围的像素层。
速度函数可以指定为速度图像或速度常数速度图像使用 SetInput() 方法设置。 如果速度图像为nullptr则使用恒速函数并使用SetSpeedConstant()方法指定。
如果速度函数恒定且值为1则快速行进会产生距初始活动点的近似距离函数。FastMarchingImageFilter 在 ReinitializeLevelSetImageFilter 对象中使用以创建距零水平集的有符号距离函数。
通过设置适当的停止值可以提前终止算法当处理时间大于停止值时算法终止。
FastMarchingImageFilter输出的是一个时间交叉图对每一个像素表达了到达这个像素位置之前所花费的时间。有两种方法可以指定输出图像信息LargestPossibleRegion、Spacing、Origin(a) 直接从输入速度图像复制 (b) 由用户指定如果用户未指定所有信息则使用默认值。
输出信息计算如下。 如果速度图像为 nullptr 或 OverrideOutputInformation 设置为 true则根据用户指定的参数设置输出信息。 这些参数可以使用 SetOutputRegion()、SetOutputSpacing()、SetOutputDirection() 和 SetOutputOrigin() 方法指定。 否则如果速度图像不为nullptr则从输入速度图像复制输出信息。
可能的改进在当前的实现中std::priority_queue只允许从前面取出节点并从后面放入节点要更新堆上已有的值需要将新节点添加到堆中失效的旧节点留在堆上当它从顶部移除时它将被识别为无效并且不被使用未来的实现可以以不同的方式实现堆从而允许更新值这通常需要一些上移和下移函数以及从图像到堆的反向指针图像以便找到要更新的节点。
常用的成员函数
Set/GetStoppingValue()设置/获取快速行进算法停止值当最小尝试点的值大于停止值时算法终止Set/GetSpeedConstant()设置/获取速度常数如果速度图像为nullptr则SpeedConstant值将用于整个级别集默认情况下SpeedConstant设置为 1.0Set/GetTrialPoints()设置/获取代表初始前沿的试验点容器试验点表示为 LevelSetNodes的VectorContainerSetOutsidePoints()设置不打算评估的点的容器Set/GetOutputRegion/Size/Spacing/Origin/Direction()设置/获取输出的最大可能值、大小、间距、原点、方向计算如果速度图像为nullptr或OverrideOutputInformation为true则根据用户指定的参数设置输出信息如果速度图像不为nullptr则从输入速度图像复制输出信息Set/GetOverrideOutputInformation()同上Set/GetCollectPoints()设置/获取收集点标志检测算法以收集其访问过的所有节点的容器对于为支持窄带的水平集算法创建窄带很有用Set/GetAlivePoints()设置/获取代表初始前沿的活动点容器活动点表示为LevelSetNodes的VectorContainerSet/GetNormalizationFactor()设置/获取速度图像的标准化因子速度图像中的值除以该因子这允许使用具有整数像素类型的图像来表示速度GetProcessedPoints()获取已处理点的容器如果设置了 CollectPoints 标志算法将收集所有已处理节点的容器这对于定义支持窄带的水平集算法创建窄带非常有用GetLabelImage()获取点型标签图像GetLargeValue()获得巨大价值该值用于表示分配给尚未访问的像素的时间无穷大的概念该值默认设置为用于表示时间交叉图的像素类型max()的一半
示例代码
#include itkImage.h
#include itkFastMarchingImageFilter.h
typedef itk::Imagefloat, 3 FloatImageType;bool fastMarchingImageFilter(FloatImageType* image, FloatImageType* outImage)
{typedef itk::FastMarchingImageFilterFloatImageType, FloatImageType FastMarchingFilterType;typename FastMarchingFilterType::Pointer fastMarching FastMarchingFilterType::New();using NodeContainer FastMarchingFilterType::NodeContainer;using NodeType FastMarchingFilterType::NodeType;auto seeds NodeContainer::New();FloatImageType::IndexType seedPosition;seedPosition[0] 256;seedPosition[1] 256;seedPosition[2] 100;constexpr double initialDistance 1.0;const double seedValue -initialDistance;NodeType node; //创建节点作为堆栈变量并初始化node.SetValue(seedValue);node.SetIndex(seedPosition); seeds-Initialize(); //初始化seeds-InsertElement(0, node); //插入每个节点FloatImageType::SizeType size image-GetLargestPossibleRegion().GetSize();//double stopTime 100;fastMarching-SetInput(image);fastMarching-SetTrialPoints(seeds);fastMarching-SetSpeedConstant(1.0);fastMarching-SetOutputSize(size);//fastMarching-SetStoppingValue(stopTime);try{fastMarching-Update();}catch (itk::ExceptionObject ex){//读取过程发生错误std::cerr Error: ex std::endl;return false;}outImage fastMarching-GetOutput();return true;
}3、itkShapeDetectionLevelSetImageFilter 快速步进分割
该类根据用户提供的边缘电位图分割图像中的结构。
SegmentationLevelSetImageFilter 类和 ShapeDetectionLevelSetFunction 类包含充分了解如何使用此过滤器所需的附加信息。
概述 此类是水平集方法分段滤波器初始轮廓向外或向内传播直到它“粘住”形状边界这是通过使用基于用户提供的边缘电位图的水平集速度函数来完成的这种分割方法遵循 Malladi 等人 (1995) 的方法。
输入 该过滤器需要两个输入。 第一个输入是初始水平集初始水平集是包含初始轮廓/表面作为零水平集的真实图像例如通常使用距初始轮廓/表面的带符号距离函数请注意对于此算法初始轮廓必须完全位于要分割的结构内部或完全外部。 第二个输入是特征图像对于该滤波器这是边缘电位图边缘势图的一般特征是它在边缘附近的区域中具有接近于零的值并且在形状本身内部具有接近于1的值。 通常边缘势图是根据图像梯度计算的例如 其中: I 是图像强度(∇*G) 是高斯算子的导数。
参数 PropagationScaling 参数可用于在向外传播正缩放参数与向内传播负缩放参数之间切换。 可以使用PropagationScaling和CurvatureScaling参数的组合来调整生成的轮廓/表面的平滑度。CurvatureScaling参数越大生成的轮廓越平滑为了使该算法正确运行CurvatureScaling 参数应为非负数。 为了遵循 Malladi 等人论文中的实现将 PropagationScaling 设置为 ±1.0将 CurvatureScaling设置为 ϵ。
请注意此过滤器没有平流项设置平流缩放不会产生任何效果。
输出 滤波器输出单个标量实值图像输出图像中的负值表示分割区域的内部图像中的正值表示分割区域的外部图像的零交叉点对应于传播前沿的位置。 有关详细信息请参阅 SparseFieldLevelSetImageFilter 和 SegmentationLevelSetImageFilter。
常用的成员函数
SetInput()设置初始水平集SetFeatureImage()设置特征图像
示例代码
#include itkImage.h
#include itkShapeDetectionLevelSetImageFilter.htypedef itk::Imagefloat, 3 FloatImageType;bool shapeDetectionLevelSetImageFilter(FloatImageType* image, FloatImageType* featureImage, FloatImageType* outImage)
{typedef itk::ShapeDetectionLevelSetImageFilterFloatImageType, FloatImageType ShapeDetectionLevelSetFilterType;typename ShapeDetectionLevelSetFilterType::Pointer shapeDetection ShapeDetectionLevelSetFilterType::New();shapeDetection-SetInput(image); //初始水平集shapeDetection-SetFeatureImage(featureImage); //特征图像一个边缘潜在图像try{shapeDetection-Update();}catch (itk::ExceptionObject ex){//读取过程发生错误std::cerr Error: ex std::endl;return false;}outImage shapeDetection-GetOutput();return true;
}
文章转载自: http://www.morning.srgnd.cn.gov.cn.srgnd.cn http://www.morning.mftzm.cn.gov.cn.mftzm.cn http://www.morning.kjksn.cn.gov.cn.kjksn.cn http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn http://www.morning.rbknf.cn.gov.cn.rbknf.cn http://www.morning.rgnp.cn.gov.cn.rgnp.cn http://www.morning.kskpx.cn.gov.cn.kskpx.cn http://www.morning.plqqp.cn.gov.cn.plqqp.cn http://www.morning.dfndz.cn.gov.cn.dfndz.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.plgbh.cn.gov.cn.plgbh.cn http://www.morning.tbqbd.cn.gov.cn.tbqbd.cn http://www.morning.leboju.com.gov.cn.leboju.com http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.dschz.cn.gov.cn.dschz.cn http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.ftntr.cn.gov.cn.ftntr.cn http://www.morning.fsnhz.cn.gov.cn.fsnhz.cn http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn http://www.morning.wtnyg.cn.gov.cn.wtnyg.cn http://www.morning.qllcp.cn.gov.cn.qllcp.cn http://www.morning.pnbls.cn.gov.cn.pnbls.cn http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn http://www.morning.kmqlf.cn.gov.cn.kmqlf.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn http://www.morning.2d1bl5.cn.gov.cn.2d1bl5.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.krtky.cn.gov.cn.krtky.cn http://www.morning.fldk.cn.gov.cn.fldk.cn http://www.morning.xfcjs.cn.gov.cn.xfcjs.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.npxht.cn.gov.cn.npxht.cn http://www.morning.kmqjx.cn.gov.cn.kmqjx.cn http://www.morning.ftync.cn.gov.cn.ftync.cn http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.byrlg.cn.gov.cn.byrlg.cn http://www.morning.hqgkx.cn.gov.cn.hqgkx.cn http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn http://www.morning.zcwwb.cn.gov.cn.zcwwb.cn http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn http://www.morning.npqps.cn.gov.cn.npqps.cn http://www.morning.ybmp.cn.gov.cn.ybmp.cn http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.sxbgc.cn.gov.cn.sxbgc.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.mstrb.cn.gov.cn.mstrb.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.nzhzt.cn.gov.cn.nzhzt.cn http://www.morning.ygxf.cn.gov.cn.ygxf.cn http://www.morning.qfmns.cn.gov.cn.qfmns.cn http://www.morning.rkkh.cn.gov.cn.rkkh.cn http://www.morning.mxptg.cn.gov.cn.mxptg.cn http://www.morning.hzqjgas.com.gov.cn.hzqjgas.com http://www.morning.mhnd.cn.gov.cn.mhnd.cn http://www.morning.pqndg.cn.gov.cn.pqndg.cn http://www.morning.wplbs.cn.gov.cn.wplbs.cn http://www.morning.rmltt.cn.gov.cn.rmltt.cn http://www.morning.yrlfy.cn.gov.cn.yrlfy.cn http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn http://www.morning.jypsm.cn.gov.cn.jypsm.cn http://www.morning.glswq.cn.gov.cn.glswq.cn http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn http://www.morning.zlcsz.cn.gov.cn.zlcsz.cn http://www.morning.jcpq.cn.gov.cn.jcpq.cn http://www.morning.paoers.com.gov.cn.paoers.com http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn http://www.morning.hfyll.cn.gov.cn.hfyll.cn http://www.morning.mnclk.cn.gov.cn.mnclk.cn http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn