Render Quality Threshold: Noise Percentage

Started by cjwidd, May 17, 2018, 11:56:50 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

cjwidd

In addition to Maximum Samples and Maximum Time, it would be nice to be able to set a noise threshold to determine render quality and when to terminate the rendering process.

Will Gibbons

Quote from: cjwidd on May 17, 2018, 11:56:50 PM
In addition to Maximum Samples and Maximum Time, it would be nice to be able to set a noise threshold to determine render quality and when to terminate the rendering process.

I'm interested to hear how this would work. What unit of measure do you use to determine 'noise'? As far as I know, this is exactly why samples exist.

SebastianG

I also think a Noise Percentage or Image Quality as a render goal could be very useful!

If Keyshot would be able to calculate the image quality during the rendering, it could focus the cpu power to the areas with low quality!
(I think you can do that by using the material samples, but you can't change them during the rendering process)

Here's an article I found which describes the use of an "Image Quality Calculator":
http://blog.boxx.com/2014/10/02/gpu-rendering-vs-cpu-rendering-a-method-to-compare-render-times-with-empirical-benchmarks/

mattjgerard

There are other render engines that I've used with adaptive noise options, but I believe that most of those were post process noise reductions, not happening during the render.  Samples = image quality in my eyes, unless someone can explain why that's not the case.

SebastianG

Thanks mattjgerard for your reply!

Samples are not equal with quality, in my opinion. I think it depends on the complexity of the scene.

For example:
You can have one scene were you get a high quality image with only 200 samples.
Another scene with a lot of shadows you need like 1000 samples to get a good image.

If samples would be equal with image quality then there would be list of which values you need for bad, good or brilliant quality. I can't remember where but I read a tip once: If the image is too noisy you should double the samples and see if it is enough. If it is still too noisy, double it again.

mattjgerard

I see what you are saying, and I do agree.

I wonder though, how do you quantify "quality" into a number that can be set when quality can be subjective? Is there a numerical measurement that can evaluate a percentage of what someone might consider noise?

SebastianG

QuoteI wonder though, how do you quantify "quality" into a number that can be set when quality can be subjective? Is there a numerical measurement that can evaluate a percentage of what someone might consider noise?

Good question, I thought about it and I have a suggestion how to determine noise for each individual pixel!

So when you start rendering, every pixel is changing its brightness very much in the first 10 samples. These changes get less and less with more and more samples. After a certain amount of rendering time, the pixel seems to have reached its final value and more samples do not change its brightness. Then I would consider the pixel "clean" or "free from noise"!

As a measurement we could tell KeyShot we want 1% noise as a maximum for our Render. During the render process KeyShot logs the brightness of each pixel and compares it to the value of the previous samples. If the brightness change is less than 1% KeyShot stops rendering this pixel as it has reached our goal we set in the beginning. Now KeyShot concentrates the CPU power the remaining pixels until they are less then 1%.

This way the computing power is not wasted rendering already clean pixels which already have reached their final brightness.
Doing this for each pixel individually, it should remain its sharpness so you don't get the blurriness by using denoisers after the rendering is done.

Attached is a mock up graph, visualizing how the brightness of one pixel varies with each sample. What do you think? Is this possible to implement in KeyShot or is this already implemented in the Interior Render Mode?