The Community can help you...

This is one of the first lesson I've learned by myself from the first day I've started my career on the IT world... when you have a doubt, a problem that you can't solve, you want to have an input for a good idea or a good way to solve a problem, the community is the better way to do this.

So guys, I'm here to ask you something this time... are you prepared?

In summary, I've to build a Windows Form application (that have to interact with some MBS products) where users can open a medical image for a patient, sign the image to put patient's problem in evidence and store this data into a database. The graphical way to act I think should be something like the standard Paint application on Windows, where this time your dashboard must be the loaded image. Users can sign different parts of this image and clear previous signs.

How is the better way to do so? I need ideas on how to implement an application like this, expecially on how is the better way to store the informations about the user's signs on the image and their deletion. Maybe place every pixel status on the db? I'm not so sure about this...

Ideas?

Print | posted on Friday, October 14, 2005 11:07 AM

Comments on this post

# re: The Community can help you...

Requesting Gravatar...
I'm not a GDI expert, but I'd think more along the layering way of doing it.

Set the medical image as the 'background' and allow users to draw on a transparent overlay. Then the next thing they 'sign' is yet another transparent overlay over that. Then you can delete layers at will.

Just a thought, no idea how to go about it
Left by Geoff Appleby on Oct 14, 2005 8:46 AM

# re: The Community can help you...

Requesting Gravatar...
This is an interesting idea Geoff, but how to store the informations about what the users sign on the image (or on the layer)? Pixel by pixel?
Left by Stefano Demiliani on Oct 14, 2005 8:52 AM

# re: The Community can help you...

Requesting Gravatar...
As an actual image. If you've got your first real image (an xray or something i presume) I guess you'd have it as a bitmap or something.

Then, when the user wants to sign it, you create a completely transparent overlay image as a seperate bitmap and lay it on top of the first. The drawing surface is now that new transparent image. They draw on it (sign it, whatever) and when they click save, you save the overlaid image as a completely new image. Then a second signing is yet another new image, each laid one on top of the other.

I guess what i'm trying to say is you don't save just the bit that the user draws, but the entire rectangular overlay as a bitmap, but with a lot of transparent pixels.

I can't be real clear about what i see in my head, as I haven't done any gdi work myself
Left by Geoff Appleby on Oct 14, 2005 9:25 AM

# re: The Community can help you...

Requesting Gravatar...
This problem requires a little bit of thinking, expecially for two reasons:
- independently of what are the client requirements, keep in mind that medical digital images used for refertation and diagnostics are subjected to a strict regulamentation by italian law. The same applys to the software used to visualize/manipulate them.
- Medical images of practical interests can be as heavy as 80 Mbytes ... I'm thinking of a RM or CT 3D scan. Hence, be prepared to crunch lots of data.

To store possible comments in order to let the user eventually delete and modify them, I suggest you use a double compression technique: one for the image and the second for the comments. You could also take a look at the DICOM3 standard for medical images.


The approach geoff suggested is substantially correct and is more or less the same big manufacturers use: split image and comments on different layers and code them independetly. Then, it's just a matter of rivisualization.
Left by Witko on Oct 14, 2005 9:29 AM

# re: The Community can help you...

Requesting Gravatar...
Thanks guys, I think that the layered way to handle the image design will be my final choice (I'm not a big expert on GDI too). The signs on the medical image must be saved on a database to be available from other applications (basically, the user put in evidence the patient's problem by signing the image) and so I've to understand what could be the best way to save these data... ok to save as a bitmap the layer where the user signs, but how to store the position of these signs? I think that saving every pixel's sign could be too much...
Left by Stefano Demiliani on Oct 14, 2005 11:16 AM

# re: The Community can help you...

Requesting Gravatar...
have you ever heard about image compression? It is unuseful to store every single bit if you don't use them! Create an image as big as the original one. Same format and same size. Let the user locate the comments. Take only the user-layer and code it as you would do with a compressed image (gif could be suitable if the user modifications are mainly text or graphs).

Then, when a user wants to review the comments, the layer is taken and the original image (same size same format) is overlayed to the medical one.
Left by Witko on Oct 14, 2005 2:10 PM

Your comment:

 (will show your gravatar)
 
Please add 8 and 2 and type the answer here: