See the technical documentation for SE for a decision on noise reduction,
This test scenario:
The paper mentions the main filtering methods in 3, and the last method has three ways
Conventional geometry-aware? Ltering,distribution-aware filtering,specular lobe-aware Filtering and Upsampling
According to the formula to do some of their own noise removal method does not know whether it is correct, although the effect = =;
Blogger's Steps:
1. Find noise (including noise and details on the map)
2. Calculate the interference of Specular,diffuse
3. Here are a number of methods: A. Use a different pixel instead of noise B. Sampling around the average (which causes ambiguity) ....
conventional geometry-aware? lteringbased on the most basic Gaussian filtering,
This method needs to calculate the depth depth and normal, which can be obtained by obtaining _cameradepthtexture and _cameranormalstexture, in detail, click
W is equivalent to judging the correctness of the filter, because the edges of the object may be mistaken for noise, resulting in rough or blurred edges.
W Weight formula
float wk = Gaussian (getdepth (i_)-Getdepth (j), _sigma_z);
Si is the location of the screen space point in pixel I
G is a Gaussian function
σ is the standard deviation of the Gaussian distribution
Inlinefloat Gaussian (float x, float y) {return _a * exp (((Pow (((() (((() ((() ((() ((() (((X-_x0), 2)/(2 * _sigma_x *_sigma_x)) + ((Pow ((Y-_y0) , 2))/(2 * _sigma_y *_sigma_y)));}
calculate the W result graph
The edges are clearly visible because they are judged by depth and normal, so there is no noise, and the details of diffuse are included, through w we can reduce the noise on the edge
The sample then compares the grayscale, and if the current point is too different from the sample point to be noise, the more sampling points are accurate, but there are limits.
The effect of W can be clearly found
The results are as follows (images can be viewed in larger view)
Enlarge results
Distribution-aware FilteringNoise detection and sharpening for easy identification of noise
T2 for Custom parameters
CI for smooth distribution
The B function is any smoothing kernel
Like what:
Gaussian filter Gaussian? ltering
anisotropic filtering anisotropic? ltering
Total variational minimization Variation minimization
Adjacent filter neighborhood? ltering
Nl-means algorithm
Wait a minute
Here bloggers use Gaussian filtering
W results as follows
The result is not open noise, but this method of W is contains noise, so can not use W to determine cut off,
Here the W is its first function, that is, to determine the noise, but the method of the input parameter β, can be adjusted to the high light portion and the shadow portion of the filtering degree (can be seen in the figure of the parameter specular is completely black, when the highlights are not filtered, the difference between the sampling points is 0), So this method does not require cut off
The results are as follows
compared to the previous method of image details (see Lena) Fidelity, high-gloss and other details lost almost 0
Implementing results in SE documents
specular Lobe-aware Filtering and upsamplingto improve the correctness of the filter, coupled with the determination of the highlight, eliminating the edge of the highlight of the false judgment
float ai = v * MAX (dot (N, Lightdir), 0);
The results of W are as follows
Added to the high light and dark parts of the judgment, making the high-gloss part of the noise reduction effect is good
The best way to do this in three different ways
The results are as follows
implementing results in SE documents
three methods of effect comparison
Code has been uploaded to GitHub
------by wolf96 http://blog.csdn.net/wolf96
Real-time noise reduction in unity3d game--research and implementation of Square Enix document