InertiaMoment2d
            Measures the resistance of an object, defined by a two-dimensional binary image, to changes in its motion around a given axis of rotation.
Access to parameter description
For an introduction:
The moment of inertia of an object on a given axis describes how difficult it is to change its angular motion around this axis.
        
For a point mass $m$, the moment of inertia $I$ is simply $m$ times the square perpendicular distance $r$ from the axis of rotation: $$ I = mr^2 $$ On a digital image, a pixel intensity can be considered as a mass.
Then, for an object of a binary image, $m$ is a constant equal to 1. Thus, the moment of inertia is the sum of the square perpendicular distances from the axis: $$ I = \sum_r r^2 = \sum_x(x-p(x))^2 $$ where:
        
See also
		Access to parameter description
For an introduction:
- section Image Analysis
 - section Moment And Orientation
 
The moment of inertia of an object on a given axis describes how difficult it is to change its angular motion around this axis.
For a point mass $m$, the moment of inertia $I$ is simply $m$ times the square perpendicular distance $r$ from the axis of rotation: $$ I = mr^2 $$ On a digital image, a pixel intensity can be considered as a mass.
Then, for an object of a binary image, $m$ is a constant equal to 1. Thus, the moment of inertia is the sum of the square perpendicular distances from the axis: $$ I = \sum_r r^2 = \sum_x(x-p(x))^2 $$ where:
- $x$ is an object pixel
 - $p(x)$ is the orthogonal projection of $x$ onto the axis of rotation.
 
See also
Function Syntax
This function returns the outputMeasurement output parameter.
                        
                    
// Function prototype.
MeanInertiaMomentMsr::Ptr
inertiaMoment2d( std::shared_ptr< iolink::ImageView > inputBinaryImage,
                 int32_t rotationCenterX,
                 int32_t rotationCenterY,
                 double rotationAngle,
                 MeanInertiaMomentMsr::Ptr outputMeasurement = NULL );
                    
This function returns the outputMeasurement output parameter.
                        
                    
// Function prototype.
inertia_moment_2d( input_binary_image,
                   rotation_center_x = 1024,
                   rotation_center_y = 1024,
                   rotation_angle = 10,
                   output_measurement = None )
                    
This function returns the outputMeasurement output parameter.
                        
                
// Function prototype.
public static MeanInertiaMomentMsr
InertiaMoment2d( IOLink.ImageView inputBinaryImage,
                 Int32 rotationCenterX = 1024,
                 Int32 rotationCenterY = 1024,
                 double rotationAngle = 10,
                 MeanInertiaMomentMsr outputMeasurement = null );
                    Class Syntax
Parameters
| Class Name | InertiaMoment2d | 
|---|
| Parameter Name | Description | Type | Supported Values | Default Value | |
|---|---|---|---|---|---|
![]()  | 
  inputBinaryImage    | 
 The input binary image. | Image | Binary | nullptr | 
![]()  | 
  rotationCenterX    | 
 The X pixel coordinate of the rotation axis. | Int32 | >=1 | 1024 | 
![]()  | 
  rotationCenterY    | 
 The Y pixel coordinate of the rotation axis. | Int32 | >=1 | 1024 | 
![]()  | 
  rotationAngle    | 
 The orientation of the rotation axis in degrees. A positive value means that the angle is taken from the positive X axis to the positive Y axis. | Float64 | Any value | 10 | 
![]()  | 
  outputMeasurement    | 
 The output measurement result. | MeanInertiaMomentMsr | nullptr | |
Object Examples
auto polystyrene_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep.vip" ); InertiaMoment2d inertiaMoment2dAlgo; inertiaMoment2dAlgo.setInputBinaryImage( polystyrene_sep ); inertiaMoment2dAlgo.setRotationCenterX( 1024 ); inertiaMoment2dAlgo.setRotationCenterY( 1024 ); inertiaMoment2dAlgo.setRotationAngle( 10 ); inertiaMoment2dAlgo.execute(); std::cout << "meanMoment: " << inertiaMoment2dAlgo.outputMeasurement()->meanMoment( 0 ) ;
polystyrene_sep = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep.vip"))
inertia_moment_2d_algo = imagedev.InertiaMoment2d()
inertia_moment_2d_algo.input_binary_image = polystyrene_sep
inertia_moment_2d_algo.rotation_center_x = 1024
inertia_moment_2d_algo.rotation_center_y = 1024
inertia_moment_2d_algo.rotation_angle = 10
inertia_moment_2d_algo.execute()
print( 
print("meanMoment: ", inertia_moment_2d_algo.output_measurement.mean_moment( 0 ) ) );
            
ImageView polystyrene_sep = Data.ReadVipImage( @"Data/images/polystyrene_sep.vip" );
InertiaMoment2d inertiaMoment2dAlgo = new InertiaMoment2d
{
    inputBinaryImage = polystyrene_sep,
    rotationCenterX = 1024,
    rotationCenterY = 1024,
    rotationAngle = 10
};
inertiaMoment2dAlgo.Execute();
Console.WriteLine( "meanMoment: " + inertiaMoment2dAlgo.outputMeasurement.meanMoment( 0 ) );
            Function Examples
auto polystyrene_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep.vip" ); auto result = inertiaMoment2d( polystyrene_sep, 1024, 1024, 10 ); std::cout << "meanMoment: " << result->meanMoment( 0 ) ;
polystyrene_sep = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep.vip"))
result = imagedev.inertia_moment_2d( polystyrene_sep, 1024, 1024, 10 )
print( "meanMoment: ", result.mean_moment( 0 ) );
            ImageView polystyrene_sep = Data.ReadVipImage( @"Data/images/polystyrene_sep.vip" ); MeanInertiaMomentMsr result = Processing.InertiaMoment2d( polystyrene_sep, 1024, 1024, 10 ); Console.WriteLine( "meanMoment: " + result.meanMoment( 0 ) );

