Comfortable, powerful and intuitive visualization of 3D images and even multiple 3D images in one window (4D using multiple panels). Supports image evaluation features such as line evaluation and region of interest (ROI) evaluation. Users can write their own evaluation functions to make tailord image analysis in a comfortable and powerful framework.
Now with app file.
Comes with a documentation pdf-file.
- Supports real-time continuous image zooming and adjustment of brightness and contrast using simple mouse moving operations.
- Adapt the GUI layout and the number of panels to your needs.
- Displays up to 16 3D-images simultaneously.
- Shows image intensity and coordinates at current cursor position.
- Link multiple 3D views or operate on individual views separately.
- 3D images can be rotated in 90 degree steps around all axes.
- Image evaluation along lines.
- Image ROI evaluation.
- Write your own evaluation function and easily incorporate into the framework.
- Save stacks of images to image files using the current contrast/brighness settings.
Yes, I think what you're doing makes sense if people are using your app from the command line. The App, on the other hand, is used through the Apps tab, so there won't be a use case of having an output argument anyway. Because of that, I think you can just remove that capability when packaging.
Great tool. BTW, I highlighted your entry on the File Exchange Pick of the Week:
wow, thanks for the thorough investigation. Would have taken me forever to figure that out. Well, I was trying to give people the possibility to add arbitrary plots (e.g. quiver, lines) to the axes and thus introduced the axes handle output. Since the axes are destroyed when the panel leyout is changed, I disabled this feature when the axes handles are returned. I guess I have to think of something different for the app. Thanks for your suggestions!
I think I know what's going on. When you create an App, MATLAB checks to see if your function has an output argument or not. If it does, it will call "imagine" with an output argument. I see that in your code, you disable the ability to change the number of axes when "nargout" is 1.
Just as a note: as you can see from the documentation for Apps (the Tips section)
MATLAB assumes that the output from your function is a figure handle, and that's how it detects whether the figure has closed or not.
A fix would be to use a slightly different version of "imagine" for the App version, and not disable the multi-axes option. You can also output the handle of the figure, as opposed to the handle of the axes.
thanks for the feedback and making me aware of the bug. I can't test it at the moment and I am a bit puzzled why this error ocurres since the app uses the same m-file as the normal submission, which works fine (at least for me). I'll fix it as soon as I get to my 2012b workstation.
I encountered one error, Imagine cannot use the find the fEvalLineFWHM function (it is not on the path). Should be easy to fix.
Also some nice additions would be:
- show a tooltip for the buttons (or a text at the location where not the position and pixel value is shown).
- add the slice position instead of only showing x and y.