[vtkusers] Problem rotating vtkImageSlice

David Gobbi david.gobbi at gmail.com
Sun Aug 28 17:41:52 EDT 2016


Okay, let me try to understand this.  Please let me know if I'm wrong on
any of the following points.

1) You have a CT scan, consisting of several slices (I assume around 100
slices) with uniform spacing.

2) You have a single XA image.  An XA is a projection image, in contrast to
CT which is a tomographic image.

3) You need to find the direction-of-projection through the CT volume such
that it matches the XA.

This is generally done by creating a DRR a MIP of the CT.  I'm not sure how
you plan to achieve this by rotating a slice.

 - David

On Sun, Aug 28, 2016 at 3:09 PM, Richard Frank <rickfrank at me.com> wrote:

> I thought I coil rotate the image slice in 3 space as defined here
>
> http://www.vtk.org/doc/nightly/html/classvtkImageSlice.html#details
>
> Rick Frank
>
> On Aug 28, 2016, at 3:42 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>
> Then remind me again why you're using vtkImageResliceMapper instead of
> vtkImageSliceMapper?
>
> On Sun, Aug 28, 2016 at 1:23 PM, Richard Frank <rickfrank at me.com> wrote:
>
>> I'm just trying to rotate the plane in 3 space, not reslicing...
>>
>> Rick Frank
>>
>> On Aug 28, 2016, at 3:16 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>
>> If you only had one input slice, then why would you be surprised that
>> reslicing at 90 degrees gives an output that is only one pixel wide?
>>
>> On Sun, Aug 28, 2016 at 12:53 PM, Richard Frank <rickfrank at me.com> wrote:
>>
>>> Hi
>>>
>>> I'm using the VTK example which creates an in memory single cyan
>>> slice.....
>>>
>>> Thanks
>>>
>>> Rick Frank
>>>
>>> On Aug 28, 2016, at 2:42 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>>
>>> Check the extent of the input image to make sure all of the slices were
>>> loaded.
>>>
>>> On Sun, Aug 28, 2016 at 12:37 PM, Richard Frank <rickfrank at me.com>
>>> wrote:
>>>
>>>> Hi David,
>>>>
>>>> Sorry about the attachment.
>>>>
>>>> Well, I'm pretty far along with my work on this, so I'd like to try the
>>>> vtkPlane orientation as a solution if possible.
>>>>
>>>> using the example code,  If I create a vtkPlane, set its origin to
>>>> 0,0,0 and set its normal to 1 0 0 (instead of 0,0,1) and call
>>>>  imageResliceMapper->SetSlicePlane(plane);
>>>>
>>>> I see a thin line. Seems correct. If I change the interactor style to
>>>> Trackball camera, and rotate the camera around it seems the image is only 1
>>>> unit wide however.
>>>>
>>>> Is there something else I need to do to get the image to map to a plane
>>>> with different orientation?
>>>>
>>>> THanks
>>>> Rick Frank
>>>>
>>>> On Aug 28, 2016, at 12:51 PM, David Gobbi <david.gobbi at gmail.com>
>>>> wrote:
>>>>
>>>> Hi Frank,
>>>>
>>>> It looks like you are doing a data transformation when you should be
>>>> doing a view transformation.  Don't rotate the actor if your goal is to
>>>> rotate the view.  When you rotate the actor, you are changing the
>>>> relationship between data coordinates and world coordinates.
>>>>
>>>> If you want a sagittal view, then you can rotate the view by moving the
>>>> VTK camera.  The mapper has a method SliceFacesCameraOn() that can be used
>>>> to make the mapper automatically extract a slice in the correct orientation.
>>>>
>>>> Also, please limit the width of inlined images to around 1000 pixels or
>>>> less.  Large inlined images make your email hard to read on my system (I
>>>> wish that gmail would auto-shrink oversized inlined images, but
>>>> unfortunately it displays them full-size, even if they're several times the
>>>> size of the display).
>>>>
>>>>  - David
>>>>
>>>> On Sun, Aug 28, 2016 at 9:56 AM, Richard Frank <rickfrank at me.com>
>>>> wrote:
>>>>
>>>>> Hi David,
>>>>>
>>>>> Thanks for the reply. I'm still a bit confused about what I've tried
>>>>> and why it doesn't work....
>>>>>
>>>>> So, I have 3 slice views and in the screenshot the Axial View is lined
>>>>> up appropriately (image position patient is in the correct place, and each
>>>>> slice is in correct place etc) with the world coordinates by using the
>>>>> image reslice axis and camera etc to align the DICOM coordinates and the
>>>>> VTK World coordinates.
>>>>>
>>>>> I now want to orient the sagittal slice so that it aligns with the
>>>>> world coordinates.
>>>>>
>>>>> (see screen shots)
>>>>>
>>>>>
>>>>> I believe I need to rotate the slice (if I could rotate the actor)
>>>>> about Z 90 CCW and then about its new X 0- degrees and then move the camera
>>>>> about world Y 90 and the roll the camera 90 to get the sagittal voxels
>>>>> DICOM aligned with the World Coordinates.
>>>>>
>>>>> I tried various parameters for the resliceMapper->SetSlicePlane() but
>>>>> the slice just dissapears off screen somewhere so I must be getting
>>>>> sometime wrong.
>>>>>
>>>>> How would I use the SetSlicePlane to achieve this?
>>>>>
>>>>> Thanks
>>>>>
>>>>> Rick
>>>>>
>>>>> On Aug 27, 2016, at 02:51 PM, David Gobbi <david.gobbi at gmail.com>
>>>>> wrote:
>>>>>
>>>>> You should also try vtkImageSliceMapper instead of
>>>>> vtkImageResliceMapper,
>>>>> perhaps its behavior will better suit your requirements.
>>>>>
>>>>>
>>>>> On Sat, Aug 27, 2016 at 11:51 AM, David Gobbi <david.gobbi at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Rick,
>>>>>>
>>>>>> You're seeing this because you are doing an out-of-plane rotation on
>>>>>> an image that has only one slice.  The rotation is around the image origin,
>>>>>> which (in this case) is at the bottom-left corner of the image.
>>>>>>
>>>>>> The vtkImageResliceMapper has a SetSlicePlane() method:
>>>>>> http://www.vtk.org/Wiki/VTK/Image_Rendering_Classes#vtkImage
>>>>>> ResliceMapper
>>>>>> You must rotate this SlicePlane when you rotate the vtkImageSlice.
>>>>>>
>>>>>>  - David
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Aug 27, 2016 at 10:54 AM, Richard Frank <rickfrank at me.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> If I build the example
>>>>>>>
>>>>>>> VTK/Examples/Cxx/Images/ImageSlice
>>>>>>> and add
>>>>>>>
>>>>>>>  imageSlice->RotateX(1);
>>>>>>>
>>>>>>> Which should, I think, rotate the image actor about its X axis by 1
>>>>>>> degree, I instead get
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> which seems incorrect.
>>>>>>>
>>>>>>> I can rotate about Z.
>>>>>>>
>>>>>>> Is there something I'm not doing correctly, or is this a bug?
>>>>>>>
>>>>>>> I also tried RotateWXYZ(1,1,0,0) and get the same result.
>>>>>>>
>>>>>>> This is VTK 7
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> Rick
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160828/20826da9/attachment-0001.html>


More information about the vtkusers mailing list