Skip to content

shape_histo_allShapeHistoAllShapeHistoAllshape_histo_allT_shape_histo_all🔗

Short description🔗

shape_histo_allShapeHistoAllShapeHistoAllshape_histo_allT_shape_histo_all — Determine a histogram of features along all threshold values.

Signature🔗

shape_histo_all( region Region, image Image, string Feature, out histogram AbsoluteHisto, out histogram RelativeHisto )void ShapeHistoAll( const HObject& Region, const HObject& Image, const HTuple& Feature, HTuple* AbsoluteHisto, HTuple* RelativeHisto )static void HOperatorSet.ShapeHistoAll( HObject region, HObject image, HTuple feature, out HTuple absoluteHisto, out HTuple relativeHisto )def shape_histo_all( region: HObject, image: HObject, feature: str ) -> Tuple[Sequence[Union[int, float]], Sequence[float]]

Herror T_shape_histo_all( const Hobject Region, const Hobject Image, const Htuple Feature, Htuple* AbsoluteHisto, Htuple* RelativeHisto )

HTuple HRegion::ShapeHistoAll( const HImage& Image, const HString& Feature, HTuple* RelativeHisto ) const

HTuple HRegion::ShapeHistoAll( const HImage& Image, const char* Feature, HTuple* RelativeHisto ) const

HTuple HRegion::ShapeHistoAll( const HImage& Image, const wchar_t* Feature, HTuple* RelativeHisto ) const (Windows only)

HTuple HRegion.ShapeHistoAll( HImage image, string feature, out HTuple relativeHisto )

Description🔗

The operator shape_histo_allShapeHistoAll carries out 255 threshold operations within Regionregionregion with the gray values of Imageimageimage. The entry \(i\) in the histogram corresponds to the number of connected components/holes of this image segmented with the threshold \(i\) (Featurefeaturefeature = 'connected_components'"connected_components", 'holes'"holes") or the mean value of the feature values of the regions segmented in this way (Featurefeaturefeature = 'convexity'"convexity", 'compactness'"compactness", 'anisometry'"anisometry"), respectively.

Attention🔗

The operator shape_histo_allShapeHistoAll expects a region and exactly one gray value image as input. Because of the power of this operator the runtime of shape_histo_allShapeHistoAll is relatively large!

Note that the operator shape_histo_allShapeHistoAll only considers the given Regionregionregion and ignores any previously set domain of the input image Imageimageimage.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

Parameters🔗

Regionregionregion (input_object) region → objectHObjectHRegionHObjectHobject

Region in which the features are to be examined.

Imageimageimage (input_object) singlechannelimage → object (byte)HObject (byte)HImage (byte)HObject (byte)Hobject (byte)

Gray value image.

Featurefeaturefeature (input_control) string → (string)HTuple (HString)HTuple (string)strHtuple (char*)

Feature to be examined.

Default: 'connected_components'"connected_components"
List of values: 'anisometry', 'compactness', 'connected_components', 'convexity', 'holes'"anisometry", "compactness", "connected_components", "convexity", "holes"

AbsoluteHistoabsoluteHistoabsolute_histo (output_control) histogram-array → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Sequence[Union[int, float]]Htuple (double / Hlong)

Absolute distribution of the feature.

RelativeHistorelativeHistorelative_histo (output_control) histogram-array → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Relative distribution of the feature.

Example🔗

(HDevelop)

* Simulation of shape_histo_all with feature 'connected_components':
* my_shape_histo_all(Region,Image,AbsHisto,RelHisto):
reduce_domain(Region,Image,RegionGray)
for i := 0 to 255 by 1
    threshold(RegionGray,Seg,i,255)
    connect_and_holes (Seg, NumConnected, _)
    AbsHisto[i] := NumConnected
endfor
Sum := 0
for i := 0 to 255 by 1
    Sum := Sum+AbsHisto[i]
endfor
for i := 0 to 255 by 1
    RelHisto[i] := AbsHisto[i]/Sum
endfor
(C)
/* Simulation of shape_histo_all with feature 'connected_components': */
my_shape_histo_all(Hobject Region,Hobject Image,
                 Hlong AbsHisto[], double RelHisto[])
{
  Hlong     i,sum\;
  Hobject  RegionGray,Seg\;
 reduce_domain(Region,Image,&RegionGray)\;
  for (i=0\; i<256\; i++) {
    threshold(RegionGray,&Seg,(double)i,255.0)\;
    connect_and_holes(Seg,&AbsHisto[i],NULL)\;
  }
  for (i=0\; i<256\; i++)
    sum += AbsHisto[i]\;
  for (i=0\; i<256\; i++)
    RelHist[i] = (double)AbsHisto[i]/Sum\;
}

Complexity🔗

If \(F\) is the area of the input region and \(N\) the mean number of connected components the runtime complexity is \(O(255 (F + \sqrt{F} \sqrt{N}))\).

Result🔗

The operator shape_histo_allShapeHistoAll returns the value 2 (H_MSG_TRUE) if an image with the defined gray values is entered. The behavior in case of empty input (no input images) is set via the operator set_system(::'no_object_result',<Result>:), the behavior in case of empty region is set via set_system(::'empty_region_result',<Result>:). If necessary an exception is raised.

Combinations with other operators🔗

Combinations

Possible successors

histo_to_threshHistoToThresh, thresholdThreshold, gen_region_histoGenRegionHisto

Alternatives

shape_histo_pointShapeHistoPoint

See also

compactnessCompactness, connectionConnection, connect_and_holesConnectAndHoles, convexityConvexity, count_objCountObj, entropy_grayEntropyGray, gray_histoGrayHisto

Module🔗

Foundation