template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
class itk::BlockMatchingImageFilter< TFixedImage, TMovingImage, TFeatures, TDisplacements, TSimilarities >
Computes displacements of given points from a fixed image in a floating image.
BlockMatchingImageFilter takes fixed and moving Images as well as PointSet of feature points as inputs. Physical coordinates of feature points are stored as point coordinates. Points of the input point set must have unique identifiers within range 0..N-1, where N is the number of points. Pixels (pointData) of input point set are not used. Additionally, by default, feature points are expected to lie at least (SearchRadius + BlockRadius) voxels from a boundary. This is usually achieved by using an appropriate mask during selection of feature points. If you are unsure whether feature points satisfy the above condition set CheckBoundary flag to true which turns on boundary checks. The default output(0) is a PointSet with displacements stored as vectors. Additional output(1) is a PointSet containing similarities. Similarities are needed to compute displacements and are always computed. The number of points in the output PointSet is equal to the number of points in the input PointSet.
The filter is templated over fixed Image, moving Image, input PointSet, output displacements PointSet and output similarities PointSet.
This filter is intended to be used in the process of Physics-Based Non-Rigid Registration. It computes displacement for selected points based on similarity as described in [12].
- Author
- Andriy Kot, Center for Real-Time Computing, Old Dominion University, Norfolk, VA
- See also
- MaskFeaturePointSelectionFilter
- ITK Sphinx Examples:
-
Definition at line 78 of file itkBlockMatchingImageFilter.h.
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
DisplacementsType * | GetDisplacements () |
|
const char * | GetNameOfClass () const override |
|
SimilaritiesType * | GetSimilarities () |
|
DataObject::Pointer | MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override |
|
|
virtual void | SetBlockRadius (ImageSizeType _arg) |
|
virtual ImageSizeType | GetBlockRadius () const |
|
|
virtual void | SetSearchRadius (ImageSizeType _arg) |
|
virtual ImageSizeType | GetSearchRadius () const |
|
|
| itkSetInputMacro (FixedImage, FixedImageType) |
|
| itkGetInputMacro (FixedImage, FixedImageType) |
|
|
| itkSetInputMacro (MovingImage, MovingImageType) |
|
| itkGetInputMacro (MovingImage, MovingImageType) |
|
|
| itkSetInputMacro (FeaturePoints, FeaturePointsType) |
|
| itkGetInputMacro (FeaturePoints, FeaturePointsType) |
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
const InputMeshType * | GetInput () const |
|
const InputMeshType * | GetInput (unsigned int idx) const |
|
const char * | GetNameOfClass () const override |
|
void | SetInput (const InputMeshType *input) |
|
OutputMeshType * | GetOutput () |
|
OutputMeshType * | GetOutput (unsigned int idx) |
|
virtual void | GraftNthOutput (unsigned int idx, DataObject *graft) |
|
virtual void | GraftOutput (const DataObjectIdentifierType &key, DataObject *graft) |
|
virtual void | GraftOutput (DataObject *graft) |
|
void | SetOutput (TOutputMesh *output) |
|
virtual void | SetOutput (const DataObjectIdentifierType &name, DataObject *output) |
|
DataObjectPointer | MakeOutput (DataObjectPointerArraySizeType idx) override |
|
virtual DataObjectPointer | MakeOutput (const DataObjectIdentifierType &) |
|
virtual void | AbortGenerateDataOff () |
|
virtual void | AbortGenerateDataOn () |
|
virtual const bool & | GetAbortGenerateData () const |
|
DataObjectPointerArray | GetIndexedInputs () |
|
DataObjectPointerArray | GetIndexedOutputs () |
|
NameArray | GetInputNames () const |
|
DataObjectPointerArray | GetInputs () |
|
MultiThreaderType * | GetMultiThreader () const |
|
const char * | GetNameOfClass () const override |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedOutputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfOutputs () const |
|
virtual DataObjectPointerArraySizeType | GetNumberOfValidRequiredInputs () const |
|
NameArray | GetOutputNames () const |
|
DataObjectPointerArray | GetOutputs () |
|
virtual float | GetProgress () const |
|
NameArray | GetRequiredInputNames () const |
|
bool | HasInput (const DataObjectIdentifierType &key) const |
|
bool | HasOutput (const DataObjectIdentifierType &key) const |
|
void | IncrementProgress (float increment) |
|
virtual void | PrepareOutputs () |
|
virtual void | PropagateRequestedRegion (DataObject *output) |
|
virtual void | ResetPipeline () |
|
virtual void | SetAbortGenerateData (bool _arg) |
|
void | SetMultiThreader (MultiThreaderType *threader) |
|
virtual void | Update () |
|
virtual void | UpdateLargestPossibleRegion () |
|
virtual void | UpdateOutputData (DataObject *output) |
|
virtual void | UpdateOutputInformation () |
|
void | UpdateProgress (float progress) |
|
virtual void | SetReleaseDataFlag (bool val) |
|
virtual bool | GetReleaseDataFlag () const |
|
void | ReleaseDataFlagOn () |
|
void | ReleaseDataFlagOff () |
|
virtual void | SetReleaseDataBeforeUpdateFlag (bool _arg) |
|
virtual const bool & | GetReleaseDataBeforeUpdateFlag () const |
|
virtual void | ReleaseDataBeforeUpdateFlagOn () |
|
virtual void | ReleaseDataBeforeUpdateFlagOff () |
|
virtual void | SetNumberOfWorkUnits (ThreadIdType _arg) |
|
virtual const ThreadIdType & | GetNumberOfWorkUnits () const |
|
unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
|
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
|
LightObject::Pointer | CreateAnother () const override |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary () |
|
const MetaDataDictionary & | GetMetaDataDictionary () const |
|
virtual ModifiedTimeType | GetMTime () const |
|
virtual const TimeStamp & | GetTimeStamp () const |
|
bool | HasObserver (const EventObject &event) const |
|
void | InvokeEvent (const EventObject &) |
|
void | InvokeEvent (const EventObject &) const |
|
virtual void | Modified () const |
|
void | Register () const override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) const |
|
void | SetDebug (bool debugFlag) const |
|
void | SetReferenceCount (int) override |
|
void | UnRegister () const noexcept override |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
Pointer | Clone () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
|
virtual void | AfterThreadedGenerateData () |
|
virtual void | BeforeThreadedGenerateData () |
|
| BlockMatchingImageFilter () |
|
void | EnlargeOutputRequestedRegion (DataObject *output) override |
|
void | GenerateData () override |
|
void | GenerateOutputInformation () override |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual void | ThreadedGenerateData (ThreadIdType threadId) |
|
| ~BlockMatchingImageFilter () override=default |
|
void | CopyInputMeshToOutputMeshCellData () |
|
void | CopyInputMeshToOutputMeshCellLinks () |
|
void | CopyInputMeshToOutputMeshCells () |
|
void | CopyInputMeshToOutputMeshPointData () |
|
void | CopyInputMeshToOutputMeshPoints () |
|
| MeshToMeshFilter () |
|
| ~MeshToMeshFilter () override=default |
|
void | GenerateInputRequestedRegion () override |
|
| MeshSource () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~MeshSource () override=default |
|
virtual void | AddInput (DataObject *input) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
|
DataObject * | GetInput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
|
virtual const DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
|
virtual const DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
|
bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
|
bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
|
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
|
DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
|
DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
|
DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
|
DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
|
virtual void | PopBackInput () |
|
virtual void | PopFrontInput () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
virtual void | PushBackInput (const DataObject *input) |
|
virtual void | PushFrontInput (const DataObject *input) |
|
virtual void | ReleaseInputs () |
|
virtual void | RemoveInput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveInput (DataObjectPointerArraySizeType) |
|
virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
|
bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
|
virtual void | RestoreInputReleaseDataFlags () |
|
virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
|
virtual void | SetNthInput (DataObjectPointerArraySizeType idx, DataObject *input) |
|
virtual void | SetNthOutput (DataObjectPointerArraySizeType idx, DataObject *output) |
|
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
|
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
|
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
|
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
|
virtual void | SetPrimaryInput (DataObject *object) |
|
virtual void | SetPrimaryOutput (DataObject *object) |
|
void | SetRequiredInputNames (const NameArray &) |
|
virtual void | VerifyInputInformation () const |
|
virtual void | VerifyPreconditions () const |
|
| ~ProcessObject () override |
|
DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryInput () |
|
const DataObject * | GetPrimaryInput () const |
|
virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryInputName () const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName () const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType i) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType i) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
virtual bool | GetThreaderUpdateProgress () const |
|
virtual void | ThreaderUpdateProgressOn () |
|
virtual void | ThreaderUpdateProgressOff () |
|
virtual void | SetThreaderUpdateProgress (bool arg) |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
|
| ~Object () override |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
Compose pieces computed by each thread into a single output
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
virtual void itk::BlockMatchingImageFilter< TFixedImage, TMovingImage, TFeatures, TDisplacements, TSimilarities >::BeforeThreadedGenerateData |
( |
| ) |
|
|
protectedvirtual |
Generate temporary containers to be used by individual threads exclusively
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
virtual::itk::LightObject::Pointer itk::BlockMatchingImageFilter< TFixedImage, TMovingImage, TFeatures, TDisplacements, TSimilarities >::CreateAnother |
( |
| ) |
const |
|
virtual |
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.
Reimplemented from itk::LightObject.
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
We cannot stream (see comments in GenerateOutputInformation).
Reimplemented from itk::ProcessObject.
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
Start multithreader here since MeshToMesh filter does not provide multithreaded support
Reimplemented from itk::ProcessObject.
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
We need to create our own GenerateOutputInformation because the default version from ProcessObject result in a dynamic_cast of the input pointer to the output pointer type in PointSet::CopyInformation. This does not work since they are different types.
Reimplemented from itk::ProcessObject.
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
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.
Reimplemented from itk::LightObject.
template<typename TFixedImage, typename TMovingImage = TFixedImage, typename TFeatures = PointSet<Matrix<SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension>, TFixedImage::ImageDimension>, class TDisplacements = PointSet<Vector<typename TFeatures::PointType::ValueType, TFeatures::PointDimension>, TFeatures::PointDimension>, class TSimilarities = PointSet<SpacePrecisionType, TDisplacements::PointDimension>>
Static function used as a "callback" by the MultiThreaderBase.
The threading library will call this routine for each thread, which will delegate the control to DynamicThreadedGenerateData() after setting the correct region for the thread.