[vtkusers] Rotating image data
David Gobbi
david.gobbi at gmail.com
Fri Jul 9 10:31:10 EDT 2010
I'd better add an errata to what I wrote:
3) Each (x,y,z) point is transformed by the ResliceAxes matrix, and
then the ResliceTransform, in that order.
I had the two operations reversed.
David
On Fri, Jul 9, 2010 at 8:21 AM, David Gobbi <david.gobbi at gmail.com> wrote:
> Really, vtkImageReslice is the only straightforward way to rotate an
> image in VTK. It does change the pixel matrix, the basic job of
> ImageReslice is to resample an image through a transform.
>
> The operation of vtkImageReslice is like so:
> 1) The output Extent/Origin/Spacing of vtkImageReslice define an
> output voxel grid.
> 2) Reslice loops through all output voxels, and computes the (x,y,z)
> data coords for each voxel in turn.
> 3) Each (x,y,z) point is transformed by the ResliceTransform, and then
> the ResliceAxes matrix, in that order.
> 4) The reslice's input data is interpolated at the transformed (x',y',z') point.
> 5) The interpolated value from the input at coordinate (x',y',z') is
> used to set the value of the output voxel at (x,y,z).
>
> Lots of people have trouble with (1). Because vtkImageReslice isn't a
> vtkProp it doesn't know anything about how it's output will be
> displayed, it doesn't know how to properly set its own output voxel
> grid. So you should usually set the output Spacing/Origin/Extent
> manually. If you don't, then vtkImageReslice will try to "guess" what
> a reasonable output grid would be, and it will usually guess wrong,
> because it doesn't know anything about how the image will eventually
> be displayed.
>
> I've had a plan for a long time now to write a vtkProp3D based around
> vtkImageReslice that will do all the mathematical trickery needed to
> make VTK more friendly for 3D image display. In my own image display
> applications, I set up some low-level observers that keep track of the
> camera position and the window size, and then have those observers set
> the vtkImageReslice parameters so that the image displays exactly the
> way that it should.
>
> David
>
>
>
>
> On Fri, Jul 9, 2010 at 7:52 AM, Lic. José M. Rodriguez Bacallao
> <jmrbcu at gmail.com> wrote:
>> this may be a silly question:
>> 1- which is the correct preffered way to rotate(transform) an image,
>> with the camera or with vtkImageReslice?
>> 2- does vtkImageReslice change/transform the pixel matrix?
>>
>>
>> On Fri, Jul 9, 2010 at 7:34 AM, Jothy <jothybasu at gmail.com> wrote:
>>> Some sort of padding befor rotation should help.
>>>
>>> Jothy
>>>
>>> On Fri, Jul 9, 2010 at 12:32 PM, Srinivasa Rao <srinivas at rsageventures.com>
>>> wrote:
>>>>
>>>> Hi All,
>>>> I am trying to rotate vtkImageData using vtkTransform and
>>>> vtkImageReslice, i used following code to do the job.
>>>>
>>>> vtkImageData * rotateImage(vtkImageData *data, QPointF center, int angle)
>>>> {
>>>> vtkTransform *imageTransform = vtkTransform::New();
>>>> imageTransform->PostMultiply();
>>>> imageTransform->Translate(center.x(), center.y(), 0.0);
>>>> imageTransform->RotateZ(angle);
>>>> imageTransform->Translate(-center.x(), -center.y(), 0.0);
>>>> // Now create filter and set previously created transformation
>>>> vtkImageReslice *algo = vtkImageReslice::New();
>>>> algo->SetInput(data);
>>>> algo->SetInformationInput(data);
>>>> algo->SetResliceTransform(imageTransform);
>>>> algo->SetInterpolationModeToLinear();
>>>> algo->Update();
>>>> return algo->GetOutput();
>>>> }
>>>>
>>>> When i try to rotate image data, after rotation the data which is outside
>>>> the image is getting lost.
>>>> Is there a way around to rotate image data without data loss..
>>>> thanks in advance.
>>>> regards,
>>>> srinivas.
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the VTK FAQ at:
>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>>
>>
>>
>>
>> --
>> Lic. José M. Rodriguez Bacallao
>> Centro de Biofisica Medica
>> -----------------------------------------------------------------
>> Todos somos muy ignorantes, lo que ocurre es que no todos ignoramos lo mismo.
>>
>> Recuerda: El arca de Noe fue construida por aficionados, el titanic
>> por profesionales
>> -----------------------------------------------------------------
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>
More information about the vtkusers
mailing list