Processing math: 100%
ImageDev

EndPoints3d

Point detector selecting end points of a three-dimensional binary image.

Access to parameter description

For an introduction:
This algorithm is a point detector that selects end points of a skeleton (all object voxels having only one neighbor).
The skeleton is first detected, and then this algorithm performs a hit-or-miss transform (HMT) with the following configuration and its 25 associated rotations: 0000×0000            000010000            000000000 Where × means "don't care".

See also

Function Syntax

This function returns outputBinaryImage.
// Function prototype
std::shared_ptr< iolink::ImageView > endPoints3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, EndPoints3d::BorderCondition borderCondition, EndPoints3d::Neighborhood neighborhood, std::shared_ptr< iolink::ImageView > outputBinaryImage = NULL );

Class Syntax

Parameters

Parameter Name Description Type Supported Values Default Value
input
inputBinaryImage
The binary input image. Image Binary nullptr
input
borderCondition
The way to consider voxels out of image borders.
ZERO Voxels outside of the image are considered as having the value 0.
MIRROR Voxels outside of the image are considered as an extrapolation of the image pixels with a mirror border condition.
Enumeration ZERO
input
neighborhood
The 3D neighborhood configuration.
CONNECTIVITY_6 The structuring element is composed of voxels with a common face with the voxel of interest.
CONNECTIVITY_18 The structuring element is composed of voxels with at least one common edge.
CONNECTIVITY_26 The structuring element is a full cube.
Enumeration CONNECTIVITY_26
output
outputBinaryImage
The binary output image. Its size and type are forced to the same values as the input. Image nullptr

Object Examples

auto foam_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam_sep.vip" );

EndPoints3d endPoints3dAlgo;
endPoints3dAlgo.setInputBinaryImage( foam_sep );
endPoints3dAlgo.setBorderCondition( EndPoints3d::BorderCondition::ZERO );
endPoints3dAlgo.setNeighborhood( EndPoints3d::Neighborhood::CONNECTIVITY_26 );
endPoints3dAlgo.execute();

std::cout << "outputBinaryImage:" << endPoints3dAlgo.outputBinaryImage()->toString();

Function Examples

auto foam_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam_sep.vip" );

auto result = endPoints3d( foam_sep, EndPoints3d::BorderCondition::ZERO, EndPoints3d::Neighborhood::CONNECTIVITY_26 );

std::cout << "outputBinaryImage:" << result->toString();