1
votes

Well, these arrays are actually pixel data from DICOM images. When i just send them as an array (size 100) of pixel arrays (each about 1mb) it overloads the browser quite obviously. Being a newbie to programming, i would appreciate being pointed in the right direction to start working on economically loading large files , i.e., image-stacks into browser window , preferably dynamically. Apologies if the query is not clear

2
Do you really want to show all 100 images simultaniously? Can you explain your specific use case in more detail? If you have to transfer all images to the client, you'll have to do it at some point in time... But maybe you can use some local intelligence for caching data or maybe even querying your PACS from the client... But those ideas depend strongly on your inteded use case.OBu
Thanks for the helpful comment. I am trying to build a teaching PACS server which is web based and django powered. through the web interface the user sends request to the server to load images into a DICOM viewer (~100 images ) which can load and display as they come throughMaelstorm
My next comment is a bit lengthy, I'll post it as answer - feel free to use it as a discussion thread...OBu
Teaching PACS sounds like an interesting idea - how far have you got with it?rslite

2 Answers

1
votes

Hmmm... So your application is both at the same time? DICOM server and DICOM viewer?

The server is ment to respond to query-retrieve SOP classes and deliver images, the viewer will be the system sending those requests.

DICOM concepts would say your server should just be serving the images, the viewer is displaying them (including local file management, ...).

That would end up with a fat client (e.g. javascript if you want the viewer to be in a web browser), otherwise you won't be able to to interact with images at the speed you would like to (smooth scrolling, maybe 3D reconstruction, etc.).

If you just want to have some image pre-view capabilities on your server, I would suggest making a page with ~10-16 thumbnail images, one view for one or two full-size images, and load them per request if a user wants to preview image series or a single image. With that, you reduce load time significantly and your user is able to pre-select the images prior to sending a full request.

For the full viewer, I would consider a local solution on the client. If it should be web-based or not (or maybe mixed) depends on your further applications.

In past projects, we used existing open source DICOM servers like dcm4che for handlng the server part and just pulled our data from there. But for a teaching system, it might be interesting to build the server on your own as well to show all parts of the concept.

Feel free to comment, I'll try to update the post to answer questions.

0
votes

I had exactly this same problem trying to develop a multiframe dicom viewer using just plain html5.

In order to be able to load such a big amount of imaging data in the browser, I decided to try using some web storage technology on the client side. In particular, I was considering to do some initial tests with indexedDB.

Sadly, I am currently involved in other tasks, so the web viewer development is now stopped (again!) and these tests are still undone.

Anyway, I would try to do a proof of concept with indexedDB.