-There are various others user-intended packages :
-\begin{itemize}
-\item{vtk} \\
-It contains some vtk based image processing filters :
-% \begin{enumerate}
-
- \paragraph{AppendPolyData}
- Appends one of more polygonal datasets into a single polygonal dataset
-
- \paragraph{ConeSource}
- Creates a Cone
-
- \paragraph{ImageAnisotropicDiffusion3D}
-vtkImageAnisotropicDiffusion3D diffuses an volume iteratively. \\
-The neighborhood of the diffusion is determined by the instance flags. \\
-if 'Faces' is on, the 6 voxels adjoined by faces are included in the neighborhood. \\
-If 'Edges' is on the 12 edge connected voxels are included, and if 'Corners' is on, the 8 corner connected voxels are included. \\
-'DiffusionFactor' determines how far a pixel value moves toward its neighbors, and is insensitive to the number of neighbors chosen.\\
-The diffusion is anisotropic because it only occurs when a gradient measure is below 'GradientThreshold'. \\
-Two gradient measures exist and are toggled by the 'GradientMagnitudeThreshold' flag. \\
-When 'GradientMagnitudeThreshold' is on, the magnitude of the gradient, computed by central differences, above 'DiffusionThreshold' a voxel is not
-modified. \\
-The alternative measure examines each neighbor independently.\\
-The gradient between the voxel and the neighbor must be below the 'DiffusionThreshold' for diffusion to occur with THAT neighbor.\\
- Receives : \\
- - In : an image (vtkImageData*)\\
- - Diffusion : Difference threshold that stops the diffusion\\
- Outputs : \\
- - Out : the isosurface mesh (vtkPolyData*)
-
- \paragraph{ImageCharacteristics}
- Exports objet sizes, and Spacings
-
- \paragraph{ImageDilateErode3D}
- Dilates one value and erodes another.\\
- vtkImageDilateErode3D will dilate one value and erode another. \\
- It uses an elliptical foot print, and only erodes/dilates on the boundary of the two values. \\
- The filter is restricted to the X, Y, and Z axes for now.\\
- It can degenerate to a 2 or 1 dimensional filter by setting the kernel size to 1 for a specific axis. \\
- (bbfication of vtkImageDilateErode3D) \\
- Receives : \\
- - In : an image (vtkImageData*)\\
- - DilateValue : The dilatation value\\
- - ErodeValue : The erosion value\\
- Outputs : \\
- - Out : the isosurface mesh (vtkPolyData*)
-
- \paragraph{ImageGaussianSmooth}\\
- Performs a gaussian convolution of the input image\\
- Receives : \\
- - In : an image (vtkImageData*)\\
- - StdDevX : Standard deviation in X direction\\
- - StdDevY : Standard deviation in Y direction\\
- Outputs : \\
- - Out : the isosurface mesh (vtkPolyData*)
-
- \paragraph{ImagePlanes}
- Creates three 3D planes with the input image mapped onto with which the user can interact; \\
- The output vtkImagePlaneWidget objects are to be inserted into a 3D scene (e.g. a Viewer3D)
- Receives : \\
- - In : an image (vtkImageData*)\\
- Outputs : \\
- - PlaneX : the image plane in X direction (vtkImagePlaneWidget*)\\
- - PlaneY : the image plane in Y direction (vtkImagePlaneWidget*)\\
- - PlaneY : the image plane in Z direction (vtkImagePlaneWidget*)\\
-
- Outputs : \\
- - Out : the isosurface mesh (vtkPolyData*)
-
- \paragraph{IsoSurfaceExtractor}
- Extracts an iso-surface of a 3D image and creates a vtkProp3D object to insert into a 3D scene (e.g. a Viewer3D)
- Receives : \\
- - In : an image (vtkImageData*)\\
- - Isovalue : the isosurface value (double)\\
- - Colour : Surface colour (vector of 3 doubles)
- Outputs : \\
- - Out : the isosurface (vtkProp3D**)
-
- \paragraph{MarchingCubes}
- Extracts an iso-surface of an image using the marching cubes algorithm (bbfication of vtkMarchingCubes)\\
- Receives : \\
- - In : an image (vtkImageData*)\\
- - Value : the isosurface value (double)\\
- Outputs : \\
- - Out : the isosurface mesh (vtkPolyData*)
-
- \paragraph{MIPCreator}
- Creates a Maximum Intensity Projection (MIP) view of a 3D image.\\
- Receives : \\
- - In : an image (vtkImageData*)\\
- - Scale : the Gray scale scaling (float) \\
- - Shift : the Gray scale shift (float) \\
- Ouputs : \\
- - Out : The MIP object (vtkProp3D*) to be plugged into a 3D Viever
-
- \paragraph{MetaImageReader}
- Reads .mhd / .mhd image formats (bbfication of vtkMetaImageReader) \\
- Receives : \\
- - In : the name of the file to be read (std::string)
- Outputs :
- - Out : The image (vtkImageData*)
-
- \paragraph{SegmentationConnectivity} \\
- Segmentation with min max threshold and connectivity \\
- Receives : \\
- - In : an image (vtkImageData*)\\
- - PositionXYZ : initial position (std::vector<int>) \\
- - ThresholdMinMax : min, max threshold values (std::vector<int>) \\
- Outputs : \\
- - Out : The image (vtkImageData*)
-
- \paragraph{SphereSource}
- Creates a Sphere
-% \end{enumerate}
-
-\item{itk} \\
-It contains some itk based image processing filters :
-
- \paragraph{BinaryThresholdImageFilter}
- Binarizes an image by thresholding (generic bbification of itk::BinaryThresholdImageFilter)
-
- \paragraph{DICOMSeriesFileNames}
- Reads a series from a DICOM directory as a 3D itk image
-
- \paragraph{ExtractImageFilter}
- Decrease the image size by cropping the image to the selected region bounds (bbification of itk::ExtractImageFilter)
-
- \paragraph{ImageProperties}
- Outputs different properties of an image (type, dimension, size, spacing, ...)
-
- \paragraph{ImageRegion}
-Creates a generic ImageRegion (bbtk::any) from two vectors providing the index and size of the region.
-The dimension D of the actual itk::ImageRegion created is the max of the sizes of Index and Size
-(the smallest vector is padded by zeros)
-
- \paragraph{ImageReader}
-Generic itk image reader
-
- \paragraph{ImageWriter}
-Generic itk image writer
-
- \paragraph{ImageSeriesReader}
-Generic itk image series reader.
-
- \paragraph{ResampleImageFilter}
-Resamples an image
-
-\item{itkvtk} \\
-It doesn't contain any end user intended box, only adaptors : to convert a generic itkImage to a vtkImageData, and vtkImageData* to a generic itkImage pointer
-
-Sorry nothing is done, right now for meshes.
-
-\item{wxvtk} \\
-
-It contains two atomic black boxes.
-
- \paragraph{Viewer2D}
- Receives : \\
- - a \textless vtkImageData* \textgreater (In),\\
- - an Orientation(0:yz / 1:xz / 2:xy),\\
- - an initial slice number (Slice).\\
- Outputs :\\
- - a \textless vtkRenderer* \textgreater (Renderer)
-
- \paragraph{Viewer3D}
- Receives :\\
- - up to 5 Input Actors (\textless vtkProp3D* \textgreater),\\
- - up to 5 Input Observers (\textless vtkInteractorObserver* \textgreater), \\
- - a boolean 'Stereo' option, to use Red-Blue filter
- Outputs :\\
- - an Interactor (\textless wxVTKRenderWindowInteractor* \textgreater) with which vtk widgets can interact, \\
- - a Renderer (\textless vtkRenderer* \textgreater) to which actors can be added.
-
-It contains too some sophisticated complex black boxes :
-
- \paragraph{IsoSurfaceWithControls}
- Image iso-surface extractor (vtk::IsoSurfaceExtractor) with associated control panel (isovalue, opacity and colour)\\
- Receives :\\
- - an initial isovalue (Isovalue)
- - an initial opacity (Opacity)
- - an initial colour (Colour)
- Outputs :\\
- \textless vtkProp3D* \textgreater (In)\\
-
- \paragraph{MIPWithControls}
- Maximum Intensity Projection (MIP) creator (vtk::MIPCreator) with associated control panel (shift and scale) \\
- Receives :\\
- - an initial scale (Scale)
- - an initial shift (Shift)
- Outputs :\\
- \textless vtkProp3D* \textgreater (In)\\
-
-\item{wx} \\
-
-Some boxes are the bbfication of usefull xwWidgets, some other ones are more
-sophisticated.
-
- \paragraph{ColourSelector} Colour Selector dialog (bbfication of wxColourSelector) \\
- %\begin{verbatim}
- \texttt{Out} : Colour choosen in format '[0,1] [0,1] [0,1]'
- %\end{verbatim}
-
- \paragraph{ColourSelectorButton} A button which displays a colour picker dialog when clicked \\
- %\begin{verbatim}
- \texttt{In} :Initial colour \\
- \texttt{Out} : Colour choosen in format '[0,1] [0,1] [0,1]'
- %\end{verbatim} \\
-
- \paragraph{CommandButton} Button which executes bbi commands \\
- %\begin{verbatim}
- \texttt{In} : Commands to be executed separated by commas (;). Each single quote (') is replaced by a double quote ("). \\
- \texttt{Label} : Label of the button \\
- \texttt{Widget} : Output widget \\
- %\end{verbatim}
-
- \paragraph{DirectorySelector} Pops up a directory selection dialog (wxDirDialog)\\
- %\begin{verbatim}
- \texttt{DefaultDir} : The default directory\\
- \texttt{Message} : Message to show on the dialog \\
- \texttt{Title} : Title of the dialog \\
- \texttt{Out} : The directory selected by the user\\
- %\end{verbatim}
-
- \paragraph{FileSelector} Pops up a file selection dialog for reading or saving (wxFileDialog)\\
- %\begin{verbatim}
- \texttt{DefaultDir} : The default directory \\
- \texttt{DefaultFile} : The default filename \\
- \texttt{Message} : Message to show on the dialog \\
- \texttt{OpenSave} : Open for an open dialog (default) / Save for a save dialog\\
- \texttt{Title} : Title of the dialog \\
- \texttt{Wildcard} : A wildcard, such as "*.*" or "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif" \\
- \texttt{Out} : The file selected by the user \\
- %\end{verbatim}
-
- \paragraph{InputText} A zone in which the user can enter a text (wxTextCtrl)\\
- %\begin{verbatim}
- \texttt{In} : Initial text (default '')\\
- \texttt{Title} : Title of the input zone (default '')\\
- \texttt{WinTitle} : Title of the window (*)\\
- \texttt{Out} :Current text\\
- %\end{verbatim}
-
- \paragraph{LayoutLine} LayoutLine widget (wxBoxSizer)\\
- %\begin{verbatim}
- \texttt{Orientation} Orientation (default V), 0=H=HORIZONTAL , 1=V=VERTICAL \\
- \texttt{Widget}1 widget 1 \\
- \texttt{Widget2} widget 2 \\
- \texttt{Widget3} widget 3 \\
- \texttt{Widget4} widget 4 \\
- \texttt{Widget5} widget 5 \\
- \texttt{Widget6} widget 6 \\
- \texttt{Widget7} widget 7 \\
- \texttt{Widget8} widget 8 \\
- \texttt{Widget9} widget 9\\
- %\end{verbatim}
-
- \paragraph{LayoutSplit} Widget which splits a window in two fixed size parts (wxSplitterWindow)\\
- %\begin{verbatim}
- \texttt{Orientation} : Orientation (default H), 0=H=HORIZONTAL , 1=V=VERTICAL\\
- \texttt{Proportion} : Proportion (in percent) of the first children in the window\\
- \texttt{Widget1} : Upper or left widget\\
- \texttt{Widget2} : Lower or right widget\\
- %\end{verbatim}
-
- \paragraph{LayoutTDown} Creates a 'T like' complex container : Down {UpLeft, UpRight} \\
- %\begin{verbatim}
- \texttt{Widget1} : UpLeft container\\
- \texttt{Widget2} : UpRight container\\
- \texttt{Widget3} : Down container\\
- \begin{verbatim}
-// ---------------
-// | | |
-// | W1 | W2 |
-// |-------------|
-// | |
-// | W3 |
-// ---------------
- \end{verbatim}
-
- \paragraph{LayoutTLeft} Creates a 'T like' complex container : Left {RigthUp, RightDown}\\
- %\begin{verbatim}
- \texttt{input} Widget1 : "UpLeft container"\\
- \texttt{input} Widget2 : "UpRight container"\\
- \texttt{input} Wigdet3 : "Down container"\\
- \begin{verbatim}
-// ---------------
-// | | W2 |
-// | W1 | |
-// | |------|
-// | | W3 |
-// | | |
-// ---------------
- \end{verbatim}
-
- \paragraph{LayoutTRight} Creates a 'T like' complex container : Right {LeftUp, LeftDown}\\
- %\begin{verbatim}
- \texttt{input} Widget1 currentBox.Widget1 "Up container"\\
- \texttt{input} Widget2 down.Widget1 "DownLeft container"\\
- \texttt{input} Widget3 down.Widget2 "DownRight container"\\
- \begin{verbatim}
-// ---------------
-// | | |
-// | W1 | |
-// |------| W2 |
-// | W3 | |
-// | | |
-// ---------------
- \end{verbatim}
-
- \paragraph{LayoutTUp} Creates a 'T like' complex container : Up {DownLeft, DownRight} as w1{w2,w3}\\
- \begin{verbatim}
- \texttt{ input} Widget1 currentBox.Widget1 "Up"\\
- \texttt{input} Widget2 down.Widget1 "DownLeft"\\
- \texttt{input} Widget3 down.Widget2 "DownRight"\\
-
-// ----------------
-// | W1 |
-// | |
-// |------|-------|
-// | W3 | W2 |
-// | | |
-// ----------------
- \end{verbatim}
-
- \paragraph{LayoutTab} LayoutTab widget (wxNotebook)\\
- %\begin{verbatim}
- \texttt{Orientation} Orientation (default T), 0=T=TOP , 1=R=RIGHT , 2=B=BOTTON , 3=L=LEFT \\
- \texttt{Widget1} widget 1 \\
- \texttt{Widget2} widget 2 \\
- \texttt{Widget3} widget 3 \\
- \texttt{Widget4} widget 4 \\
- \texttt{Widget5} widget 5 \\
- \texttt{Widget6} widget 6 \\
- \texttt{Widget7} widget 7 \\
- \texttt{Widget8} widget 8 \\
- \texttt{Widget9} widget 9 \\