ImageDev

- Getting Started
- ImageDev Python
- ImageDev C#
- ImageDev C++
- Licensing Information
- Redistributable Files
- Processing
- Image Manipulation
- - Synthetic Images
  - - RandomImage2d
    - RandomImage3d
    - RandomGaussianImage2d
    - RandomGaussianImage3d
    - RadialFunctionImage2d
    - RadialFunctionImage3d
    - OrientedLinesImage2d
    - OrientedLinesImage3d
    - RandomSphereImage3d
    - BoxGridImage2d
    - BoxGridImage3d
    - WedgeMaskImage3d
    - PointSpreadFunctionImage3d
  - Image Editing
  - - ConvertImage
    - ResetImage
    - CopyImage
    - PasteImage2d
    - PasteImage3d
    - CropImage2d
    - CropImage3d
    - SampleImage2d
    - SampleImage3d
    - InterlaceFrames2d
    - DeinterlaceFrames2d
  - Stack Operations
  - - SequenceConcatenation
    - SequenceToMultispectral
    - SequenceToVolume
    - VolumeToSequence
    - MultispectralToSequence
    - GetSliceFromVolume3d
    - SetSliceToVolume3d
    - GetObliqueSliceFromVolume3d
    - ImageStackProjection3d
    - VolumeProjection3d
- Geometry And Matching
- - Geometric Transforms
  - - Shearing3d
    - TranslateImage2d
    - TranslateImage3d
    - Flip2d
    - Flip3d
    - FlipImage2d
    - FlipImage3d
    - TransposeImage2d
    - TransposeImage3d
    - SwapQuadrants
    - Rotate2d
    - Rotate3d
    - RotationGenerator3d
    - Resize2d
    - Resize3d
    - RescaleByFactor
    - RescaleImageByFactor
    - ResampleAffine2d
    - ResampleAffine3d
    - ResampleElastic2d
    - SurfaceUnfolding3d
  - Pattern Recognition
  - - BinaryCorrelation2d
    - CrossCorrelation2d
    - CorrelationByDifference2d
    - CorrelationBySignChange2d
  - Registration
  - - ImagePrealignment3d
    - AffineRegistration
    - ElasticRegistration2d
- Arithmetic And Logic
- - Arithmetical Operations
  - - AbsoluteValue
    - AbsoluteMaximumWithImage
    - ArithmeticOperationWithImage
    - ArithmeticOperationWithValue
    - BlendWithImage
    - BlendWithValue
    - DirectionalBlending2d
    - CombineByMask
    - ImageFormula
    - EigenDecomposition2d
    - EigenDecomposition3d
  - Logical Operations
  - - MaskImage
    - LogicalOperationWithImage
    - LogicalOperationWithValue
    - LogicalNot
    - InvertImage
    - BitShift
- Image Filtering
- - Grayscale Transforms
  - - RescaleIntensity
    - StackRescaleIntensity
    - MatchContrast
    - HistogramEqualization
    - Clahe2d
    - Clahe3d
    - AdaptiveHistogramEqualization
    - ApplyGrayscaleLut
    - BackgroundImage2d
    - RadialBackgroundImage2d
    - ShadingCorrection
    - Exponential
    - Logarithm
    - Square
    - SquareRoot
    - RingArtifactRemoval3d
    - BeamHardeningCorrection3d
  - Color Transforms
  - - ColorToLightness
    - GetColorChannel
    - ColorToGrayscale
    - GrayscaleToColor
    - ColorSpaceConversion
    - ColorAntialiasing2d
    - BayerToRgb2d
    - DecorrelationStretch2d
    - BlendAlphaChannelWithImage
    - BlendAlphaChannelWithValue
  - Smoothing And Denoising
  - - BoxFilter2d
    - BoxFilter3d
    - MedianFilter2d
    - MedianFilter3d
    - GaussianFilter2d
    - GaussianFilter3d
    - ExponentialFilter2d
    - RecursiveExponentialFilter2d
    - RecursiveExponentialFilter3d
    - NonLocalMeansFilter2d
    - NonLocalMeansFilter3d
    - CurvatureDrivenDiffusion
    - BilateralFilter2d
    - BilateralFilter3d
    - MajorityFilter2d
    - MajorityFilter3d
    - SigmaFilter2d
    - SigmaFilter3d
    - Despeckle2d
    - Despeckle3d
    - NagaoFilter2d
    - NagaoFilter3d
    - SnnFilter2d
    - SnnFilter3d
    - FlowInpainting
  - Sharpening
  - - Deblurring2d
    - Delineate2d
    - Delineate3d
    - UnsharpMasking2d
    - UnsharpMasking3d
    - Shade2d
    - RichardsonLucyDeconvolution
  - Texture Filters
  - - MeanFilter2d
    - MeanFilter3d
    - VarianceFilter2d
    - VarianceFilter3d
    - SkewnessFilter2d
    - SkewnessFilter3d
    - KurtosisFilter2d
    - KurtosisFilter3d
    - ContrastFilter2d
    - ContrastFilter3d
    - VariationFilter2d
    - VariationFilter3d
    - EnergyFilter2d
    - EnergyFilter3d
    - EntropyFilter2d
    - EntropyFilter3d
    - AutocorrelationFilter
    - LocalAutocorrelationFilter2d
    - ImageCurvature2d
    - ImageCurvature3d
    - StructureEnhancementFilter2d
    - StructureEnhancementFilter3d
    - ScaleSpaceLogFilter2d
    - ScaleSpaceLogFilter3d
  - Frequency Domain
  - - ComplexFft
    - ComplexFftInverse
    - ComplexCenteredFft
    - ComplexCenteredFftInverse
    - CartesianToPolar2d
    - PolarToCartesian2d
    - ConvolutionWithImage
    - ConvolutionWithImage2d
    - RadialFrequencyFilter2d
    - GaborFiltering2d
- Edge Detection
- - Gradient
  - - GradientOperator2d
    - GradientOperator3d
    - VectorToMagnitude2d
    - VectorToMagnitude3d
    - GradientVector2d
    - GradientVector3d
    - GradientMagnitude2d
    - GradientMagnitude3d
    - MorphologicalGradient2d
    - MorphologicalGradient3d
    - RadialGradientCentered2d
    - RadialGradientCentered3d
    - RadialGradientContour2d
    - RadialGradientContour3d
    - RadialGradientLabel2d
    - RadialGradientLabel3d
  - Laplacian
  - - DobFilter2d
    - DobFilter3d
    - MorphologicalLaplacian
    - RecursiveLaplacian2d
    - RecursiveLaplacian3d
  - Other Derivatives
  - - GaussianDerivative2d
    - GaussianDerivative3d
    - GaussianHessianMatrix2d
    - GaussianHessianMatrix3d
    - GaussianGradientTensor2d
    - GaussianGradientTensor3d
  - Edge Marking
  - - ImageLocalMaxima2d
    - ImageLocalMaxima3d
    - RidgeDetection
    - ZeroCrossings2d
    - DijkstraShortestPath2d
    - EigenvaluesToStructureness2d
    - EigenvaluesToStructureness3d
    - TensorVoting2d
    - CannyEdgeDetector2d
    - CannyEdgeDetector3d
- Image Segmentation
- - Binarization
  - - Thresholding
    - ThresholdingByCriterion
    - AutoThresholdingBright
    - AutoThresholdingDark
    - ColorThresholding
    - TopHat
    - FeatureAdaptiveThresholding
    - AdaptiveThresholding2d
    - AdaptiveThresholding3d
    - HysteresisThresholding
  - Labeling
  - - Labeling2d
    - Labeling3d
    - ReorderLabels
    - AssignLabel
    - AddObjectToLabel
    - GroupCloseLabelsl2d
  - Feature Selection
  - - KillBorder2d
    - KillBorder3d
    - RemoveSmallSpots
    - ObjectBoundaries
    - BinarySmoothing2d
    - BinarySmoothing3d
    - LabelInterfaces
  - Separating And Filling
  - - FillHoles2d
    - FillHoles3d
    - RemoveSmallHoles
    - FillImageBorder3d
    - ExpandLabelBoundaries
    - SeparateObjects
    - HExtremaWatershed
    - SeparateObjectsByBlock
    - HExtremaWatershedByBlock
    - ConvexHull2d
  - Region Growing
  - - MarkerBasedWatershed2d
    - MarkerBasedWatershed3d
    - MarkerBasedWatershedByBlock
    - MarkerBasedWatershedBasinsByBlock
    - ExpandLabelsOnBackground
    - FloodFillThreshold2d
    - FloodFillThreshold3d
    - Waterpixel
  - Computational Geometry
  - - PolylineResampler2d
    - PolylineResampler3d
    - PolylineExtrusion3d
    - SurfaceFitting3d
- Mathematical Morphology
- - Erosion And Dilation
  - - Erosion2d
    - Erosion3d
    - Dilation2d
    - Dilation3d
    - ErosionDisk2d
    - ErosionDisk3d
    - ErosionBall3d
    - DilationDisk2d
    - DilationDisk3d
    - DilationBall3d
    - ErosionLine2d
    - ErosionLine3d
    - DilationLine2d
    - DilationLine3d
    - ErosionColor2d
    - DilationColor2d
    - SelectiveErosion2d
    - SelectiveErosion3d
    - SelectiveDilation2d
    - SelectiveDilation3d
  - Opening And Closing
  - - Opening2d
    - Opening3d
    - Closing2d
    - Closing3d
    - OpeningDisk2d
    - OpeningDisk3d
    - OpeningBall3d
    - ClosingDisk2d
    - ClosingDisk3d
    - ClosingBall3d
    - OpeningLine2d
    - OpeningLine3d
    - ClosingLine2d
    - ClosingLine3d
    - OpeningLineMaximum
    - ClosingLineMinimum
    - OpeningColor2d
    - ClosingColor2d
    - OpeningByReconstruction2d
    - OpeningByReconstruction3d
    - ClosingByReconstruction2d
    - ClosingByReconstruction3d
    - OpeningDiskByReconstruction2d
    - OpeningBallByReconstruction3d
    - ClosingDiskByReconstruction2d
    - ClosingBallByReconstruction3d
    - SelectiveOpening2d
    - SelectiveOpening3d
    - SelectiveClosing2d
    - SelectiveClosing3d
  - Hit Or Miss And Skeleton
  - - Skeleton
    - Centerline3d
    - InfluenceZones
    - Centroid2d
    - EndPoints2d
    - EndPoints3d
    - Pruning2d
    - Pruning3d
    - IsolatedPoints2d
    - IsolatedPoints3d
    - TriplePoints2d
    - InteriorPoints2d
    - ApplyMorphologicalLut2d
    - ApplyMorphologicalLut3d
  - Geodesic Transformations
  - - ReconstructionFromMarkers2d
    - ReconstructionFromMarkers3d
    - GrayscaleReconstruction2d
    - GrayscaleReconstruction3d
    - GrayscaleFillHoles2d
    - GrayscaleFillHoles3d
    - HExtrema2d
    - HExtrema3d
    - RegionalExtrema2d
    - RegionalExtrema3d
    - UltimateErosion
  - Distance Maps
  - - DistanceMap2d
    - DistanceMap3d
    - EuclideanDistanceMap3d
    - EuclideanDistanceMap2d
    - GeodesicDistanceMap
    - ClosestBoundaryPoints2d
    - ClosestBoundaryPoints3d
    - TimeMap
    - LocalThicknessMap3d
    - GeodesicPropagation2d
    - GeodesicMaxima
    - GeodesicMinima
- Image Analysis
- - Image Measurements
  - - BinaryAnalysis
    - Area2d
    - Area3d
    - IntensityIntegral2d
    - IntensityIntegral3d
    - ObjectCount
    - DistanceMean2d
    - EulerNumber2d
    - EulerNumber3d
    - FractalDimension
    - CurvatureIntegrals3d
  - Image Statistics
  - - IntensityExtrema
    - IntensityStatistics
    - IntensityMaskedStatistics
    - IntensityHistogram
    - IntensityBinHistogram
    - AutoThresholdingValue
    - CompareImage
    - CompareValue
    - SimilarityMetricValue
    - SsimValue2d
    - SsimValue3d
    - RegionSimilarity
    - RadialIntensityProfile2d
    - RadialIntensityProfile3d
    - CylindricalIntensityProfile3d
    - RadialAutocorrelationProfile
    - Cooccurrence2d
    - MeasureGaussianNoise
    - LocalMaxima2d
    - LocalMaxima3d
    - PeakExtractor
    - LocalDensityMap2d
    - LocalDensityMap3d
    - SegmentationMetrics
  - Individual Measurements
  - - VolumeFractionByLabel
    - LabelCountByRegion
    - VolumeFractionByRegion
    - LabelAnalysis
    - LabelFiltering
    - LabelFilteringAnalysis
    - FilterAnalysis
    - MeasurementToImage
    - FilterByMeasurement
    - SieveLabeling
  - Moments And Orientations
  - - MomentsOfInertia2d
    - MomentsOfInertia3d
    - InertiaMoment2d
    - Eccentricity2d
    - OrientationMapFourier3d
    - OrientationMatchingFourier3d
  - Morphometry
  - - ObjectVolume
    - TotalImageVolume
    - ObjectBoundaryArea
    - TotalImageBoundaryArea
    - AverageObjectAreaPerSlice3d
    - AverageObjectCountPerSlice3d
    - ObjectImageRatio
    - ObjectSpecificSurface
    - ObjectSurfaceDensity
    - PorosityPercentage3d
    - FragmentationIndex
    - StructureModelIndex3d
    - AverageObjectThickness3d
    - AverageSpaceThickness3d
    - ObjectLinearDensity3d
    - DegreeOfAnisotropy
  - Propagation
  - - AxisPropagationBinary3d
    - AxisPropagationBinaryWithSeeds3d
    - AxisPropagationLabel3d
    - AxisPropagationLabelWithSeeds3d
    - AxisPropagationDistance3d
    - EstimateShortestPath3d
    - PercolationThreshold3d
    - AxisConnectivity3d
    - CentroidPathTortuosity3d
- Machine Learning
- - Classification
  - - AutoSegmentation3Phases
    - AutoIntensityClassification
    - SupervisedTextureClassification2d
    - SupervisedTextureClassification3d
    - TextureClassificationCreate
    - TextureClassificationTrain
    - TextureClassificationApply
  - Deep learning
  - - OnnxPredictionFiltering2d
    - OnnxPredictionFiltering3d
    - OnnxPredictionSegmentation2d
    - OnnxPredictionSegmentation3d
    - OnnxPredictionTwoOutputs2d
    - OnnxPredictionTwoOutputs3d
- Business Application
- - Dental
  - - DentalWallSegmentation3d
    - DentalMeshExtraction3d
    - DentalUnfolding3d
- IO
- - Image Data
  - - ReadVipImage
    - WriteVipImage
  - Algebraic Data
  - - ReadArrayXd
    - ReadArrayXi64
    - WriteArrayXd
    - WriteArrayXi64
  - Model
  - - ReadOnnxModel
- CUDA
- - Geometry And Matching
  - - CudaCrossCorrelation2d
    - CudaTemplateMatching3d
  - Image Filtering
  - - CudaBoxFilter2d
    - CudaMedianFilter2d
    - CudaGaussianFilter3d
    - CudaAdaptiveManifoldNlmFilter
  - Mathematical Morphology
  - - CudaErosion2d
    - CudaDilation2d
    - CudaOpening2d
    - CudaClosing2d
- Utilities
- Initialization
- Processing
- Syntax Check
- Visualization
- Data Object
- Image Data
- Kernels
- - MorphologicalKernel2d
  - MorphologicalKernel3d
  - MorphologicalLut2d
  - MorphologicalLut3d
- Model
- - TextureClassificationModel
  - OnnxModel
- Global Measurements
- - Image Measurements
  - - Area2dMsr
    - Area3dMsr
    - IntensityIntegral2dMsr
    - IntensityIntegral3dMsr
    - ObjectCountMsr
    - DistanceMeanMsr
    - Euler2dMsr
    - Euler3dMsr
    - FractalMsr
    - CurvatureIntegralsMsr
  - Image Statistics
  - - IntensityExtremaMsr
    - StatisticsMsr
    - IntensityHistogramMsr
    - IntensityBinHistogramMsr
    - CompareMsr
    - SimilarityMetricValueMsr
    - SsimValueMsr
    - RegionSimilarityMsr
    - SegmentationMetricsObjectMsr
    - SegmentationMetricsImageMsr
    - CylindricalIntensityProfileMsr
    - RadialIntensityProfileMsr
    - CorrelationMsr
    - CoocurrrenceMsr
    - GaussianNoiseMsr
    - LocalMaximaMsr
    - PeakExtractorMsr
  - Individual Measurements
  - - VolumeFractionByLabelMsr
    - LabelCountByRegionMsr
    - VolumeFractionByRegionMsr
  - Moments And Orientations
  - - MomentsOfInertia2dMsr
    - MomentsOfInertia3dMsr
    - MeanInertiaMomentMsr
    - Eccentricity2dMsr
    - LocalOrientation3dMsr
  - Morphometry
  - - ObjectVolumeMsr
    - ImageVolumeMsr
    - ObjectBoundaryAreaMsr
    - ImageBoundaryAreaMsr
    - AverageObjectAreaPerSliceMsr
    - AverageObjectCountPerSliceMsr
    - ObjectImageRatioMsr
    - ObjectSpecificSurfaceMsr
    - ObjectSurfaceDensityMsr
    - PorosityPercentageMsr
    - FragmentationMsr
    - StructureModelIndexMsr
    - AverageObjectThicknessMsr
    - AverageSpaceThicknessMsr
    - ObjectLinearDensityMsr
    - AnisotropyDegreeMsr
  - Propagation
  - - AxisPropagationBinary3dMsr
    - AxisPropagationLabel3dMsr
    - AxisPropagationDistance3dMsr
    - PercolationThreshold3dMsr
    - CentroidTortuosity3dMsr
  - Geometry And Matching
  - - CrossCorrelation2dMsr
  - Edge Detection
  - - CannyEdgeDetectorMsr
  - Image Segmentation
  - - AutoThresholdingMsr
    - AutoSegmentation3PhasesMsr
  - Mathematical Morphology
  - - ApplyMorphologicalLutMsr
- Analysis Measurements
- - AnalysisMsr
  - Measurement
  - Native Measurements
  - - Geometry
    - Feret
    - Intensity
    - Histogram
    - Inertia
    - Locate
    - Segment
    - Cooccurrence
  - CustomMeasurement
  - MeasurementAttributes
  - - Quantile
    - Histogram
    - Feret2d
    - Feret3d
    - NeighborCount
    - Cooccurrence
    - Breadth3d
  - MeasurementGroup
- Measurement Information
- - FieldInformation
  - CustomMeasurementInfo
- CUDA
- - CudaContext
- User Guide
- First Steps
- - Hello ImageDev
  - Initialize ImageDev
- Image Management
- - Create 2D Image
  - Create 3D Image
  - Data Transfer
- Standard Processing
- - Denoising
  - Thresholding
- Image Analysis
- - Global Analysis
  - Label Analysis
  - Measurement Browsing
  - Measurement Group
  - Custom Analysis
- Advanced Processing
- - Algorithm Tracking
- Typical Use Cases
- - Particle Analysis
  - Pore Analysis

# TextureClassificationTrain

Enriches a texture model by training it on a gray level image that has been labeled.
Access to parameter description
As an introduction:

- section Image Segmentation
- section Supervised Texture Classification

This algorithm can work on 3D, sequence, and spectral images.
Following the computation mode of the associated texture classification model (2D or 3D) initialized with TextureClassificationCreate, the input image can be considered as a series of 2D images or as a series of 3D images.
For all the labeled pixels of the training image, this algorithm extracts the texture features defined by the groups selected in the texture classification model. These newly extracted features increase the training-set and enrich the model.
Note: All the pixels within the analysis radius of a labeled pixel are considered for the feature extraction. It means that the number of pixels used for training is greater than the number of the labeled pixels.
See also

- TextureClassificationCreate
- TextureClassificationApply
- SupervisedTextureClassification2d
- SupervisedTextureClassification3d

##
Function Syntax

This function returns inputOutputModel.

    // Function prototype
    TextureClassificationModel::Ptr
    textureClassificationTrain( std::shared_ptr< iolink::ImageView > inputImage,
                                std::shared_ptr< iolink::ImageView > inputTrainingImage,
                                double minSeparationPercentage,
                                bool finalizeTraining,
                                TextureClassificationModel::Ptr inputOutputModel = nullptr );

This function returns inputOutputModel.

    // Function prototype.
    texture_classification_train(input_image: idt.ImageType,
                                 input_training_image: idt.ImageType,
                                 min_separation_percentage: float = 5,
                                 finalize_training: bool = True,
                                 input_output_model: Union[Any, None] = None) -> TextureClassificationModel

This function returns inputOutputModel.

    // Function prototype.
    public static TextureClassificationModel
    TextureClassificationTrain( IOLink.ImageView inputImage,
                                IOLink.ImageView inputTrainingImage,
                                double minSeparationPercentage = 5,
                                bool finalizeTraining = true,
                                TextureClassificationModel inputOutputModel = null );

##
Class Syntax

    // Command constructor.
    TextureClassificationTrain();

    /// Gets the inputImage parameter.
    /// The input grayscale image.
    std::shared_ptr< iolink::ImageView > inputImage() const;
    /// Sets the inputImage parameter.
    /// The input grayscale image.
    void setInputImage( std::shared_ptr< iolink::ImageView > inputImage );

    /// Gets the inputTrainingImage parameter.
    /// The input label image.
    std::shared_ptr< iolink::ImageView > inputTrainingImage() const;
    /// Sets the inputTrainingImage parameter.
    /// The input label image.
    void setInputTrainingImage( std::shared_ptr< iolink::ImageView > inputTrainingImage );

    /// Gets the minSeparationPercentage parameter.
    /// This parameter controls the rejection criteria of the feature selection algorithm (FS).
    double minSeparationPercentage() const;
    /// Sets the minSeparationPercentage parameter.
    /// This parameter controls the rejection criteria of the feature selection algorithm (FS).
    void setMinSeparationPercentage( const double& minSeparationPercentage );

    /// Gets the finalizeTraining parameter.
    /// This parameter indicates whether the algorithm must finalize the training. This parameter must be set to true since the retraining is currently not allowed.
    bool finalizeTraining() const;
    /// Sets the finalizeTraining parameter.
    /// This parameter indicates whether the algorithm must finalize the training. This parameter must be set to true since the retraining is currently not allowed.
    void setFinalizeTraining( const bool& finalizeTraining );

    /// Gets the inputOutputModel parameter.
    /// The input and output texture classification model.
    TextureClassificationModel::Ptr inputOutputModel() const;
    /// Sets the inputOutputModel parameter.
    /// The input and output texture classification model.
    void setInputOutputModel( TextureClassificationModel::Ptr inputOutputModel );

    // Method to launch the command.
    void execute();

    # Property of the inputImage parameter.
    TextureClassificationTrain.input_image
    # Property of the inputTrainingImage parameter.
    TextureClassificationTrain.input_training_image
    # Property of the minSeparationPercentage parameter.
    TextureClassificationTrain.min_separation_percentage
    # Property of the finalizeTraining parameter.
    TextureClassificationTrain.finalize_training
    # Property of the inputOutputModel parameter.
    TextureClassificationTrain.input_output_model

    // Method to launch the command.
    execute()

    // Command constructor.
    TextureClassificationTrain()

    // Property of the inputImage parameter.
    TextureClassificationTrain.inputImage
    // Property of the inputTrainingImage parameter.
    TextureClassificationTrain.inputTrainingImage
    // Property of the minSeparationPercentage parameter.
    TextureClassificationTrain.minSeparationPercentage
    // Property of the finalizeTraining parameter.
    TextureClassificationTrain.finalizeTraining
    // Property of the inputOutputModel parameter.
    TextureClassificationTrain.inputOutputModel

    // Method to launch the command.
    Execute()

## Parameters

Parameter Name | Description | Type | Supported Values | Default Value
--- | --- | --- | --- | ---
| inputImage | The input grayscale image. | Image | Grayscale | nullptr
| inputTrainingImage | The input label image. Each label represents a class sample for the training. | Image | Label | nullptr
| minSeparationPercentage | This parameter controls the rejection criteria of the feature selection algorithm (FS). A measure is rejected if its contribution does not increase the separation power of the classification model enough. This ratio indicates the minimal relative growth required to keep a measure. More information is available in the Feature Selection section. This value must be greater than or equal to 0.0. | Float64 | [0, 100] | 5
| finalizeTraining | This parameter indicates whether the algorithm must finalize the training. This parameter must be set to true since the retraining is currently not allowed. | Bool |  | true
| inputOutputModel | The input and output texture classification model. | TextureClassificationModel |  | nullptr

Parameter Name | Description | Type | Supported Values | Default Value
--- | --- | --- | --- | ---
| input_image | The input grayscale image. | image | Grayscale | None
| input_training_image | The input label image. Each label represents a class sample for the training. | image | Label | None
| min_separation_percentage | This parameter controls the rejection criteria of the feature selection algorithm (FS). A measure is rejected if its contribution does not increase the separation power of the classification model enough. This ratio indicates the minimal relative growth required to keep a measure. More information is available in the Feature Selection section. This value must be greater than or equal to 0.0. | float64 | [0, 100] | 5
| finalize_training | This parameter indicates whether the algorithm must finalize the training. This parameter must be set to true since the retraining is currently not allowed. | bool |  | True
| input_output_model | The input and output texture classification model. | TextureClassificationModel |  | None

Parameter Name | Description | Type | Supported Values | Default Value
--- | --- | --- | --- | ---
| inputImage | The input grayscale image. | Image | Grayscale | null
| inputTrainingImage | The input label image. Each label represents a class sample for the training. | Image | Label | null
| minSeparationPercentage | This parameter controls the rejection criteria of the feature selection algorithm (FS). A measure is rejected if its contribution does not increase the separation power of the classification model enough. This ratio indicates the minimal relative growth required to keep a measure. More information is available in the Feature Selection section. This value must be greater than or equal to 0.0. | Float64 | [0, 100] | 5
| finalizeTraining | This parameter indicates whether the algorithm must finalize the training. This parameter must be set to true since the retraining is currently not allowed. | Bool |  | true
| inputOutputModel | The input and output texture classification model. | TextureClassificationModel |  | null

## Object Examples

    auto classification_input = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "classification_input.vip" );
    auto classification_input_label = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "classification_input_label.vip" );
    TextureClassificationModel::Ptr modelToTrain= TextureClassificationModel::read( std::string( IMAGEDEVDATA_OBJECTS_FOLDER ) + "modelToTrain.vip" );

    TextureClassificationTrain textureClassificationTrainAlgo;
    textureClassificationTrainAlgo.setInputImage( classification_input );
    textureClassificationTrainAlgo.setInputTrainingImage( classification_input_label );
    textureClassificationTrainAlgo.setMinSeparationPercentage( 5 );
    textureClassificationTrainAlgo.setFinalizeTraining( true );
    textureClassificationTrainAlgo.setInputOutputModel( modelToTrain );
    textureClassificationTrainAlgo.execute();

    std::cout << "computeMode: " << textureClassificationTrainAlgo.inputOutputModel()->computeMode( ) ;

    classification_input = imagedev.read_vip_image(imagedev_data.get_image_path("classification_input.vip"))
    classification_input_label = imagedev.read_vip_image(imagedev_data.get_image_path("classification_input_label.vip"))
    model_to_train = imagedev.TextureClassificationModel.read(imagedev_data.get_object_path("modelToTrain.vip"))

    texture_classification_train_algo = imagedev.TextureClassificationTrain()
    texture_classification_train_algo.input_image = classification_input
    texture_classification_train_algo.input_training_image = classification_input_label
    texture_classification_train_algo.min_separation_percentage = 5
    texture_classification_train_algo.finalize_training = True
    texture_classification_train_algo.input_output_model = model_to_train
    texture_classification_train_algo.execute()

    print("computeMode: ", str(texture_classification_train_algo.input_output_model.compute_mode()))

    ImageView classification_input = Data.ReadVipImage( @"Data/images/classification_input.vip" );
    ImageView classification_input_label = Data.ReadVipImage( @"Data/images/classification_input_label.vip" );
    TextureClassificationModel modelToTrain = TextureClassificationModel.Read( @"Data/objects/modelToTrain.vip" );

    TextureClassificationTrain textureClassificationTrainAlgo = new TextureClassificationTrain
    {
        inputImage = classification_input,
        inputTrainingImage = classification_input_label,
        minSeparationPercentage = 5,
        finalizeTraining = true,
        inputOutputModel = modelToTrain
    };
    textureClassificationTrainAlgo.Execute();

    Console.WriteLine( "computeMode: " + textureClassificationTrainAlgo.inputOutputModel.computeMode( ) );

## Function Examples

    auto classification_input = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "classification_input.vip" );
    auto classification_input_label = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "classification_input_label.vip" );
    TextureClassificationModel::Ptr modelToTrain= TextureClassificationModel::read( std::string( IMAGEDEVDATA_OBJECTS_FOLDER ) + "modelToTrain.vip" );

    auto result = textureClassificationTrain( classification_input, classification_input_label, 5, true, modelToTrain );

    std::cout << "computeMode: " << result->computeMode( ) ;

    classification_input = imagedev.read_vip_image(imagedev_data.get_image_path("classification_input.vip"))
    classification_input_label = imagedev.read_vip_image(imagedev_data.get_image_path("classification_input_label.vip"))
    model_to_train = imagedev.TextureClassificationModel.read(imagedev_data.get_object_path("modelToTrain.vip"))

    result = imagedev.texture_classification_train(classification_input, classification_input_label, 5, True, model_to_train)

    print("computeMode: ", str(result.compute_mode()))

    ImageView classification_input = Data.ReadVipImage( @"Data/images/classification_input.vip" );
    ImageView classification_input_label = Data.ReadVipImage( @"Data/images/classification_input_label.vip" );
    TextureClassificationModel modelToTrain = TextureClassificationModel.Read( @"Data/objects/modelToTrain.vip" );

    TextureClassificationModel result = Processing.TextureClassificationTrain( classification_input, classification_input_label, 5, true, modelToTrain );

    Console.WriteLine(  "computeMode: " + result.computeMode( )  );

© 2025 Thermo Fisher Scientific Inc. All rights reserved.