I'm trying to implement metropolis light transport based on this paper, and I have the basic thing working. I run the algorithm multiple times with different starting points, add the results for each starting point together and multiply them by a scaling factor to approximate the real image.

The scaling factor is the one described in the paper:

$average\_brightess / average\_samples\_per\_pixel$.

In the resulting image, the starting points are noticeably brighter (they are aligned in a grid below).

resulting image

The paper I was reading doesn't have any advice on avoiding this start up bias. I found this other paper that has advice on this, but I find the paper a little hard to understand.

It says each initial path should be assigned a weight $f(x_0) / p_0(x_0)$.

$f(x_0)$ should be the luminance of the sample at the starting point $x_0$, but is it raw luminance or normalized? $p_0$ is supposed to be a path distribution (possibly sampled by path tracing). How do I get the value of a path distribution at a specified point? Is it the ratio of the point's luminance over the average luminance of the distribution (i.e. average brightness of the image)?

  • $\begingroup$ If I remember correctly, MLT usually starts with a frame from general path tracing (one way, or bi-directional). They use this image to find places with high luminance, and explore more in that area. $\endgroup$ – RichieSams Jun 12 '17 at 13:32
  • $\begingroup$ Oh? I thought it starts randomly, but the probability of moving to a new location favors locations that are brighter. So I do multiple rounds from multiple initial locations to avoid the sampling getting stuck in bright areas. Also, I'm a student in this so I don't know a lot, but I just learned while researching about this that path tracing is not the same as ray tracing. Does that have anything to do with my problem above? Do you know if I can even do MLT using ray tracing? $\endgroup$ – devil0150 Jun 12 '17 at 20:18
  • $\begingroup$ I'm currently trying to implement the path space MLT on my own, but struggle a bit. Are you willing to share your code with me? $\endgroup$ – 0xbadf00d Oct 1 '18 at 14:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.