ImageDev

GaussianHessianMatrix2d

Computes a pointwise Hessian matrix on a two-dimensional image.

Access to parameter description

This algorithm computes the local Hessian matrix $\begin{pmatrix} I_{xx} & I_{xy}\\ I_{xy} & I_{yy} \end{pmatrix}$ by convolving the input image with the second order derivatives of a Gaussian kernel.

Each element of the Hessian matrix represents a second order partial derivative.
For instance, $I_{xx}=\frac{\partial^2 I}{\partial x^2}$, $I_{xy}=\frac{\partial^2 I} {\partial x \partial y}$.
The matrix elements are computed as explained in the GaussianDerivative2d documentation.

This filter provides a spectral image output where each channel represents a matrix element; for instance, a second order derivative set in the following order $I_{xx}$, $I_{xy}$, $I_{yy}$.
To extract the eigenvalues or vectors of the Hessian image the EigenDecomposition2d can be applied on this output image.

See also

Function Syntax

This function returns the outputTensorImage output parameter.
// Function prototype.
std::shared_ptr< iolink::ImageView >
gaussianHessianMatrix2d( std::shared_ptr< iolink::ImageView > inputImage,
                         iolink::Vector2d standardDeviation,
                         std::shared_ptr< iolink::ImageView > outputTensorImage = NULL );
This function returns the outputTensorImage output parameter.
// Function prototype.
gaussian_hessian_matrix_2d( input_image, standard_deviation = [1, 1], output_tensor_image = None )
This function returns the outputTensorImage output parameter.
// Function prototype.
public static IOLink.ImageView
GaussianHessianMatrix2d( IOLink.ImageView inputImage,
                         double[] standardDeviation = null,
                         IOLink.ImageView outputTensorImage = null );

Class Syntax

Parameters

Class Name GaussianHessianMatrix2d

Parameter Name Description Type Supported Values Default Value
input
inputImage
The input image. Image Binary, Label or Grayscale nullptr
input
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}
output
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" );

GaussianHessianMatrix2d gaussianHessianMatrix2dAlgo;
gaussianHessianMatrix2dAlgo.setInputImage( polystyrene );
gaussianHessianMatrix2dAlgo.setStandardDeviation( {1.0, 1.0} );
gaussianHessianMatrix2dAlgo.execute();

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

gaussian_hessian_matrix_2d_algo = imagedev.GaussianHessianMatrix2d()
gaussian_hessian_matrix_2d_algo.input_image = polystyrene
gaussian_hessian_matrix_2d_algo.standard_deviation = [1.0, 1.0]
gaussian_hessian_matrix_2d_algo.execute()

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

GaussianHessianMatrix2d gaussianHessianMatrix2dAlgo = new GaussianHessianMatrix2d
{
    inputImage = polystyrene,
    standardDeviation = new double[]{1.0, 1.0}
};
gaussianHessianMatrix2dAlgo.Execute();

Console.WriteLine( "outputTensorImage:" + gaussianHessianMatrix2dAlgo.outputTensorImage.ToString() );

Function Examples

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

auto result = gaussianHessianMatrix2d( polystyrene, {1.0, 1.0} );

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

result = imagedev.gaussian_hessian_matrix_2d( polystyrene, [1.0, 1.0] )

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

IOLink.ImageView result = Processing.GaussianHessianMatrix2d( polystyrene, new double[]{1.0, 1.0} );

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