GaussianGradientTensor2d
Computes a pointwise structure tensor on a two-dimensional image.
Access to parameter description
This algorithm computes the local structure tensor $\begin{pmatrix} I_x.I_x & I_x.I_y\\ I_x.I_y & I_y.I_y \end{pmatrix} = \begin{pmatrix} I_x\\ I_y\end{pmatrix} \cdot \begin{pmatrix} I_x & I_y\end{pmatrix}$ by convolving the input image with the square first order derivatives of a Gaussian kernel.
Each element of the structure tensor represents a product of two partial derivatives
For instance, $I_x.I_x = \frac{\partial I}{\partial x}\cdot\frac{\partial I}{\partial x}$, $I_x.I_y = \frac{\partial I}{\partial x}\cdot\frac{\partial I}{\partial y}$.
The partial derivatives are computed as explained in the GaussianDerivative2d documentation.
This filter provides a spectral image output where each channel represents a tensor element; for instance, a product of two partial derivatives, set in the following order: $I_x.I_x$, $I_x.I_y$, $I_y.I_y$.
To extract the eigenvalues or vectors of the tensor image the EigenDecomposition2d can be applied on this output image.
See also
Access to parameter description
This algorithm computes the local structure tensor $\begin{pmatrix} I_x.I_x & I_x.I_y\\ I_x.I_y & I_y.I_y \end{pmatrix} = \begin{pmatrix} I_x\\ I_y\end{pmatrix} \cdot \begin{pmatrix} I_x & I_y\end{pmatrix}$ by convolving the input image with the square first order derivatives of a Gaussian kernel.
Each element of the structure tensor represents a product of two partial derivatives
For instance, $I_x.I_x = \frac{\partial I}{\partial x}\cdot\frac{\partial I}{\partial x}$, $I_x.I_y = \frac{\partial I}{\partial x}\cdot\frac{\partial I}{\partial y}$.
The partial derivatives are computed as explained in the GaussianDerivative2d documentation.
This filter provides a spectral image output where each channel represents a tensor element; for instance, a product of two partial derivatives, set in the following order: $I_x.I_x$, $I_x.I_y$, $I_y.I_y$.
To extract the eigenvalues or vectors of the tensor image the EigenDecomposition2d can be applied on this output image.
See also
Function Syntax
This function returns outputTensorImage.
// Function prototype
std::shared_ptr< iolink::ImageView > gaussianGradientTensor2d( std::shared_ptr< iolink::ImageView > inputImage, iolink::Vector2d standardDeviation, std::shared_ptr< iolink::ImageView > outputTensorImage = NULL );
This function returns outputTensorImage.
// Function prototype. gaussian_gradient_tensor_2d( input_image, standard_deviation = [1, 1], output_tensor_image = None )
This function returns outputTensorImage.
// Function prototype. public static IOLink.ImageView GaussianGradientTensor2d( IOLink.ImageView inputImage, double[] standardDeviation = null, IOLink.ImageView outputTensorImage = null );
Class Syntax
Parameters
Class Name | GaussianGradientTensor2d |
---|
Parameter Name | Description | Type | Supported Values | Default Value | |
---|---|---|---|---|---|
inputImage |
The input image. The image type can be integer or float. | Image | Binary, Label or Grayscale | nullptr | |
standardDeviation |
The sigma value of the Gaussian filter for each direction X and Y. Each value must be greater than or equal to 0.1. | Vector2d | >=0.1 | {1.f, 1.f} | |
outputTensorImage |
The output image. Its spatial dimensions, calibration and interpretation are forced to the same values as the input image. Its type is forced to float. | Image | nullptr |
Object Examples
std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" ); GaussianGradientTensor2d gaussianGradientTensor2dAlgo; gaussianGradientTensor2dAlgo.setInputImage( polystyrene ); gaussianGradientTensor2dAlgo.setStandardDeviation( {1, 1} ); gaussianGradientTensor2dAlgo.execute(); std::cout << "outputTensorImage:" << gaussianGradientTensor2dAlgo.outputTensorImage()->toString();
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif")) gaussian_gradient_tensor_2d_algo = imagedev.GaussianGradientTensor2d() gaussian_gradient_tensor_2d_algo.input_image = polystyrene gaussian_gradient_tensor_2d_algo.standard_deviation = [1, 1] gaussian_gradient_tensor_2d_algo.execute() print( "output_tensor_image:", str( gaussian_gradient_tensor_2d_algo.output_tensor_image ) )
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" ); GaussianGradientTensor2d gaussianGradientTensor2dAlgo = new GaussianGradientTensor2d { inputImage = polystyrene, standardDeviation = new double[]{1, 1} }; gaussianGradientTensor2dAlgo.Execute(); Console.WriteLine( "outputTensorImage:" + gaussianGradientTensor2dAlgo.outputTensorImage.ToString() );
Function Examples
std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" ); auto result = gaussianGradientTensor2d( polystyrene, {1, 1} ); std::cout << "outputTensorImage:" << result->toString();
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif")) result = imagedev.gaussian_gradient_tensor_2d( polystyrene, [1, 1] ) print( "output_tensor_image:", str( result ) )
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" ); IOLink.ImageView result = Processing.GaussianGradientTensor2d( polystyrene, new double[]{1, 1} ); Console.WriteLine( "outputTensorImage:" + result.ToString() );