Tangible interactions - Control for ImageJ

by Simon M. Jensen - March 05, 2019

Our assignment for next week is to build a USB HID (human interface device) for a specific purpose. This blogpost is intended to elaborate in the idea that I have for the project.

My idea is to build a control for ImageJ. ImageJ is a software used in many research settings for analyzing data. The program was used extensively in the research lab where I previously worked and performed my experiments on macrophages. I would assume that I have analyzed roughly 1500-2000 cell images with imageJ over the past years. Each image analysis takes about 10-20 minutes depending on what you analyze, measure etc. Wherever you manage to win a few seconds it really adds up in the long run. For this reason I decided to create a control for that program - as it could potentially save people from days of work!

The problem with imageJ is that you are using the mouse for everything. In my case I would be counting the number of different types of cells. For this specific task I would need to open the three following windows in addition to the image I am analyzing:

1 Channel tools: You count cells based on the antibody that binds to them. Different antibodies will have different colors based on RGB color. The channel tools are used to add/subtract certain colors to see if a cell is pos+/neg- to some or all colors.


2 Brightness Contrast: Is used to adjust colors up and down. Images will have different color intensities based on their channel. This can adjust that.

3 Cell counter: This plugin is used to select the cell type. When you click your image the counter goes up.

This is what the setup looks like.


One of the things slowing down the analysis is the fact that everything is build around the mouse. You constantly have to tick/untick boxes, adjust color values and change cell types - with only the mouse to do this, you find yourself wasting a lot of time.

My idea is to build a physical control that you use with the mouse. This way you can use the mouse to locate cells on an image - while all adjustments to the image are made with the control.

Important control tasks:
-Adding/removing each of the three channels (Red, Green, Blue)
-Choosing a cell type (Type1, Type2, Type3 etc)
-Adjusting the color balance for each of the 3 channels (Red, Green, Blue).

Additional feature (if time allows):
-Opening the 3 windows with one button press?

I’m planning on using buttons to add/remove channels and selecting cells. To adjust the color balance of the red, green and blue channel I want to use slide potentiometers. One idea I’m playing with is saving the previously used combination of R,G,B values. Often, values from one image works well with the next (Is this what motorized potentiometers are for? - Saving a value and finding it again?)

In order for this to work I need to make some “shortcuts” in the ImageJ library that my controller can communicate with.