Local Weighted Regression Filter
Filter
RIF_IMAGE_FILTER_LWR_DENOISE
Description
This denoiser filter can be used when a large number of auxiliary data is known. The filter builds a linear regression model for color (out = A*in + B*depth + C*normal + D*position + E*transmission + F) dependence. The filter solves the least-squares regression for colors linear approximation in the small (local) window to obtain coefficients and reconstruct colors. To eliminate blurring of boundaries, bandwidth estimation and bias (F) used.
Parameters
Parameter |
Type |
Input/Output |
Description |
---|---|---|---|
vColorImg |
image |
input |
The image containing input color temporal variance (see Temporal Accumulation Filter). Temporal variance is used to adjust the bandwidth. |
transImg |
image |
input |
Transition color image. Corresponds to the colors of the objects (textures) without the shading effects or the color of primary rays when ray-tracing is used for rendering. Used to construct a linear regression model of the output color. The parameter is optional. If used, can improve regression model and filtering result. |
vTransImg |
image |
input |
The image containing transition colors temporal variance (see Temporal Accumulation Filter). Temporal variance is used to adjust the bandwidth. |
normalsImg |
image |
input |
The image containing normal vectors. Used to construct a linear regression model of the output color. The parameter is optional. If used, can improve regression model and filtering result. |
vNormalsImg |
image |
input |
The image containing normal vector temporal variance (see Temporal Accumulation Filter). Temporal variance is used to adjust the bandwidth. |
depthImg |
image |
input |
The image containing depth value. Used to construct a linear regression model of the output color. The parameter is optional. If used, can improve regression model and reduce the output noise. |
vDepthImg |
image |
input |
The image containing depth temporal variance (see Temporal Accumulation Filter). Temporal variance is used to adjust the bandwidth. |
samples |
uint |
input |
The number of samples per pixel used for image rendering. |
halfWindow |
uint |
input |
Size of the region for which a regression model is solved. |
bandwidth |
float |
input |
Bandwidth of the filter. A smaller value provides less noise in the output image, but may result in loss of image details. |
Usage Example
rif_image_filter filter = nullptr;
rifContextCreateImageFilter(context, RIF_IMAGE_FILTER_LWR_DENOISE, &filter);
rifImageFilterSetParameterImage(filter, "vColorImg", vColorImage);
rifImageFilterSetParameterImage(filter, "transImg", transitionImage);
rifImageFilterSetParameterImage(filter, "vTransImg", vTransitionImage);
rifImageFilterSetParameterImage(filter, "normalsImg", normalsImage);
rifImageFilterSetParameterImage(filter, "vNormalsImg", vNormalsImage);
rifImageFilterSetParameterImage(filter, "depthImg", depthImage);
rifImageFilterSetParameterImage(filter, "vDepthImg", vDepthImage);
rifImageFilterSetParameter1f(filter, "bandwidth", 1);
rifImageFilterSetParameter1u(filter, "halfWindow", 5);
rifImageFilterSetParameter1u(filter, "samples", 16);
rifCommandQueueAttachImageFilter(queue, filter, inputImage, outputImage);
rifContextExecuteCommandQueue(context, queue, nullptr, nullptr, nullptr);