# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.3.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.


import collections

from sys import version_info as _version_info
if _version_info < (3, 7, 0):
    raise RuntimeError("Python 3.7 or later required")

from . import _ITKCommonPython


from . import _ITKImageGridPython



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _itkRegionOfInterestImageFilterPython
else:
    import _itkRegionOfInterestImageFilterPython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


if _swig_python_version_info[0:2] >= (3, 3):
    import collections.abc
else:
    import collections

import itk.itkImageToImageFilterAPython
import itk.itkImageToImageFilterCommonPython
import itk.pyBasePython
import itk.ITKCommonBasePython
import itk.itkMatrixPython
import itk.itkVectorPython
import itk.vnl_vectorPython
import itk.stdcomplexPython
import itk.vnl_matrixPython
import itk.vnl_vector_refPython
import itk.itkFixedArrayPython
import itk.itkCovariantVectorPython
import itk.vnl_matrix_fixedPython
import itk.itkPointPython
import itk.itkVectorImagePython
import itk.itkIndexPython
import itk.itkOffsetPython
import itk.itkSizePython
import itk.itkVariableLengthVectorPython
import itk.itkImagePython
import itk.itkSymmetricSecondRankTensorPython
import itk.itkRGBPixelPython
import itk.itkRGBAPixelPython
import itk.itkImageRegionPython
import itk.itkImageSourcePython
import itk.itkImageSourceCommonPython
import itk.itkPhasedArray3DSpecialCoordinatesImagePython

def itkRegionOfInterestImageFilterIF2IF2_New():
    return itkRegionOfInterestImageFilterIF2IF2.New()

class itkRegionOfInterestImageFilterIF2IF2(itk.itkImageToImageFilterAPython.itkImageToImageFilterIF2IF2):
    r"""Proxy of C++ itkRegionOfInterestImageFilterIF2IF2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterIF2IF2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterIF2IF2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion2

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion2"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterIF2IF2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterIF2IF2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterIF2IF2

        Create a new object of the class itkRegionOfInterestImageFilterIF2IF2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterIF2IF2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterIF2IF2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterIF2IF2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterIF2IF2 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF2IF2_swigregister(itkRegionOfInterestImageFilterIF2IF2)

def itkRegionOfInterestImageFilterIF3IF3_New():
    return itkRegionOfInterestImageFilterIF3IF3.New()

class itkRegionOfInterestImageFilterIF3IF3(itk.itkImageToImageFilterAPython.itkImageToImageFilterIF3IF3):
    r"""Proxy of C++ itkRegionOfInterestImageFilterIF3IF3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterIF3IF3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterIF3IF3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion3

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion3"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterIF3IF3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterIF3IF3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterIF3IF3

        Create a new object of the class itkRegionOfInterestImageFilterIF3IF3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterIF3IF3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterIF3IF3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterIF3IF3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterIF3IF3 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIF3IF3_swigregister(itkRegionOfInterestImageFilterIF3IF3)

def itkRegionOfInterestImageFilterISS2ISS2_New():
    return itkRegionOfInterestImageFilterISS2ISS2.New()

class itkRegionOfInterestImageFilterISS2ISS2(itk.itkImageToImageFilterAPython.itkImageToImageFilterISS2ISS2):
    r"""Proxy of C++ itkRegionOfInterestImageFilterISS2ISS2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterISS2ISS2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterISS2ISS2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion2

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion2"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterISS2ISS2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterISS2ISS2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterISS2ISS2

        Create a new object of the class itkRegionOfInterestImageFilterISS2ISS2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterISS2ISS2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterISS2ISS2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterISS2ISS2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterISS2ISS2 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS2ISS2_swigregister(itkRegionOfInterestImageFilterISS2ISS2)

def itkRegionOfInterestImageFilterISS3ISS3_New():
    return itkRegionOfInterestImageFilterISS3ISS3.New()

class itkRegionOfInterestImageFilterISS3ISS3(itk.itkImageToImageFilterAPython.itkImageToImageFilterISS3ISS3):
    r"""Proxy of C++ itkRegionOfInterestImageFilterISS3ISS3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterISS3ISS3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterISS3ISS3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion3

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion3"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterISS3ISS3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterISS3ISS3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterISS3ISS3

        Create a new object of the class itkRegionOfInterestImageFilterISS3ISS3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterISS3ISS3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterISS3ISS3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterISS3ISS3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterISS3ISS3 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterISS3ISS3_swigregister(itkRegionOfInterestImageFilterISS3ISS3)

def itkRegionOfInterestImageFilterIUC2IUC2_New():
    return itkRegionOfInterestImageFilterIUC2IUC2.New()

class itkRegionOfInterestImageFilterIUC2IUC2(itk.itkImageToImageFilterAPython.itkImageToImageFilterIUC2IUC2):
    r"""Proxy of C++ itkRegionOfInterestImageFilterIUC2IUC2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterIUC2IUC2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterIUC2IUC2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion2

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion2"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterIUC2IUC2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterIUC2IUC2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterIUC2IUC2

        Create a new object of the class itkRegionOfInterestImageFilterIUC2IUC2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterIUC2IUC2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterIUC2IUC2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterIUC2IUC2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterIUC2IUC2 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC2IUC2_swigregister(itkRegionOfInterestImageFilterIUC2IUC2)

def itkRegionOfInterestImageFilterIUC3IUC3_New():
    return itkRegionOfInterestImageFilterIUC3IUC3.New()

class itkRegionOfInterestImageFilterIUC3IUC3(itk.itkImageToImageFilterAPython.itkImageToImageFilterIUC3IUC3):
    r"""Proxy of C++ itkRegionOfInterestImageFilterIUC3IUC3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterIUC3IUC3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterIUC3IUC3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion3

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion3"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterIUC3IUC3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterIUC3IUC3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterIUC3IUC3

        Create a new object of the class itkRegionOfInterestImageFilterIUC3IUC3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterIUC3IUC3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterIUC3IUC3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterIUC3IUC3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterIUC3IUC3 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterIUC3IUC3_swigregister(itkRegionOfInterestImageFilterIUC3IUC3)

def itkRegionOfInterestImageFilterVIF2VIF2_New():
    return itkRegionOfInterestImageFilterVIF2VIF2.New()

class itkRegionOfInterestImageFilterVIF2VIF2(itk.itkImageToImageFilterAPython.itkImageToImageFilterVIF2VIF2):
    r"""Proxy of C++ itkRegionOfInterestImageFilterVIF2VIF2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterVIF2VIF2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterVIF2VIF2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion2

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion2"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterVIF2VIF2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterVIF2VIF2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterVIF2VIF2

        Create a new object of the class itkRegionOfInterestImageFilterVIF2VIF2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterVIF2VIF2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterVIF2VIF2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterVIF2VIF2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterVIF2VIF2 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF2VIF2_swigregister(itkRegionOfInterestImageFilterVIF2VIF2)

def itkRegionOfInterestImageFilterVIF3VIF3_New():
    return itkRegionOfInterestImageFilterVIF3VIF3.New()

class itkRegionOfInterestImageFilterVIF3VIF3(itk.itkImageToImageFilterAPython.itkImageToImageFilterVIF3VIF3):
    r"""Proxy of C++ itkRegionOfInterestImageFilterVIF3VIF3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterVIF3VIF3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterVIF3VIF3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion3

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion3"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterVIF3VIF3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterVIF3VIF3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterVIF3VIF3

        Create a new object of the class itkRegionOfInterestImageFilterVIF3VIF3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterVIF3VIF3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterVIF3VIF3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterVIF3VIF3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterVIF3VIF3 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIF3VIF3_swigregister(itkRegionOfInterestImageFilterVIF3VIF3)

def itkRegionOfInterestImageFilterVISS2VISS2_New():
    return itkRegionOfInterestImageFilterVISS2VISS2.New()

class itkRegionOfInterestImageFilterVISS2VISS2(itk.itkImageToImageFilterAPython.itkImageToImageFilterVISS2VISS2):
    r"""Proxy of C++ itkRegionOfInterestImageFilterVISS2VISS2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterVISS2VISS2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterVISS2VISS2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion2

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion2"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterVISS2VISS2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterVISS2VISS2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterVISS2VISS2

        Create a new object of the class itkRegionOfInterestImageFilterVISS2VISS2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterVISS2VISS2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterVISS2VISS2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterVISS2VISS2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterVISS2VISS2 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS2VISS2_swigregister(itkRegionOfInterestImageFilterVISS2VISS2)

def itkRegionOfInterestImageFilterVISS3VISS3_New():
    return itkRegionOfInterestImageFilterVISS3VISS3.New()

class itkRegionOfInterestImageFilterVISS3VISS3(itk.itkImageToImageFilterAPython.itkImageToImageFilterVISS3VISS3):
    r"""Proxy of C++ itkRegionOfInterestImageFilterVISS3VISS3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterVISS3VISS3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterVISS3VISS3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion3

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion3"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterVISS3VISS3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterVISS3VISS3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterVISS3VISS3

        Create a new object of the class itkRegionOfInterestImageFilterVISS3VISS3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterVISS3VISS3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterVISS3VISS3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterVISS3VISS3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterVISS3VISS3 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVISS3VISS3_swigregister(itkRegionOfInterestImageFilterVISS3VISS3)

def itkRegionOfInterestImageFilterVIUC2VIUC2_New():
    return itkRegionOfInterestImageFilterVIUC2VIUC2.New()

class itkRegionOfInterestImageFilterVIUC2VIUC2(itk.itkImageToImageFilterAPython.itkImageToImageFilterVIUC2VIUC2):
    r"""Proxy of C++ itkRegionOfInterestImageFilterVIUC2VIUC2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterVIUC2VIUC2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterVIUC2VIUC2_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion2

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion2"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterVIUC2VIUC2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterVIUC2VIUC2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterVIUC2VIUC2

        Create a new object of the class itkRegionOfInterestImageFilterVIUC2VIUC2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterVIUC2VIUC2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterVIUC2VIUC2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterVIUC2VIUC2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterVIUC2VIUC2 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC2VIUC2_swigregister(itkRegionOfInterestImageFilterVIUC2VIUC2)

def itkRegionOfInterestImageFilterVIUC3VIUC3_New():
    return itkRegionOfInterestImageFilterVIUC3VIUC3.New()

class itkRegionOfInterestImageFilterVIUC3VIUC3(itk.itkImageToImageFilterAPython.itkImageToImageFilterVIUC3VIUC3):
    r"""Proxy of C++ itkRegionOfInterestImageFilterVIUC3VIUC3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegionOfInterestImageFilterVIUC3VIUC3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegionOfInterestImageFilterVIUC3VIUC3_Pointer"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_Clone(self)

    def SetRegionOfInterest(self, _arg):
        r"""
        SetRegionOfInterest(self, _arg)

        Parameters
        ----------
        _arg: itkImageRegion3

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_SetRegionOfInterest(self, _arg)

    def GetRegionOfInterest(self):
        r"""GetRegionOfInterest(self) -> itkImageRegion3"""
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_GetRegionOfInterest(self)
    SameDimensionCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_SameDimensionCheck
    
    InputConvertibleToOutputCheck = _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_InputConvertibleToOutputCheck
    
    __swig_destroy__ = _itkRegionOfInterestImageFilterPython.delete_itkRegionOfInterestImageFilterVIUC3VIUC3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegionOfInterestImageFilterVIUC3VIUC3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegionOfInterestImageFilterVIUC3VIUC3

        Create a new object of the class itkRegionOfInterestImageFilterVIUC3VIUC3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegionOfInterestImageFilterVIUC3VIUC3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegionOfInterestImageFilterVIUC3VIUC3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegionOfInterestImageFilterVIUC3VIUC3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegionOfInterestImageFilterVIUC3VIUC3 in _itkRegionOfInterestImageFilterPython:
_itkRegionOfInterestImageFilterPython.itkRegionOfInterestImageFilterVIUC3VIUC3_swigregister(itkRegionOfInterestImageFilterVIUC3VIUC3)

from itk.support import helpers
import itk.support.types as itkt
from typing import Sequence, Tuple, Union

@helpers.accept_array_like_xarray_torch
def region_of_interest_image_filter(*args: itkt.ImageLike,  region_of_interest: itkt.ImageRegion=...,**kwargs)-> itkt.ImageSourceReturn:
    """Functional interface for RegionOfInterestImageFilter"""
    import itk

    kwarg_typehints = { 'region_of_interest':region_of_interest }
    specified_kwarg_typehints = { k:v for (k,v) in kwarg_typehints.items() if kwarg_typehints[k] is not ... }
    kwargs.update(specified_kwarg_typehints)


    instance = itk.RegionOfInterestImageFilter.New(*args, **kwargs)

    return instance.__internal_call__()

def region_of_interest_image_filter_init_docstring():
    import itk
    from itk.support import template_class

    filter_class = itk.ITKImageGrid.RegionOfInterestImageFilter
    region_of_interest_image_filter.process_object = filter_class
    is_template = isinstance(filter_class, template_class.itkTemplate)
    if is_template:
        filter_object = filter_class.values()[0]
    else:
        filter_object = filter_class

    region_of_interest_image_filter.__doc__ = filter_object.__doc__



