front-end / back-end: AIMPlanarConvolution
| PlanarConvolution
inherits from: AIMBehaviour
| MoveBehaviour
Planar Convolution applies an one-dimensional filter kernel to one or more objectives. This kind of procedure is well-known from image and signal processing, e.g., for blurring and edge detection. Thus, Planar Convolution can be used in order to smooth out (possibly unwanted) objective value peaks. In order to do so, a Gaussian filter kernel can be applied, but it is also possible to define your own filter kernels manually. This would come in handy if you want another filter kernel, maybe to strengthen certain features instead of smoothing them out.
This component has got the following specific properties.
Property | Description |
---|---|
TargetObjectives | Determines the objectives to be modified by the convolution kernel. |
Kernel | The raw kernel data. It is possible to modify these values or just to use the Compute Gaussian button. Note that due to the nature of filter kernels, the size of the kernel must be at least greater than 2 and an odd number. |
Size | Used in combination with the button Compute Gaussian. Specifies the kernel size of the computed kernel. |
Sigma | Used in combination with the button Compute Gaussian. Specifies the applied Gaussian Sigma . For further reference, see Gaussian filter. |
The following Figure 1 illustrates the effect of an active Planar Convolution behaviour.
Figure 1: At the left, there is an agent which uses Planar Convolution and at the right, there is an agent which does not use Planar Convolution.
This behaviour is considered a processing behaviour (default Order
of 1000). This means that we intend that it is only reasonable to execute this behaviour after at least one SteeringBehaviour
was called, because blurring an empty objective will result in an empty objective. D'oh!
Note that the application of a convolution component becomes more valuable if the objectives are not normalized. In such cases, you possibly want that objective value peaks also influence their neighbours to indicate significant areas within an objective.
Another hint: you should keep in mind the ReceptorCount
of the actual (Planar) Sensor. So a kernel with a size of 3 would not have the same relative impact on a sensor which has got 16 receptors as on a sensor with 256 receptors.