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 [M. Bierling, Displacement estimation by hierarchical block matching, Proc. SPIE Vis. Comm. and Image Proc., vol. 1001, pp. 942-951, 1988.].
- Author
- Andriy Kot, Center for Real-Time Computing, Old Dominion University, Norfolk, VA
- See also
- MaskFeaturePointSelectionFilter
- ITK Sphinx Examples:
-
Definition at line 80 of file itkBlockMatchingImageFilter.h.
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DisplacementsConstPointer = typename DisplacementsType::ConstPointer |
|
using | DisplacementsPointer = typename DisplacementsType::Pointer |
|
using | DisplacementsType = TDisplacements |
|
using | DisplacementsVector = typename DisplacementsType::PixelType |
|
using | FeaturePointsConstPointer = typename FeaturePointsType::ConstPointer |
|
using | FeaturePointsPhysicalCoordinates = typename FeaturePointsType::PointType |
|
using | FeaturePointsPointer = typename FeaturePointsType::Pointer |
|
using | FeaturePointsType = TFeatures |
|
using | FixedImageConstPointer = typename FixedImageType::ConstPointer |
|
using | FixedImagePixelType = typename FixedImageType::PixelType |
|
using | FixedImageType = TFixedImage |
|
using | ImageIndexType = Index< ImageDimension > |
|
using | ImageRegionType = ImageRegion< ImageDimension > |
|
using | ImageSizeType = Size< ImageDimension > |
|
using | MovingImageConstPointer = typename MovingImageType::ConstPointer |
|
using | MovingImageType = TMovingImage |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = BlockMatchingImageFilter |
|
using | SimilaritiesConstPointer = typename SimilaritiesType::ConstPointer |
|
using | SimilaritiesPointer = typename SimilaritiesType::Pointer |
|
using | SimilaritiesType = TSimilarities |
|
using | SimilaritiesValue = typename SimilaritiesType::PixelType |
|
using | Superclass = MeshToMeshFilter< FeaturePointsType, DisplacementsType > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | InputMeshPointer = typename InputMeshType::Pointer |
|
using | InputMeshType = PointSet< Matrix< SpacePrecisionType, TFixedImage::ImageDimension, TFixedImage::ImageDimension >, TFixedImage::ImageDimension > |
|
using | OutputMeshPointer = typename OutputMeshType::Pointer |
|
using | OutputMeshType = PointSet< Vector< typename TFeatures::PointType::ValueType, TFeatures::PointDimension >, TFeatures::PointDimension > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = MeshToMeshFilter |
|
using | Superclass = MeshSource< PointSet< Vector< typename TFeatures::PointType::ValueType, TFeatures::PointDimension >, TFeatures::PointDimension > > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
|
using | DataObjectPointer = DataObject::Pointer |
|
using | OutputMeshPointer = typename OutputMeshType::Pointer |
|
using | OutputMeshType = PointSet< Vector< typename TFeatures::PointType::ValueType, TFeatures::PointDimension >, TFeatures::PointDimension > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = MeshSource |
|
using | Superclass = ProcessObject |
|
using | DataObjectPointerArraySizeType = ProcessObject::DataObjectPointerArraySizeType |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
|
using | DataObjectPointer = DataObject::Pointer |
|
using | DataObjectPointerArray = std::vector< DataObjectPointer > |
|
using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
|
using | MultiThreaderType = MultiThreaderBase |
|
using | NameArray = std::vector< DataObjectIdentifierType > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = ProcessObject |
|
using | Superclass = Object |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = Object |
|
using | Superclass = LightObject |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = LightObject |
|
|
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) |
|
const InputMeshType * | GetInput () const |
|
const InputMeshType * | GetInput (unsigned int idx) const |
|
const char * | GetNameOfClass () const override |
|
void | SetInput (const InputMeshType *input) |
|
const char * | GetNameOfClass () const override |
|
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 (PointSet< Vector< typename TFeatures::PointType::ValueType, TFeatures::PointDimension >, TFeatures::PointDimension > *output) |
|
DataObjectPointer | MakeOutput (DataObjectPointerArraySizeType idx) override |
|
virtual void | AbortGenerateDataOn () |
|
virtual void | EnlargeOutputRequestedRegion (DataObject *) |
|
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 DataObjectPointer | MakeOutput (const DataObjectIdentifierType &) |
|
virtual DataObjectPointer | MakeOutput (DataObjectPointerArraySizeType idx) |
|
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 | 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 |
|
const char * | GetNameOfClass () const override |
|
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 Pointer | CreateAnother () const |
|
virtual void | Delete () |
|
virtual const char * | GetNameOfClass () const |
|
virtual int | GetReferenceCount () const |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
virtual void | Register () const |
|
virtual void | SetReferenceCount (int) |
|
virtual void | UnRegister () const noexcept |
|
|
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 | GenerateData () |
|
virtual void | GenerateInputRequestedRegion () |
|
virtual void | GenerateOutputInformation () |
|
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 | SetOutput (const DataObjectIdentifierType &name, DataObject *output) |
|
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 | SetThreaderUpdateProgress (bool arg) |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
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 | PrintSelf (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>>
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::ProcessObject.