cornerstoneWADOImageLoader icon indicating copy to clipboard operation
cornerstoneWADOImageLoader copied to clipboard

Proof of concept decoding HTJ2K with progressive loading and rendering

Open jmhmd opened this issue 2 years ago • 5 comments

WIP for discussion

jmhmd avatar Jun 06 '22 17:06 jmhmd

Deploy Preview for cornerstone-wado-image-loader ready!

Name Link
Latest commit ef8786835b33aa9bc2782752ef8825a99bab6319
Latest deploy log https://app.netlify.com/sites/cornerstone-wado-image-loader/deploys/6377c8f095ab2500090d5e2f
Deploy Preview https://deploy-preview-451--cornerstone-wado-image-loader.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

netlify[bot] avatar Jun 06 '22 17:06 netlify[bot]

Generally LGTM - if we use a custom TSUID. Hopefully Erik can take a look as I'm not terribly familiar with the details of exactly where the codec is created.

wayfarer3130 avatar Jun 06 '22 18:06 wayfarer3130

Yeah this is really nice and a simpler PR than I was expecting. I'm personally way more interested in the WADO-RS metadata + pixel data approach though, but this has a lot of the pieces we need to get that done. Maybe we should have a NAMIC Project Week project to discusss this.

The image loader could take options when loading the pixel data like imageId?Range=0-100000 and then the next time it's called with a longer range it concatenates the result. Those changes are more for Cornerstone (3D) core than the image loader though.

swederik avatar Jun 07 '22 07:06 swederik

I like the idea of using a query string parameter on the imageId to pass the byte range, that feels like the right way to do it since the byte range is part of the HTTP request. For other parameters that might get passed to the decoder like sub-resolution (also that might be dynamically changed after the byte-range request), I would think those should probably be exposed as a function of the image-loader to allow dynamic re-rendering.

jmhmd avatar Jun 08 '22 01:06 jmhmd

Interesting POC!

I agree there is a lot to discuss here about what should be done at the imageLoader and volumeLoader layer as sister libraries to Cornerstone3D Core. A succinct api that overwrites/modifies the cache makes a lot sense, and I like how you have already thought about this with "datasetscachechanged" events, which makes a lot of sense.

query parameters for ranges make a lot of sense, I guess that is also something we'd have to try to get into the DICOMWeb standard.

JamesAPetts avatar Jun 08 '22 09:06 JamesAPetts

:tada: This PR is included in version 4.3.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket:

ohif-bot avatar Nov 18 '22 19:11 ohif-bot