I'm playing around with volume rendering and looking into multi dimensional transfer functions. I keep seeing images like this for 2d transfer functions: enter image description here

I've read numerous papers and articles but haven't gotten very far because I can't seem to understand how the image on the right is generated from the volume data set. Also what would you call this image? From my understanding the two axis are data values (intensities) on the x and gradient magnitude on the y. But where is the gradient magnitude coming from? I have a basic understanding of gradient magnitude and don't see how it can be used to make that picture. How is it calculated? How can I generate a picture like the one on the right?

  • 2
    $\begingroup$ Can you post any more examples or links to similar stuff? It's not clear to me what the histogram on the right is showing, so it's difficult to say much about it. $\endgroup$ Apr 26, 2017 at 2:42
  • $\begingroup$ From further investigation I believe it's a scatterplot of gradient magnitude and intensity of the 3d texture. (The tooth) Im still having a little trouble visualizing it though. $\endgroup$ Apr 27, 2017 at 3:40
  • 1
    $\begingroup$ Is this paper publicly available? In that case it would be useful if you could provide us with a link to it. $\endgroup$
    – wip
    May 9, 2017 at 14:10

1 Answer 1


Revisiting this question from awhile ago. It turns out this sort of histogram is created by iterating through every pixel value in both the normal image and gradient magnitude image plotting it in the 2d image. (x intensity, y gradient magnitude). The count/occurrences of the 2d histogram are represented by the intensity of the grayscale in figure b. So the brighter a pixel in figure b is, the more pixels with that (intensity, gradient magnitude).

For volume rendering this is called a 2d transfer function which lets users filter out or assign lower opacities to pixels with large/small gradient magnitudes. This is especially helpful in real time volume rendering with lighting. Real time volume rendering typically uses a BSDF at every point along a ray march as an approximation (Assuming that light reaches every point in the volume). IE: Dot product of the incoming light direction with the gradient as the normal. Using the gradient as the normal means that homogeneous areas are not well represented as they have low gradient magnitudes. Small noise in these areas can easily cause the gradient and normal to flip.


Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.