RecursiveLaplacian3d
Computes the Laplacian of a three-dimensional image with a recursive algorithm.
Access to parameter description
For an introduction:
To minimize the effect of noise, the RecursiveLaplacian3d module smooths the image while computing the Laplacian by applying a second order derivative of the Deriche smoothing filter which has the three-dimensional form: $$ f(x,y,z)=b^3(\alpha|x|+1)e^{-\alpha|x|}\cdot(\alpha|y|+1)e^{-\alpha|y|}\cdot(\alpha|z|+1) e^{-\alpha|z|}~~where~~b=\frac{\alpha}{4} $$
The smoothing scale parameter determines the smoothing intensity. If the value is large, the noise will be reduced but edges will be less sharp and only the most important edges will appear in the output image.
It is important to select the right coefficient to lower the noise just enough without defocusing the edges.
Reference
R.Deriche. "Using Canny's criteria to derive a recursively implemented optimal edge detector". International Journal of Computer Vision, vol.1, no 2, pp. 167-187, Jun. 1987.
See also
Access to parameter description
For an introduction:
- section Edge Detection
- section Laplacian
- section Images Filters
To minimize the effect of noise, the RecursiveLaplacian3d module smooths the image while computing the Laplacian by applying a second order derivative of the Deriche smoothing filter which has the three-dimensional form: $$ f(x,y,z)=b^3(\alpha|x|+1)e^{-\alpha|x|}\cdot(\alpha|y|+1)e^{-\alpha|y|}\cdot(\alpha|z|+1) e^{-\alpha|z|}~~where~~b=\frac{\alpha}{4} $$
The smoothing scale parameter determines the smoothing intensity. If the value is large, the noise will be reduced but edges will be less sharp and only the most important edges will appear in the output image.
It is important to select the right coefficient to lower the noise just enough without defocusing the edges.
Reference
R.Deriche. "Using Canny's criteria to derive a recursively implemented optimal edge detector". International Journal of Computer Vision, vol.1, no 2, pp. 167-187, Jun. 1987.
See also
Function Syntax
This function returns the outputImage output parameter.
// Function prototype. std::shared_ptr< iolink::ImageView > recursiveLaplacian3d( std::shared_ptr< iolink::ImageView > inputImage, int32_t spreadValue, std::shared_ptr< iolink::ImageView > outputImage = NULL );
This function returns the outputImage output parameter.
// Function prototype. recursive_laplacian_3d( input_image, spread_value = 60, output_image = None )
This function returns the outputImage output parameter.
// Function prototype. public static IOLink.ImageView RecursiveLaplacian3d( IOLink.ImageView inputImage, Int32 spreadValue = 60, IOLink.ImageView outputImage = null );
Class Syntax
Parameters
Class Name | RecursiveLaplacian3d |
---|
Parameter Name | Description | Type | Supported Values | Default Value | |
---|---|---|---|---|---|
inputImage |
The input image. | Image | Binary, Label, Grayscale or Multispectral | nullptr | |
spreadValue |
The smoothing factor defining the gradient sharpness. Its value must be between 0 and 100.
It is inversely proportional to Deriche alpha smoothing factor, in pixels. Low values provide sharp gradient. $SmoothingFactor=\frac{(5.3-\alpha)}{5}\times 100$ |
Int32 | [0, 100] | 60 | |
outputImage |
The output image. | Image | nullptr |
Object Examples
auto foam = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam.vip" ); RecursiveLaplacian3d recursiveLaplacian3dAlgo; recursiveLaplacian3dAlgo.setInputImage( foam ); recursiveLaplacian3dAlgo.setSpreadValue( 60 ); recursiveLaplacian3dAlgo.execute(); std::cout << "outputImage:" << recursiveLaplacian3dAlgo.outputImage()->toString();
foam = imagedev.read_vip_image(imagedev_data.get_image_path("foam.vip")) recursive_laplacian_3d_algo = imagedev.RecursiveLaplacian3d() recursive_laplacian_3d_algo.input_image = foam recursive_laplacian_3d_algo.spread_value = 60 recursive_laplacian_3d_algo.execute() print( "output_image:", str( recursive_laplacian_3d_algo.output_image ) )
ImageView foam = Data.ReadVipImage( @"Data/images/foam.vip" ); RecursiveLaplacian3d recursiveLaplacian3dAlgo = new RecursiveLaplacian3d { inputImage = foam, spreadValue = 60 }; recursiveLaplacian3dAlgo.Execute(); Console.WriteLine( "outputImage:" + recursiveLaplacian3dAlgo.outputImage.ToString() );
Function Examples
auto foam = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam.vip" ); auto result = recursiveLaplacian3d( foam, 60 ); std::cout << "outputImage:" << result->toString();
foam = imagedev.read_vip_image(imagedev_data.get_image_path("foam.vip")) result = imagedev.recursive_laplacian_3d( foam, 60 ) print( "output_image:", str( result ) )
ImageView foam = Data.ReadVipImage( @"Data/images/foam.vip" ); IOLink.ImageView result = Processing.RecursiveLaplacian3d( foam, 60 ); Console.WriteLine( "outputImage:" + result.ToString() );