Hi there, 

(I apologise for the long email). 


I'm taking a look at MITK, to see if I can use it for my application. My main 
task is to port a legacy application into a more modern way of life (i.e. 
modular, flexible, extensible, plugins etc.) However, the legacy application 
has a rather strange way of working. 


In this legacy application, the main viewer can display a regular grid of image 
views, which can be up to 5x5 in size (compared to the QmitkStdMultiWidget 
which by default displays 2x2 views). Each of these views could be independent. 
So you could in theory have 25 different images loaded into the application, 
and use each view for a different slice, different orientation, different 
magnification of each of those 25 images. Or, you could link all the windows 
together so that the slice number, orientation, magnification and focal point 
of each view is the same. 


However, the most frequently used use cases are: 


1). A single view, that can be either axial, coronal, sagittal, filling the 
whole screen (apart from controls). So you then select a slice to move through 
the image, and a magnification to zoom in. This single view can be used to look 
at either 1 or 2 images. If you are looking at 2 images (imagine, one on top of 
the other), then you simply toggle between two images, so that you can compare 
how well registered they are. 


2). 2 views, arranged as 1 row and 2 columns, so you can compare 2 images side 
by side for quality control purposes. Or have 2 images in each view, one on top 
of the other, and toggle between them. 


If I look at MITK, which appears to use a Model-View-Controller pattern, then 
clearly, all your "data" such as images, surfaces, segmentations, points, lines 
etc. are the Model part. Throughout the application the QmitkStdMultiWidget is 
the View, which provides various ways of viewing the Universe of data. Then, 
(hopefully I'm correct here), the Controller part would be the Functionalities. 
So, user input in GUI components or mouse clicks, are passed to functionalities 
which can either add data to the model, for example, you add a point, which is 
added to a point set, which is then rendered at the correct place in the view, 
or these interactions can update the model, changing properties such as the 
opacity or colour of a surface, which then propagates to the view. 


So far so good. However, my requirements are 


3). to have potentially many different views (orientation, magnification, slice 
numbers, intensity ranges, lookup tables), of different images. 
4). to have different images visible in different views. Imagine you have 3 
images. You have a fixed image, and 2 moving/floating images, which have been 
registered and resampled by two algorithms into the space of the fixed image, 
and you want to compare "which one is best". So, imagine you have 2 columns in 
the main view. In the left column you want to display the fixed image, and 1 
resampled image, and in the right column you want to display the fixed image 
and the other resampled image. You then want a single button click to toggle 
BOTH views simultaneously. 


Also, if I look at the code, each functionality appears to reference 
QmitkStdMultiWidget explicitly. It seems to me that I would require a Display 
window with a completely different widget (or widget containing many other 
widgets). However, If the functionality's all explicitly reference 
QmitkStdMultiWidget, then I would have to extend this class (via inheritance, 
and inject a child class in place, or add functionality to QmitkStdMultiWidget, 
thereby possibly changing the interface, or use Decorators or something). It 
seems that there should be a way to have significantly different types of 
views, but I can't quite see where to do this. 


Somewhere, I must be missing a link. For example, Bundles such as the 
PointSetInteraction, simply add points to the Data store, (the Model), so it 
doesn't matter which widget is viewing the data. This Bundle must be 
View/Widget agnostic. Whereas clearly, Bundles like the Image Navigator, you 
would expect to be tied to the QmitkStdMultiWidget as it specifically controls 
3 orthogonal planes. 


So, questions are: 


5.) How do I have a main viewing area, which can have up to 25 completely 
independent views? showing different images, slices, orientations, 
magnification factors. (intensity range, and lookup table can still be stored 
with the image, and consistent across views). Would I create my own 5x5 multi 
widget? 


6.) How do I control it? Would I end up, starting with a base class of a 
completely different Functionality that was NOT dependent on 
QmitkStdMultiWidget. For example, if I wanted a widget to control 
slice/magnification/orientation, it wouldn't be very applicable to 
QmitkStdMultiWidget, so would it just have to connect to my specific 5x5 
multi-widget? If so, you need to know which of the views you are updating. 


7.) Would I end up with a completely different perspective, using a completely 
different view widget, with completely different controls to the rest of MITK. 
If so, should I use MITK? I still think the BlueBerry Application framework, 
and having a consistent universe of data that could be visible in either the 
QmitkStdMultiWidget, or my 5x5 one would be useful in itself. But I need to 
know how much code I could use from MITK as is, and how much MITK-style code I 
would be writing myself. 


Thanks ever so much for listening. 
Any advice would be appreciated. 


Matt 


------------------------------------------------------ 
Matt Clarkson Ph.D. 
CMIC Software Manager 
Senior Research Associate 
[email protected] 

Centre For Medical Image Computing 
http://cmic.cs.ucl.ac.uk/ 
Tel: 020 7679 0240 
Fax: 020 7679 0255 

Dementia Research Centre 
http://dementia.ion.ucl.ac.uk/ 
Tel: 08451 555 000 ext. 723653 
Fax: 020 7676 2066 
------------------------------------------------------ 
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today. 
http://p.sf.net/sfu/quest-dev2dev2 
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to