Detailed Description

A data object for used by watershed segmentation process objects in streaming applications. A ``boundary'' represents the single-pixel wide surface of an image chunk. This class is used to store information needed to resolve processing at chunk boundaries after data streaming of the watershed segmentation algorithm.

This is an itkDataObject. It contains a matrix of ``faces'' of an N-dimensional hypercube. A chunk of a volume with dimensions has faces of dimension . Some examples: A 2-dimensional image has 4 faces that are lines. A 3-dimensional image has 6 faces that are planes. A 4-dimensional image has 8 faces which are cubes. Faces are indexed as sets of pairs .

A pair of values used to index into the boundary data structure. The IndexType.first is the dimension of the face and IndexType.second is a binary value 0 or 1 indicating the LOW face or the HIGH face, respectively.

Member Function Documentation

Allow people to add/remove/invoke observers (callbacks) to any ITK object. This is an implementation of the subject/observer design pattern. An observer is added by specifying an event to respond to and an itk::Command to execute. It returns an unsigned long tag which can be used later to remove the event or retrieve the command. The memory for the Command becomes the responsibility of this object, so don't pass the same instance of a command to two different objects

static void itk::LightObject::BreakOnError

(

)

[static, inherited]

This method is called when itkExceptionMacro executes. It allows the debugger to break on error.

Copy information from the specified data set. This method is part of the pipeline execution model. By default, a ProcessObject will copy meta-data from the first input to all of its outputs. See ProcessObject::GenerateOutputInformation(). Each subclass of DataObject is responsible for being able to copy whatever meta-data it needs from from another DataObject. The default implementation of this method is empty. If a subclass overrides this method, it should always call its superclass' version.

Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.

Inform the pipeline mechanism that data has been generated. This method is called by ProcessObject::UpdateOutputData() once the process object has finished generating its data. This essentially marks the DataObject as being updated and ready for use.

virtual void itk::Object::DebugOff

(

)

const [virtual, inherited]

Turn debugging output off.

virtual void itk::Object::DebugOn

(

)

const [virtual, inherited]

Turn debugging output on.

virtual void itk::LightObject::Delete

(

)

[virtual, inherited]

Delete an itk object. This method should always be used to delete an object when the new operator was used to create it. Using the C delete method will not work with reference counting.

void itk::DataObject::DisconnectPipeline

(

)

[inherited]

Separate this data object from the pipeline. This routine disconnects a data object from the upstream pipeline. Hence an Update() from downstream will not propagate back past this data object. To completely isolate this data object from the pipeline, the application must remove this data object from any filters which it is connected as the input.

Get the command associated with the given tag. NOTE: This returns a pointer to a Command, but it is safe to asign this to a Command::Pointer. Since Command inherits from LightObject, at this point in the code, only a pointer or a reference to the Command can be used.

Get the process object that generated this data object. If there is no process object, then the data object has been disconnected from the pipeline, or the data object was created manually. (Note: we cannot use the GetObjectMacro() defined in itkMacro because the mutual dependency of DataObject and ProcessObject causes compile problems. Also, a forward reference smart pointer is returned, not a smart pointer, because of the circular dependency between the process and data object.)

Method for grafting the content of one data object into another one. This method is intended to be overloaded by derived classes. Each one of them should use dynamic_casting in order to verify that the grafted object is actually of the same type as the class on which the Graft() method was invoked.

The dimensionality of this boundary. For example, if the boundary of a set of planes, it has dimensionality 2. If the boundary is a set of lines, it has dimensionality 1. Dimensionality is one less than the image chunks from which the boundary is derived.

virtual void itk::Object::Modified

(

)

const [virtual, inherited]

Update the modification time for this object. Many filters rely on the modification time to determine if they need to recompute their data.

Setup a DataObject to receive new data. This method is called by the pipeline mechanism on each output of filter that needs to execute. The default implementation is to return a DataObject to its initial state. This may involve releasing previously allocated bulk data. Subclasses of DataObject may want to override this method and/or the Initialize() method if they want a different default behavior (for instance a DataObject might want finer control over its bulk data memory management).

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Release data back to system to conserve memory resource. Used during pipeline execution. Releasing this data does not make down-stream data invalid, so it does not modify the MTime of this data object.

Determine whether the RequestedRegion is outside of the BufferedRegion. This method returns true if the RequestedRegion is outside the BufferedRegion (true if at least one pixel is outside). This is used by the pipeline mechanism to determine whether a filter needs to re-execute in order to satisfy the current request. If the current RequestedRegion is already inside the BufferedRegion from the previous execution (and the current filter is up to date), then a given filter does not need to re-execute

Set the requested region from this data object to match the requested region of the data object passed in as a parameter. For DataObject's that do not support Regions, this method does nothing. Subclasses of DataObject that do support Regions, provide an alternative implementation.

Update the information for this DataObject so that it can be used as an output of a ProcessObject. This method is used in the pipeline mechanism to propagate information and initialize the meta data associated with a DataObject. Any implementation of this method in a derived class is assumed to call its source's ProcessObject::UpdateOutputInformation() which determines modified times, LargestPossibleRegions, and any extra meta data like spacing, origin, etc. Default implementation simply call's it's source's UpdateOutputInformation().

If the RequestedRegion is not within the LargestPossibleRegion, then the filter cannot possibly satisfy the request. This method returns true if the request can be satisfied (even if it will be necessary to process the entire LargestPossibleRegion) and returns false otherwise. This method is used by PropagateRequestedRegion(). PropagateRequestedRegion() throws a InvalidRequestedRegionError exception if the requested region is not within the LargestPossibleRegion. Default implementation simply returns true in order to support DataObjects that do not need regions (for instance itk::EquivalencyTable).