Re: [update]: artifacts with volume rendering [message #34131 is a reply to message #34130] |
Wed, 26 February 2003 07:23   |
Karl Schultz
Messages: 341 Registered: October 1999
|
Senior Member |
|
|
"Sebastian" <s@visita2.die.upm.es> wrote in message
news:Pine.LNX.4.44.0302261420320.2560-100000@visita2.die.upm .es...
> I wrote a litte program that shows the artefacts. I creates a volume, cuts
> of a cube, and renders a short sequence. The artefacts are clearly
> recognizable on the cutting surfaces.
<snip program>
I think that this is simply caused by sampling error. You are doing
trilinear interpolation, which means that the "empty" (zero) voxels adjacent
to your cut surfaces are going to contribute to the computation of the
"pixel" in the final image. The amount of the contribution of the "zero"
voxel depends on how the ray passes through the voxels along the cutting
edge. And that's why the "aliased" frequency you are seeing in the bands
depends on the rotation angle.
I'm not a wizard in this area, but I know that sampling at twice the
frequency can remove these aliasing problems. I changed your window size to
100x100 and made the volume 200x200x200 and that made the artifacts
disappear or at least become less noticable.
I also think that this exposes a minor flaw with your workaround for lack of
bounded cutting planes. If IDLgrVolume had bounded cutting planes, then the
interpolator wouldn't use the voxels on the other side of the bounded
cutting plane in the interpolation calculation and then you'd probably be
OK. As it stands, the interpolator doesn't know that you don't want the
zero voxels to contribute to the image at all, and so includes them in the
interpolation.
Here's another idea, which I'm sorry that I didn't suggest sooner.
Use two 3D datasets in IDLgrVolume.
The first dataset is your real volume data. The second one is a mask
volume. The voxels are 255 where you want voxels in the first dataset to be
displayed and 0 where you don't. You would set the VOLUME_SELECT property
to 1. This may not help the aliasing problem, but it might be a better way
to cut cubes out of your volume - you wouldn't have to damage your original
data.
Karl
|
|
|