ImageDev

TranslateImage2d

Translates a two-dimensional image by a user-defined vector.

Access to parameter description

This algorithm re-assigns the position of the image on the grid according to user-defined vectors. During a translation, there are usually two phenomena: part of the image is out of the bounding box, while another part has no values, as illustrated in Figure 1.

<b>Figure 1.</b> Translation of an image
Figure 1. Translation of an image

A translation is denoted by a vector $(t_x,t_y)$. A pixel M of coordinates (x,y) is translated to the new coordinates in the output image as: $$ \left\{\begin{matrix}x'=t_x+x\\y'=t_y+y\end{matrix}\right. $$ or using matrix notation: $$ \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}t_x\\t_y\end{bmatrix} + \begin{bmatrix}x\\y\end{bmatrix} $$ The output image is a discrete space of finite dimensions where the new X and Y coordinates may be outside the image.

There are two possible ways to manage data out of the bounding box: See also

Function Syntax

This function returns the outputImage output parameter.
// Function prototype.
std::shared_ptr< iolink::ImageView >
translateImage2d( std::shared_ptr< iolink::ImageView > inputImage,
                  iolink::Vector2i32 translationVector,
                  TranslateImage2d::BackgroundMode backgroundMode,
                  double paddingValue,
                  std::shared_ptr< iolink::ImageView > outputImage = NULL );
This function returns the outputImage output parameter.
// Function prototype.
translate_image_2d( input_image,
                    translation_vector = [100, 100],
                    background_mode = TranslateImage2d.BackgroundMode.FIXED,
                    padding_value = 1,
                    output_image = None )
This function returns the outputImage output parameter.
// Function prototype.
public static IOLink.ImageView
TranslateImage2d( IOLink.ImageView inputImage,
                  int[] translationVector = null,
                  TranslateImage2d.BackgroundMode backgroundMode = ImageDev.TranslateImage2d.BackgroundMode.FIXED,
                  double paddingValue = 1,
                  IOLink.ImageView outputImage = null );

Class Syntax

Parameters

Class Name TranslateImage2d

Parameter Name Description Type Supported Values Default Value
input
inputImage
The input image. Image Binary, Label, Grayscale or Multispectral nullptr
input
translationVector
The translation vector, in pixels. Vector2i32 Any value {100, 100}
input
backgroundMode
The mode for managing outside information.
FIXED The information moved outside of the image area is lost, and a padding value is assigned to the blank area counterpart.
LOOPED The image is perceived as a cylinder, where the information outside the image area wraps around and is placed in the blank part.
Enumeration FIXED
input
paddingValue
The background value, used only in fixed background mode. Float64 Any value 1
output
outputImage
The output image. Its dimensions and type are forced to the same values as the input. Image nullptr

Object Examples

std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" );

TranslateImage2d translateImage2dAlgo;
translateImage2dAlgo.setInputImage( polystyrene );
translateImage2dAlgo.setTranslationVector( {100, 100} );
translateImage2dAlgo.setBackgroundMode( TranslateImage2d::BackgroundMode::FIXED );
translateImage2dAlgo.setPaddingValue( 1.0 );
translateImage2dAlgo.execute();

std::cout << "outputImage:" << translateImage2dAlgo.outputImage()->toString();
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif"))

translate_image_2d_algo = imagedev.TranslateImage2d()
translate_image_2d_algo.input_image = polystyrene
translate_image_2d_algo.translation_vector = [100, 100]
translate_image_2d_algo.background_mode = imagedev.TranslateImage2d.FIXED
translate_image_2d_algo.padding_value = 1.0
translate_image_2d_algo.execute()

print( "output_image:", str( translate_image_2d_algo.output_image ) );
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" );

TranslateImage2d translateImage2dAlgo = new TranslateImage2d
{
    inputImage = polystyrene,
    translationVector = new int[]{100, 100},
    backgroundMode = TranslateImage2d.BackgroundMode.FIXED,
    paddingValue = 1.0
};
translateImage2dAlgo.Execute();

Console.WriteLine( "outputImage:" + translateImage2dAlgo.outputImage.ToString() );

Function Examples

std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" );

auto result = translateImage2d( polystyrene, {100, 100}, TranslateImage2d::BackgroundMode::FIXED, 1.0 );

std::cout << "outputImage:" << result->toString();
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif"))

result = imagedev.translate_image_2d( polystyrene, [100, 100], imagedev.TranslateImage2d.FIXED, 1.0 )

print( "output_image:", str( result ) );
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" );

IOLink.ImageView result = Processing.TranslateImage2d( polystyrene, new int[]{100, 100}, TranslateImage2d.BackgroundMode.FIXED, 1.0 );

Console.WriteLine( "outputImage:" + result.ToString() );