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:
For this measurement the image calibration is ignored. The coordinates used to calculate the moment of inertia are expressed in pixels.
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.
For this measurement the image calibration is ignored. The coordinates used to calculate the moment of inertia are expressed in pixels.
See also
Function Syntax
This function returns outputMeasurement.
// 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 outputMeasurement.
// 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 outputMeasurement.
// Function prototype. public static MeanInertiaMomentMsr InertiaMoment2d( IOLink.ImageView inputBinaryImage, Int32 rotationCenterX = 1024, Int32 rotationCenterY = 1024, double rotationAngle = 10, MeanInertiaMomentMsr outputMeasurement = null );
Class Syntax
Parameters
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 |
Parameter Name | Description | Type | Supported Values | Default Value | |
---|---|---|---|---|---|
input_binary_image |
The input binary image. | image | Binary | None | |
rotation_center_x |
The X pixel coordinate of the rotation axis. | int32 | >=1 | 1024 | |
rotation_center_y |
The Y pixel coordinate of the rotation axis. | int32 | >=1 | 1024 | |
rotation_angle |
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 | |
output_measurement |
The output measurement result. | MeanInertiaMomentMsr | None |
Parameter Name | Description | Type | Supported Values | Default Value | |
---|---|---|---|---|---|
inputBinaryImage |
The input binary image. | Image | Binary | null | |
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 | null |
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( "meanMoment: ", str( 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: ", str( 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 ) );