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 acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.