Generalised Kuwahara filter
#include "dip_filtering.h"
dip_Error dip_GeneralisedKuwahara ( in, selection, out, se, boundary, param, shape, minimum )
binary, integer, float
This function is a generalisation of the Kuwahara filter in the sense that is does not use the variance criterion to select the smoothed value, but instead accepts an image with the selection values. The algorithm finds, for every pixel, the minimum or maximum (as specified with minimum) value of selection within the filter window (its size specified by param), and outputs the corresponding value in in. When in is the output of Uniform, and selection is the output of VarianceFilter, this function produces the same result as Kuwahara.
Only the rectangular, elliptic and diamond filter shapes are supported (DIP_FLT_SHAPE_RECTANGULAR, DIP_FLT_SHAPE_ELLIPTIC and DIP_FLT_SHAPE_DIAMOND). Other filter shapes can be implemented by setting shape to DIP_FLT_SHAPE_STRUCTURING_ELEMENT, and passing a binary image in se. The "on" pixels define the shape of the filter window. Other values of shape are illegal.
If shape is not equal to DIP_FLT_SHAPE_STRUCTURING_ELEMENT, se can be set to zero. When shape is set to DIP_FLT_SHAPE_STRUCTURING_ELEMENT, param is ignored, and can be set to zero.
Data type | Name | Description |
dip_Image | in | Input |
dip_Image | selection | Selection |
dip_Image | out | Output |
dip_Image | se | Custom filter window (binary) |
dip_BoundaryArray | boundary | Boundary conditions |
dip_FloatArray | param | Filter sizes |
dip_FilterShape | shape | Filter shape |
dip_Boolean | minimum | Select minimum or maximum? |
The enumerator dip_FilterShape contains the following constants:
Name | Description |
DIP_FLT_SHAPE_DEFAULT | Default filter window, same as DIP_FLT_SHAPE_RECTANGULAR |
DIP_FLT_SHAPE_RECTANGULAR | Rectangular filter window, can be even in size |
DIP_FLT_SHAPE_ELLIPTIC | Elliptic filter window, always odd in size |
DIP_FLT_SHAPE_DIAMOND | Diamond-shaped filter window, always odd in size |
DIP_FLT_SHAPE_PARABOLIC | Parabolic filter window (morphology only) |
DIP_FLT_SHAPE_DISCRETE_LINE | Rotated line structuring element (morphology only) |
DIP_FLT_SHAPE_INTERPOLATED_LINE | Rotated line structuring element, through interpolation (morphology only) |
DIP_FLT_SHAPE_PERIODIC_LINE | (not implemented) |
DIP_FLT_SHAPE_STRUCTURING_ELEMENT | Use se as filter window, can be any size |
Kuwahara, KuwaharaImproved, GeneralisedKuwaharaImproved, VarianceFilter, Uniform