MITK中的几个predicate类

本文深入探讨了MITK库中用于验证节点关系及数据属性的编码技术,包括节点祖先判断、属性验证等操作,展示了如何通过特定构造器参数实现不同条件下的节点与属性筛选。

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

没有时间整理,随便扒一扒,作为编码参考

  1. mitk::NodePredicateSource
    判断给定的node(new中给定的)是否是某个node的子孙/非子孙source node。
    示例:
//事先定义的几个node
mitk::DataStorage::Pointer         myDataStorage(mitk::StandaloneDataStorage::New().GetPointer());
mitk::DataNode::Pointer godfather, grandMother, mother, daughter;
godfather = mitk::DataNode::New();
grandMother = mitk::DataNode::New();
mother = mitk::DataNode::New();
daughter = mitk::DataNode::New();
//指定node之间的关系
myDataStorage->Add(godfather);
myDataStorage->Add(grandMother);
myDataStorage->Add(mother, grandMother);
myDataStorage->Add(daughter, mother);
//下面对这些关系进行验证。构造器中的false表示只验证是否为亲生
mitk::NodePredicateSource::Pointer testPredicate = mitk::NodePredicateSource::New(grandMother, false, myDataStorage);
//验证示例,返回值为bool类型,即是或不是
testPredicate->CheckNode(mother);//gradmother is direct source of mother, return true
testPredicate->CheckNode(godfather)//return false
testPredicate->CheckNode(daughter)// Node is derivative but only direct derivatives are wanted

//构造器参数True。亲生或非亲生都符合条件,只要是grandmother的子node都行。
testPredicate = NULL;
testPredicate = mitk::NodePredicateSource::New(grandMother, true, myDataStorage);
testPredicate->CheckNode(daughter)// 返回真,daughter虽非直接子女,但只要是后代就符合条件
testPredicate->CheckNode(grandMother)//返回假,自己不是自己的子孙
  1. mitk::NodePredicateProperty
    验证给定的DataNode是否具有某个属性。如果第二个参数为NULL,将只检查是否存在一个给定名字的属性。如果第三个参数里指定renderer,则将验证renderer-specific,也就是与renderer有关的属性。具体参数参见该类构造器。
mitk::NodePredicateProperty p("color",
mitk::ColorProperty::New(color));
SetOfObjects::ConstPointer rs = ds->GetSubset(p); 
  1. mitk::NodePredicateAnd
    将其子断言用逻辑与连接起来。

  2. mitk::NodePredicateNot

  3. mitk::NodePredicateOr
    将其子断言用逻辑或连接起来

mitk::NodePredicateOR pOR(p1, p2);
  1. mitk::NodePredicateData
    验证给定的DataNode data object 指针是否等于给定的指针。
    NodePredicateData(NULL) 返回真,如果DataNode 没有data object(->GetData()返回NULL)。这可能返回随机的nodes数量

  2. mitk::NodePredicateDataType
    验证给定DataNodes data object是否为指定的数据类型。

mitk::NodePredicateDataType predicate("Image");//or "Surface"
SetOfObjects::ConstPointer rs = ds->GetSubset(predicate); 
//示例
mitk::NodePredicateDataType p1("Image");
mitk::NodePredicateProperty p2("color", new ColorProperty(color));
mitk::NodePredicateOR pOR(p1, p2);
mitk::NodePredicateDataType p4("Surface");
mitk::NodePredicateNOT pNOT(p4);
mitk::NodePredicateAND pAND(pOR, pNOT);
SetOfObjects::ConstPointer rs = ds->GetSubset(pAND); 
/* retrieve source & derived objects */
SetOfObjects::ConstPointer sources = ds->GetSources(n3); // == n1
SetOfObjects::ConstPointer child = ds->GetDerivations(n1); // == n3
/* retrieve source & derived objects with specific criteria */
mitk::NodePredicateDataType p("Image");
SetOfObjects::ConstPointer sources = ds->GetSources(n3, &p); // == n1
SetOfObjects::ConstPointer child = ds->GetDerivations(n1, &p); 

GetSources(const mitk::DataTreeNode* node, const NodePredicateBase*
condition = NULL, bool onlyDirectSources = true)//新的MITK中取消了DataTreeNode类


/* Retrieve single Nodes/objects */
mitk::NodePredicateDataType p("Image");
mitk::DataTreeNode* n = ds->GetNode(&p);
mitk::DataTreeNode* n = ds->GetNamedNode("MyNode");
mitk::Image* image = ds->GetNamedObject<mitk::Image>("data");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值