[Insight-users] VectorContainer, removing element
imho
imho at bephp.com
Thu, 05 Feb 2004 23:31:31 +0100
Hi Luis,
in fact I'd like to do both. The 128 elements are representing the z
coordonate of my image volume.
Brad allready send me elements of answer :
>The VectorContainer provides a DeleteIndex method to remove an element
from one entry in seeds. If you want to remove an entire container from
>seeds[x], then that is up to you because it is just a standard array.
>I suggest you convert seeds to look like this:
>
> std::vector< NodeContainer::Pointer > seeds;
>
>or
>
> std::set< NodeContainer::Pointer > seeds;
>
>Then there is no limit to the number of seeds and you get the STL
container features to manage the structure.
>
>-Brad
But I'm not quite familiar with STL so I'm still looking how I'll do to
delete all a range of seeds, or a particular seed (found by a
approximation of the x,y coordinates).
For the moment it will be all the nodes for a z value, it will be easier.
Thanks for the help
Laurent
Luis Ibanez wrote:
>
>
> Hi Laurent,
>
> With:
>
> NodeContainer::Pointer seeds[128];
>
> You are declaring an array of 128
> SmartPointers to:
>
> "VectorContainer< unsigned int, NodeType >".
>
> When you say that you want to delete some
> elements from "seeds", do you mean that you
> want to destroy one of the 128 entries in
> this array of smart pointers ?
>
> or, do you mean that from one of those
> 128 Containers you want to delete some
> of its NodeType entries ?
>
>
> Please let us know,
>
>
> Thanks
>
>
> Luis
>
>
>
>
> --------------------------
>
> Laurent Mundeleer wrote:
>
>> in fact I think I didn't gave you enough information, here's some code :
>> ...
>>
>> typedef itk::FastMarchingImageFilter<Image2DType, Image2DType>
>> fastMarchingType;
>> typedef fastMarchingType::NodeContainer NodeContainer;
>> typedef fastMarchingType::NodeType NodeType;
>>
>> ...
>> NodeContainer::Pointer seeds[128];
>> ...
>> void levelSetITK::addSeed(float *pos, float ratio)
>> { typedef NodeType::IndexType IndexType;
>> IndexType point;
>>
>> float ratio0 = ratio*0.969;
>> float ratio1 = ratio*0.98;
>>
>> point[0] = static_cast<IndexType::IndexValueType>( pos[0]*ratio0 );
>> point[1] = static_cast<IndexType::IndexValueType>( pos[1]*ratio1 );
>> NodeType node;
>>
>> node.SetValue( -25.0 );
>> node.SetIndex( point );
>>
>> int p = (int) pos[2];
>> seeds[p]->InsertElement( nbreSeed[p], node );
>> nbreSeed[p]++;
>> }
>>
>> and I'd like to remove some element from seeds.
>>
>> Thanks
>>
>> Laurent
>>
>> Brad King wrote:
>>
>>> Laurent Mundeleer wrote:
>>>
>>>> Hi all,
>>>>
>>>> I can't figure how to remove an element anywhere in a
>>>> VectorContainer (like erase(pos) in stl) ??
>>>
>>>
>>>
>>>
>>> The class derives from std::vector, so the same methods should be
>>> available. However, you should know that itk::VectorContainer is
>>> used by itk::Image to manage memory for pixel buffers. It is not
>>> intended to be used as a general-purpose container by user code.
>>>
>>> -Brad
>>>
>>>
>>
>
>
>
>