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
