public FilterSizeElongationSparcityFloat32(FeatureGeneratorElementNode3DFloat32 generator, float[,] features, float MinSize, float MaxSize, float MinElongation, float MaxElongation, float MinSparcity, float MaxSparcity) { this.filtered_nodes = new HashSet <int>(); for (int node_index = 0; node_index < features.GetLength(0); node_index++) { float size = features[node_index, generator.IndexSize]; float elongation = features[node_index, generator.IndexElongation]; float sparcity = features[node_index, generator.IndexSparceness]; if ((size < MinSize) || (MaxSize < size)) { this.filtered_nodes.Add(node_index); } else if ((elongation < MinElongation) || (MaxElongation < elongation)) { this.filtered_nodes.Add(node_index); } else if ((sparcity < MinSparcity) || (MaxSparcity < sparcity)) { this.filtered_nodes.Add(node_index); } } }
public MaxTreeFloat3DFeaturesFloat(IImageRaster <IRaster3DInteger, float> image, FeatureGeneratorElementNode3DFloat32 generator) : this(image, generator, null) { }
public MaxTreeFloat3DFeaturesFloat(IImageRaster <IRaster3DInteger, float> image, FeatureGeneratorElementNode3DFloat32 generator, IProgressReporter reporter) { this.raster = image.Raster; this.inner_max_tree = new MaxTreeBuilderSingleQueue <float>().BuildMaxTree(image.GetElementValues(false), new ComparerNatural <float>(), new TopologyElementRaster3D6Connectivity(image.Raster), image.Raster.ElementCount); if (generator != null) { this.features = new float[inner_max_tree.NodeCount, generator.FeatureCount]; generator.GenerateFeaturesTree(raster, inner_max_tree.BottomLevelNode, features); } else { this.features = null; } }