Friday, March 17, 2017

Better Image Review User Experience

In my previous post, I mentioned three aspects of image review that can be improved.  The first of these is improvements in the user experience during image review.

The increased use of image-guidance during the course of treatment represents a significant source of knowledge about the delivery, but also an additional burden on daily routines.  The subjective tedium of working through a list of images can be lightened by enhancing aspects of the review user experience.

Usability concerns that can be addressed include:
  • Color schemes that are better adjusted for visual analysis, for instance with darker colors
  • Animated transitions to facilitate visual parsing of state changes, such as pop-up toolbars and changes in image selection
  • Use of spatial layout to convey semantic relationships, as in thumbnail and carousel presentations of images in temporal succession
  • Progressive rendering and dynamic resizing of image elements, to minimize variations in the availability of network resources
Combining these techniques in a single workspace can produce a compelling user experience for image review.



A number of architectural patterns are used to support these techniques.  Examples of these patterns are contained in the PheonixRt.Mvvm prototype.

Sunday, April 24, 2016

How to make image review better?

Image review is critical to modern IGRT, and will be equally important for adaptive RT.  Yet today most users complain that it is a painful chore.  So how do we make image review better?

I think three areas are critical:

  1. A better image review user experience
  2. Better workflows to support image review
  3. Advanced analysis tools to assist in the review process
I'll post my thoughts on areas of improvement for each of these.


Sunday, August 30, 2015

MVVM and SOA for scientific visualization

I've been working on an architecture that combines the simplicity of MVVM for UI interactions with the scalability, pluggability, and distributedness of SOA for processing data for visualization.  The first prototype I've implemented is in the form of the PheonixRt.Mvvm application (on github at https://github.com/dg1an3/PheonixRt.Mvvm)

PheonixRt.Mvvm is split in to two exe's:

  • Front-end
    • UI containing the MVVM
    • Interaction with back-end services is via service helpers (using standard .NET events)
  • Back-end
    • hosts the services responsible for pre-processing data
    • hosts services that visualize the data, such as calculating an MPR, a mesh intersection, or an isosurface
The important interface is between what processing should be done by services, versus what processing can be done by the View (which is WPF in this case).  The line I've drawn is that anything that has been reduced to a:

  • Bitmap (including alpha values)
  • 2D vector geometry, such as a line, polyline, or polygon
  • 2D transformation

can be exposed as bindable properties on the ViewModel, and then any additional rendering can be done by the View (for instance to add adornments, or other rendering styles).  So the services are necessary to turn the data in to these kinds of primitives, and WPF will take it from there.

This prototype also looks at the use of the standy pool as a means of caching large amounts of data to be ready for loading.  This is similar to what the Windows SuperFetch feature does for DLLs, but in this case it is large volumetric data being pre-cached.

Sunday, May 17, 2015

Crowd Sourcing and Anonymous Science

Maybe the future of science will be in the form of crowd-sourced anonymous discussions, which will be used to formulate testable hypotheses and experimental design.  Then publicly funded labs would pick up the work, perform the experiments, and publish the results.  The results would then be discussed by the anonymous crowds.

The anonymity is crucial, because it would act as an objectivity filter.  The mechanism of anonymity would specifically act to prevent the formation of visible "personas", because comments would not be traceable to a known identity.  So over time the discussions would assume the form of a "collective mind" debating with itself.

Friday, March 27, 2015

word2vec

I've been able to analyze some notes using word2vec, and the extracted "meaning" has some interesting properties.  Maybe next I'll run some archived comments from the Mosaiq Users listserv and see how often users talk about
  • slow loading of images
  • import problems due to inconsistent SRO semantics
  • issues with imported structure sets
  • re-registering the ImageReview3DForm COM control
[which all point to a need for a better image review capability for Mosaiq users.]

WarpTPS

One of the problems to be addressed for adaptive treatment paradigms is the need to visualize and interact with deformable vector fields (DVFs).  While a number of techniques exist for visualizing vector fields, such as heat maps and hedgehog plots, a simple technique is to allow interactive morphing to examine how the vector field is altering the target image to match the source.

WarpTPS Prototype

This is a very old MFC program that allows loading two different PNG images, and then provides a slider to morph back and forth between them.

Note that currently the two images that can be loaded through File > Open Images... must have the same width/height, and are both required to be in .BMP format.

First is a video of Grumpy to Hedgy:


And this, slightly more clinically relevent example, shows one MR slice being morphed on to another one:



Thursday, March 26, 2015

Ectoplasmic Sonification

The pathway chart from Roche is always a fascinating visual immersion in the panoply of activities in the cytoplasm.  But it is static, and visual, and while visualization is a great modality maybe it doesn't provide quite the immersive experience required of such a network.  In the words of Ursula Goodenough“Patterns of gene expression are to organisms as melodies and harmonies are to sonatas. It's all about...sets of proteins..."

So maybe, to take her words literally, what we need is a sonification of the activities in the cytoplasm, to really understand how it all is put together.  Then famous DJs could remix the cytoplasm, and even the best will make it on to the dance charts; wouldn't that be groovy?

First they came for the verbs,

and I said nothing because verbing weirds language.  Then they arrival for the nouns, and I speech nothing because I no verbs.  - Peter Ellis

pheonixrt has a new home!

I just recently completed the GitHub migration, due to Google Code shutting down.

https://github.com/dg1an3/pheonixrt

Three projects are represented:
  • pheonixrt is the original inverse planning algorithm based on the convolutional input layer
  • WarpTPS is the interactive morphing using TPSs
  • ALGT is the predicate verification tools
Also, see the references at the end of http://en.wikipedia.org/wiki/Thin_plate_spline for some videos showing WarpTPS.

Sunday, August 25, 2013

How to Fold a JuliaSet

I wrote a JuliaSet animation way back when, that would use a Lissajou curve through the parameter space defining the curves and then draw / erase the resulting fractals.  With color effects, it was quite fun to watch even on a 4.77 MHz PC.

So I was reminded when I saw this very nice WebGL-based animation describing how Julia Sets are generated.  [Note that you really need to view this site in Chrome or Firefox to get the full effect, as it requires WebGL].  If you've only vaguely understood how the Mandelbrot set is produces, or the relationship between Mandelbrot and Julia sets, then it is worth stepping through the visuals to get a very nice description of the complex math that is used and how the iterations actually produce the fractals.
Plus the animated plot points look a lot like my old JuliaB code, but its too bad you can't interactively change the plot points.

Tuesday, June 04, 2013

John Henry

I would like to visit Hinton WV one of these days.  There is a John Henry festival there every year, and an old train runs through the Big Bend tunnel.

The interesting thing about the legend is that it cuts through to the central question: does life have an objective function?

Onnx