[IGSTK-Users] Coordinate system framework for picking events

Vincent Gratsac vincent.gratsac at irisa.fr
Thu Apr 3 05:18:53 EDT 2008


Hi Patrick,

I will create a new point in "Design Discussion" called  Coordinate 
system framework for picking events. Are you OK ?
I am not sure that the problem I encounter is due to the IGSTK design, 
or due to my software's objects manager. Let me explain briefly how it 
works before creating a Wiki page, if needed.

a DisplayManager class manages all views of the software, and 
ObjectRepresentations added to these views. When a point is picked on 
one of these views, a picking event will be thrown by this view, and 
will be caught by the DisplayManager. Then, as Luis described to me, it 
*should* request the Transform between the View CoordinateSystem and the 
ImageSpatialObject pixel data coordinate system for each displayed 
ImageSpatialObjectRepresentation.

At this point, the problem is that the DisplayManager does not have 
access to the corresponding ImageSpatialObject (nor CoordinateSystem) 
for each ImageSpatialObjectRepresentation. Moreover, many 
ImageSpatialObject are managed (US, MRI, etc...). So I wonder if it 
would be possible, and logical, to add a way to get the CoordinateSystem 
(or ImageSpatialObject) related to an ImageSpatialObjectRepresentation.

You may think that this is not a good idea, and that I should find a way 
to store this relation between an ImageSpatialObjectRepresentation ans 
its CoordinateSystem (or ImageSpatialObject). That is why I am not sure 
that this is an insufficiency of the IGSTK coordinate system framework...

Is it explained better than last time? Do you understand what I mean?

Thank you,

Vincent

Patrick Cheng wrote:
> Hi Vincent,
>
> I am not sure if I understand your question. Could you describe a 
> scenario (use case) that leads to the failure or show the 
> insufficiency of the coordinate system?
>
> I suggest that we continue this discussion on IGSTK wiki page, which 
> is better organized.
>
> http://public.kitware.com/IGSTKWIKI/index.php/Main_Page
> This fits under the "Design Discussion" section
>
> Do you want to give it a shot?
>
> Thank you,
>
> Patrick
>
> Vincent Gratsac wrote:
>> Hi all,
>>
>> I'm sorry to pick out this point again, but something is still not 
>> clear to me...
>> I well understood the process described by Luis the last time but, in 
>> my point of view, a problem is persistant :
>>
>> At point (2), How can I get the ImageSpatialObject pixel data 
>> coordinate system if the software stores many ImageSpatialObjects 
>> (UltraSound, MRI, etc...) ?
>> That's why I thought it would be useful to be able to get each 
>> coordinate system directly from the ImageSpatialObjectRepresentations 
>> which are stored by the View.
>>
>> Do you want me to log a bug for this precise point?
>>
>> Thank you,
>> Vincent
>>
>> Luis Ibanez wrote:
>>>
>>> Hi Vincent,
>>>
>>> You will need a single ImageSpatialObject, and you will need
>>> one ImageObjectRepresentation *for each* View where you want
>>> to display the image.
>>>
>>> About creating bug,
>>> please create your account in the MANTIS bug tracker
>>> (just need to provide your email)
>>>
>>>    http://public.kitware.com/Bug/my_view_page.php
>>>
>>>
>>> Then do the following:
>>>
>>>   * Login in the NANTIS system
>>>   * Select the IGSTK project on the upper right menu
>>>   * Click on "Report Issue"
>>>
>>>
>>>
>>> Please let us know if you run into any difficulty while
>>> reporting the bug.
>>>
>>>
>>>    Thanks
>>>
>>>
>>>       Luis
>>>
>>>
>>>
>>> ------------------------
>>> Vincent Gratsac wrote:
>>>> Hi Luis,
>>>>
>>>> Thank you for your help.
>>>>
>>>> The solutions you described here seems to be a right way to do.
>>>> However, this means that we still have to store the corresponding 
>>>> ImageSpatialObject for each ImageObjectRepresentation, isn't it ?
>>>>
>>>> I don't know where to log it as a bug. Could you tell me how to do ?
>>>>
>>>> Vincent.
>>>>
>>>> Luis Ibanez wrote:
>>>>
>>>>>
>>>>>
>>>>> Hi Vincent,
>>>>>
>>>>>
>>>>> Thanks for pointing this out.
>>>>>
>>>>>
>>>>> What we are planning to do here is the following:
>>>>>
>>>>> 1) Views, in response to picking events will throw
>>>>>    IGSTK PointEvents, that will contain both a Point
>>>>>    and a reference to a coordinate system (the one
>>>>>    of the View).
>>>>>
>>>>> 2) You will be able to request the Transform between
>>>>>    the View CoordinateSystem and the ImageSpatialObject
>>>>>    pixel data coordinate system.
>>>>>
>>>>> 3) With the Transform you will get from (2), you will
>>>>>    be able to convert the point from the View coordinate
>>>>>    system to the ImageSpatialObject pixel data coordinate
>>>>>    system
>>>>>
>>>>> 4) Once you have the point in image space, you will be
>>>>>    able to map it to pixel indices and access (read only)
>>>>>    pixel data.
>>>>>
>>>>>
>>>>> Pieces (1),(3) and (4) need to be implemented.
>>>>> Piece (2) is currently functional
>>>>>
>>>>>
>>>>> Could you please log a bug, for this topic ?
>>>>>
>>>>> You could describe it as "fixing the coordinate system
>>>>> framework for picking events".
>>>>>
>>>>> ... or something along those lines...
>>>>>
>>>>>
>>>>> BTW: Breaking the encapsulation of the ImageObjectRepresentation
>>>>>      is probably not the best way to solve this issue.
>>>>>
>>>>>
>>>>>
>>>>>    Thanks
>>>>>
>>>>>
>>>>>       Luis
>>>>>
>>>>>
>>>>>
>>>>> ---------------------
>>>>> Vincent Gratsac wrote:
>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> First of all, thanks for the great effort of the IGSTK team to 
>>>>>> bring us this new release !
>>>>>>
>>>>>> I did not receive any answer to my last mail about how to get the 
>>>>>> ImageSpatialObject from an ImageObjectRepresentation.
>>>>>>
>>>>>> Did you understand my problem, and do you think that adding a 
>>>>>> RequestGetImageSpatialObject() method to the 
>>>>>> ImageObjectRepresentation class would be possible ?
>>>>>>
>>>>>> Vincent
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I'm currently working on slicing of displayed objects by giving 
>>>>>>> a picked point.
>>>>>>> The NeedleBiopsy example is helpful to learn how to do that !
>>>>>>> Here is my problem : my software can display some 
>>>>>>> ObjectRepresentations for more than one SpatialObjects, but I'm 
>>>>>>> not able to know to which ImageSpatialObject an 
>>>>>>> ImageSpatialObjectRepresentation is related.
>>>>>>>
>>>>>>> This is a problem when we try to convert a physical point to 
>>>>>>> image indexes ( that's why I submitted the idea to add a 
>>>>>>> ResliceToPhysicalPoint method in the 
>>>>>>> ImageSpatialObjectRepresentation class).
>>>>>>>
>>>>>>> This is also a problem if the transformation between one of the 
>>>>>>> ImageSpatialObjects and the View object differs from Identity. 
>>>>>>> In this case, I need to get this transformation and multiply its 
>>>>>>> inverse to the picked point's coordinates, in order to express 
>>>>>>> the picked point's coordinates in the ImageSpatialObject 
>>>>>>> coordinate system. Next, I will have to convert the physical 
>>>>>>> point to image index.
>>>>>>>
>>>>>>> To conclude, I found some cases in which getting the 
>>>>>>> ImageSpatialObject from an ImageSpatialObjectRepresentation is 
>>>>>>> very useful. Is there a way to do it , or would it be unsafe to 
>>>>>>> add such a method ?
>>>>>>>
>>>>>>> Vincent
>>>>>>
>>>>>>
>>>>>>
>>>>
>>

-- 
Vincent Gratsac
----------------------------------------------------
Unité/Projet VisAGeS U746
INSERM/INRIA/CNRS/U. de Rennes I
IRISA
Campus de Beaulieu, 35042 Rennes Cedex, France

Ph:  +33 (0) 2 23 23 49 20/ Fax: +33/0 2 99 84 71 71
email: Vincent.Gratsac at irisa.fr
http://www.irisa.fr/visages/
----------------------------------------------------- 




More information about the IGSTK-Users mailing list