This page provides user documentation for the filter functions of the CIP package

One can found additional information on the function parameters (type, optional/required, positional/named) on the parameters documentation page.

To access another category of CIP functions: Format, Filter, Math, Segment, Assess, Experimental.

**gauss**

**Description**

gauss creates a gaussian blurred image. it convolves the image with a gaussian weighted window. Gaussian blurring is commonly used for image denoising as it smoothes out small details.

**Signature**

`outputImage = cip.gauss( inputImage* , radius* , boundary , pixelSize)`

**Input**

**inputImage*** : the image to process

**radius*** : a scalar or list of scalar representing the standard deviation of the gaussian kernel standard deviation along the image axis

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘zero’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image. it always as the same size as the input image.

**Example**

`img2 = cip.gauss( img1 , 5 )`

**Implementation**

CIP gauss implementation wraps the gauss ops, itself relying on the imglib2 gauss3 implementation.

**erode**

**Description**

Erosion shrinks the region in an image by a certain radius. It works both with binary and graylevel images. This effect is obtained by replacing each pixel value by the minimum value found in a window surrounding that pixel.

**Signature**

`outputImage = cip.erode( inputImage*, radius*, shape, boundary, pixelSize)`

**Input**

**inputImage*** : the image process

**radius*** : a integer or list of integer representing the half size of the filter window along the image axis.

**shape** : a string in {‘__rectangle__’, ‘disk’} describing the shape of the window used for the processing.

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.erode( img1 , 2 )`

**Implementation**

CIP function wraps the imglib2 Erosion class from the morphology package.

**dilate**

**Description**

this filter dilate the region in an image by a certain radius. It works both with binary and graylevel images. This effect is obtained by replacing each pixel value by the maximum value found in a window surrounding that pixel.

**Signature**

`outputImage = cip.dilate( inputImage* , radius*, shape, boundary, pixelSize)`

**Input**

**inputImage*** : the image process

**radius*** : a integer or list of integer representing the half size of the filter window along the image axis.

**shape** : a string in {‘__rectangle__’, ‘disk’} describing the shape of the window used for the processing.

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.dilate( img1 , 2 )`

**Implementation**

CIP function wraps the imglib2 Dilation class from the morphology package.

**opening**

**Description**

This filter performs an erosion followed by a dilation. It erases small and thin objects.

**Signature**

`outputImage = cip.opening( inputImage* , radius* , shape, boundary, pixelSize)`

**Input**

**inputImage*** : the image process

**radius*** : a integer or list of integer representing the half size of the filter window along the image axis.

**shape** : a string in {‘__rectangle__’, ‘disk’} describing the shape of the window used for the processing.

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.opening( img1 , 5 )`

**Implementation**

CIP function wraps the imglib2 Opening class from the morphology package.

**closing**

**Description**

This filter performs a dilation followed by an erosion. It closes small holes and thin gaps between or inside objects.

**Signature**

`outputImage = cip.closing( inputImage* , radius* , shape, boundary, pixelSize)`

**Input**

**inputImage*** : the image process

**radius*** : a integer or list of integer representing the half size of the filter window along the image axis.

**shape** : a string in {‘__rectangle__’, ‘disk’} describing the shape of the window used for the processing.

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.closing( img1 , 16, 'disk' )`

**Implementation**

The implementation successively applies CIP erosion and dilation functions.

**tophat**

**Description**

This filter subtract an opening of the input image to the input image. It removes object larger than the user selected radius in image while keeping smaller scale details.

**Signature**

`outputImage = cip.closing(inputImage*, radius*, shape, boundary, pixelSize)`

**Input**

**inputImage*** : the image process

**radius*** : a integer or list of integer representing the half size of the filter window along the image axis.

**shape** : a string in {‘__rectangle__’, ‘disk’} describing the shape of the window used for the processing.

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.tophat( img1 , 5, 'disk' )`

**Implementation**

The function relies on ops for subtraction and CIP for the opening.

**distance**

**Description**

this function create an image where each pixel value correspond between the distance of that pixel to the closest background object in the input image

**Signature**

`outputImage = cip.distance(inputImage*, threshold, pixelSize)`

**Input**

**inputImage*** : the image process

**threshold** : if the input image is not binary that value can be used to threshold the image. if the input image is binary that value is ignored

**pixelSize** : a scalar or a list of scalar representing pixel size along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.distance( img1 , 500 )`

or `img2 = cip.distance( img1 , 'threshold', 500 )`

`img2 = cip.distance( img1 )`

will build the distance map for a binary image.

**Implementation**

The function relies on ops distance function implementation.

**median**

**Description**

This filter is used to denoise image. It is well suited to remove impulse noise.Compare to the gaussian filter it preserve edges better but has higher computationnal cost. Its basic principle is to replace a pixel value with the median value in a window surrounding that pixel.

**Signature**

`outputImage = cip.median(inputImage*, radius*, shape, boundary, pixelSize)`

**Input**

**inputImage*** : the image process

**radius*** : a integer or list of integer representing the half size of the filter window along the image axis.

**shape** : a string in {‘__rectangle__’, ‘disk’} describing the shape of the window used for the processing.

**boundary** : a string in {‘min’, ‘max’, ‘same’, ‘__mirror__’, ‘periodic’}, default is mirror

**pixelSize** : a scalar or list of scalar along image dimension. Default is 1.

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.median( img1 , 5 )`

**Implementation**

The function relies on ops that implement a brute force approach of the median filtering. It would be possible to implement more efficient approach using histogram and cord decomposition such ImageJ1 implementation for 2D image.

**invert**

**Description**

This function invert the gray value of the input image such that each pixel value I is replaced by max+min-I , where are min (resp max) are the minimum (resp maximum) intensity in the input image.

**Signature**

`outputImage = cip.invert(inputImage*)`

**Input**

**inputImage*** : the image to process

**Output**

**outputImage**: the processed image.

**Example**

`img2 = cip.invert( img1 )`

**Implementation**

The function implementation uses ops map function