Comments (3)
I think it might be saner, actually, to keep each layer in an offscreen canvas and then composite them at the end. Blitting canvases over each other is very fast.
One other optimization that might help would be to draw all the layers as individual pixels and then use the canvas transformation to scale the image when rendering. This would also let us get rid of the pixel overlap.
I looked into doing this a while ago; I need to see where I put my code experiments...
from nsviewer.
I actually have the alpha compositing 95% done now, and it's much faster (scrolls seamlessly through the brain with ~10 layers), so I'll probably stick with this approach. I also switched to ndarrays, and while performance is not noticeably better, the code is much cleaner--we can do nice matrix operations with ndarray-ops. I suspect using multiple canvases would be slower, because we'd still have the extra overhead of painting to off-screen canvases, even if that's much faster than to the on-screen canvas.
The scaling optimization is an interesting idea! Let's see where we are in a couple of days once I merge these changes.
from nsviewer.
Closed in #23.
from nsviewer.
Related Issues (20)
- Update image/scene parameters from object
- Allow users to set colormap thresholds when loading images HOT 8
- Add colorbrewer palettes
- Allow loading of images that aren't in MNI space HOT 10
- Link statistical images to 4D data and plot across time at selected voxel HOT 1
- nsviewer fails to display an image properly HOT 4
- current version is broken: example does not work
- De-fuzzing the fuzz HOT 3
- The example link in the README is broken
- Nifti size in nsviewer HOT 14
- Replace array-of-array volume representation with ndarrays HOT 1
- Package dependencies properly
- Possibly switch to custom nifti reader HOT 2
- Images not loading HOT 1
- Singleton pattern? HOT 1
- Layers in different colors HOT 2
- Loading progress indicator needed HOT 1
- Slider value doesn't reflect actual handle position
- Table of clusters HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nsviewer.