Image processing on the fly with Micro Manager

Hi Guys,

I would like to implement image processing on the fly, as I acquire images from my scope.
To help me with that I have installed Micro-manager.

The tasks I want to implement in line, I already do offline using a combination of ImageJ for image processing, and Igor (Wavemetrics) for signal processing.
Essentially, I would like to measure the average intensity of any given frame, obtain their difference between two consecutive frames and plot this value over time.

I have never engaged in such a project, where I am working on the data as it comes out from the camera, and I am not very experienced as a programmer.

Can anyone please tell me how difficult this is to implement?
Can anyone share some ideas, or resources that might be useful for this?
Some useful documentation and examples that would help a novice towards this would be of great help.

Many thanks,


There was a (lengthy) discussion about interaction between MicroManager and KNIME between Karl Bellve (@kbellve), @gab1one and @dietzc on gitter recently, starting around here:

Maybe the involved people want to comment here? (I just invited Karl to the discussion as well, as he’s not yet on this forum.)

Hi @imagejan and @rhjpires,

Yes, currently working on Intelligent Acquisition with KNIME driving µManager. I call the project µmKNIME (forked from MMRestServer).

However, what I am doing can be driven by anything that can use URLS. A simple text file loaded by your favorite browser should allow execution of µManager commands.

But, I am in the process moving the code from µManager 1.4 to 2.0. Not easy since they made a ton of internal changes that do not work well with REST Server also I have limited time to work on this.

Ricardo, I think what you want done can be done in a BSH script running inside µManager, in which you have access to ImageJ1 functions/plugins. You would have to import jfreechart for plotting. A more advanced approach would be creating a µManager plugin, which my pgFocus plugin is an example. It plots real time data inside µManager. The most advanced approach would be using µmKNIME (which isn’t finished).

BSH Psuedo Code

Loop {
    Snap Image 1
    Snap Image 2  
} Until some condition

PS. I am on this forum with my gmail email and not my umass email, with the same username as github (@kbellve). I don’t come here frequently, so thanks for the invite.


Hi guys,

thanks very much for the help. You guys are way ahead of me on this, so many thanks for the input. I am glad to see that what I want to do is possible to achieve.

Just to give you an impression of where I am, I need to learn how to program JAVA. The programming language of IgorPro (Wavemetrics), and which I have been using, is somewhat similar to C, so it might not be so hard for me to learn Java. But I think I should from the beginning focus on developing the plugin, that will keep me on track and motivate throughout the project.

Could you guys put forth some suggestions to guide me towards that? There are so many resources that it can be overwhelming to scrutinize alone the path to take. I have started with some beginner literature and stuff, if you think you can recommend some key resources, please let me know.

Many thanks again,


I would start with simple BSH scripts inside micromanager. BeanShell is a scripting language for java. It will allow you to slowly ease into java and do modest image processing/analysis as the images are acquired. Print out the numbers, and then import those numbers into a plotting program.

Look at all the example scripts for µManager and modify/torture them, etc…understand how they work, how to modify them…

A plugin for µManager is fairly advanced since it requires understanding graphic user interfaces. I wouldn’t attempt a plugin until you could do a few BSH scripts and get the output you want. Good luck

Thank you Kbelive!

I have some experience in coding with Igor Pro, including doing graphical interfaces but I am for the most part, I am a newbie in programming. I have developed a routine that makes some very interesting analysis from video microscopy data and I am happy with the results. My problem is that it runs offline, and I think it would be great if this could be implemented inline, as we are recording data, but to dive into another language makes me a bit hesitant if I consider the rest of the stuff I also need to do totally unrelated to programming. Perhaps we could get a masters students with more background in programming to work with us, that might be a better solution, or at least one I am considering.

Many thanks for the reply 'though!!