So I'm in Java and I just realized that GetScalarPointer() isn't mapped to Java. Is there an alternative?<br><br><div class="gmail_quote">On Fri, Jan 28, 2011 at 7:11 PM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Fri, Jan 28, 2011 at 7:45 PM, Jonathan Morra <span dir="ltr"><<a href="mailto:jonmorra@gmail.com" target="_blank">jonmorra@gmail.com</a>></span> wrote:<br>
</div><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I have a binary vtkImageData that a user can modify through some tools I provide them. However, the user has requested an undo stack be made so they can go back through their changes. In my case, storing a new binary vtkImageData every time the user changes it costs too much memory (these are large 3D volume sets). Is there a way to store a difference between two binary vtkImageData's? Ideally I'd like to have just one vtkImageData which is the current image and then a stack of vtkImageDifferences (I made that class up) which are themselves small, but say how to go to either the next or previous state of a binary vtkImageData.<div>
<br></div><div>Does such a method exist?</div></blockquote><div><br></div></div><div>No, but it shouldn't be too hard to do this. You can get a pointer to the data by calling GetScalarPointer() on the image data. The size of this data (in bytes) will be product of the Dimensions, the NumberOfScalarComponents, and the ScalarSize.</div>
<div><br></div><div>So, you should easily be able to compute a bytewise difference between two images. There's no reason to write a new filter for this, since it's just a simple for() loop. Then, you can use vtkDataCompressor::Compress() to compress the diff so that it can be efficiently stored. By doing everything bytewise, you don't have to worry about different datatypes, and you shouldn't lose anything in terms of efficiency.</div>
<div><br></div><div>If the image changes in size, then you could store a compressed copy of the full image rather than dealing with the difficulty of diffing images of different sizes.</div><div><br></div><div>I hope this helps.</div>
<div><br></div><div> - David</div><div><br></div></div>
</blockquote></div><br>