User Tools

Site Tools


Courses -2016
Courses 2018-
Downloads (-2016)
Downloads (2016-)
RSS aggregates

EMBL BioImage Data Analysis



—- Contact
CMCI Alumni
EMBL Heidelberg
EMBL Intranet

Popularity Ranking

Timeline of @cmci_

cmci_ avatar

RT @Fr_BioImaging: #onlinetraining on "Image Processing for Correlated and Multimodal Imaging Techniques" organized by @COMULIS_COST Regist…
About 8 hours ago by: Kota Miura (@cmci_)

cmci_ avatar

RT @jytinevez: New preprinton combining #TrackMate and #StarDist in the #ZeroCostDL4Mic framework. Work led by Guillaume and excellent col…
About 8 hours, 4 mins ago by: Kota Miura (@cmci_)

cmci_ avatar

RT @LauLauThom: Just updated the Roi 1-click tools with a cool feature 🥳 Keep the left-click maintained to preview the roi and adjust its p…
About 2 days, 14 hours ago by: Kota Miura (@cmci_)

cmci_ avatar

@KuglerElisabeth @martinjones78 @dgaboriau @WilsonAdams_ @focalplane_jcs @AcademicChatter @NEUBIAS_COST
About 3 days, 2 hours ago by: Kota Miura (@cmci_)

cmci_ avatar

RT @KuglerElisabeth: How can #developers help wet lab #scientists to use their analysis approaches? What's your thoughts? Interesting que…
About 3 days, 2 hours ago by: Kota Miura (@cmci_)

cmci_ avatar

RT @paqio: Exciting new all-optical data, fresh off a new prototype! Showing off beautiful holographic optogenetic activation of the cir…
About 4 days, 11 hours ago by: Kota Miura (@cmci_)
Algorithm FRAP Fiji ImageJ ImageJ Plugin ImageJ Plugin 3Dviewer Imaris Java Javascript Python R added 201904 Freiburg bias blog dokuwiki fiji google imagej java libraries matlab meetings neubias news papers python references software webadmin

CMCI weblog

IJ plugin development

I added a small article about setting up Eclipse Run/Debug configuration in Eclipse.

Python IP cookbook on the way

Started to write Python Image Processing Cookbook.

It's a bit surprising that there is not much information about Python Image Processing, considering it's potential. Most of the tutorial pages are about PIL module which only allows you to deal with 8-bit images.

I have been comparing Python IP and Java IP, and think that these two worlds could be complement to each other. Java is much stronger with Image Processing libraries but weak with statistics and numerical treatments. For the latters, Python is much more efficient. Python is also better for plotting graphs in 2D and 3D.

Coding memo for JACOB Bridge between Java and Bitplane Imaris

In addition to the previous page (, here is a list of commands for JACOB bridge for Java and Imaris.

- To get an Instance of Imaris

ActiveXComponent imarisApplication = new ActiveXComponent("Imaris.Application");

- General syntax for getting/setting field values of IApplication getter:

imarisApplication.getProperty("FIELD_VALUE", PARAMETER);


imarisApplication.setProperty("FIELD_VALUE", PARAMETER);

- To keep Imaris opened (otherwise closes after operation)

imarisApplication.setProperty("mUserControl", true);

- To get an Instance of Imaris data

ActiveXComponent IDataSet = imarisApplication.getPropertyAsComponent("mDataSet");

- Creating new data in Imaris (empty)

Variant[] parameter = new Variant[6];
int ijXsize = imagestack.getWidth();
int ijYsize = imagestack.getHeight();
int ijnSlices = imagestack.getSize();
parameter[0] = new Variant(1);	//1 for type 8bit 
parameter[1] = new Variant(ijXsize);	//x
parameter[2] = new Variant(ijYsize);	//y
parameter[3] = new Variant(ijnSlices);  //z
parameter[4] = new Variant(1);			//channel
parameter[5] = new Variant(1);			//time point
IDataSet.invoke("Create", parameter);	

- getting data parameter from Imaris (data shown in Imaris). An example with image size in x

int imXsize = localIDataSet.getProperty("mSizeX").changeType(Variant.VariantInt).getInt();

Imaris - Java

Here is some notes on accessing Imaris contents from Java. Since this example uses COM interface via jacob.dll, platform is limited to windows.


There is a breif description in

In order to run the JACOB demo, the Java COM Bridge needs to be installed (put the jacob.dll into /bin and the jacob.jar into /lib/ext). The demo does similar things like the demos above: Start Imaris, load a Dataset, perform some action with the image, and terminate Imaris. Many thanks for providing the source code to Volker Bäcker, Monpellier RIO Imaging.

So accessing Imaris from Java requires Jacob pakage (Java - COM Bridge, When I downloaded the latest version, two .dll files were included in the package and no jacob.dll.

Jacob.jar relies on a DLL file that it loads off of the library path or classpath. This means that you must either copy the appropriate jacob ddll into your path or use VM options to add directory holding jacob dll to the path. Prior to 1.14M6, the jacob DLL name was alwasy “jacob.dll”. This made it hard to verify jacob was loading the correct dll when multiple copies of jacob were installed on a single system. It also was confusing on 64 bit systems where the 32 bit and 64 bit dlls have the same tames. Starting in 1.14M6, Jacob's library loader selects a dll with the appropriate name based on the jacob release and platform. The dll naming convention is: jacob..dll

There actually are following two .dll files in the package.

  • jacob-1.15-M3-x64.dll
  • jacob-1.15-M3-x86.dll

I copied them under C:\Sun\SDK\jdk\jre\bin, where my system PATH is already set.

jacob.jar was as it is so this was copied under C:\Sun\SDK\jdk\jre\lib\ext

Testing java applicaiton using example downloadable from Bitplane

Example java code by Volker Bäcker is available in the Bitplane site linked above. I downloaded the java file and then made it testable in Eclipse (simply add jacob.jar file in the project build path).

Start button: starts up Imaris

Starting up of imaris uses ActiveX control. Useful tool for viewing ActiveX control: checking progID (activeXID).

Constructor of imaris class instance is as follows, within getStartImarisButton().

	public void actionPerformed(java.awt.event.ActionEvent e) {
		if (imarisApplication == null) {
			imarisApplication = new ActiveXComponent("Imaris.Application");
			imarisApplication.setProperty("mVisible", true);

“mVisible” is a property of IApplication Interface and details are in:

ActiveXComponent is a class provided in Jacob package, and accessing Imaris functions are mostly done through the method of this class. Java doc is at:!/api/com/jacob/activeX/ActiveXComponent.html

text field & "Load" button (first and second line)

Load button sends command to Imaris by following three lines in method getLoadImage1Button().

	Variant parameter1 = new Variant(imagePath1TextField.getText());
	Variant parameter2 = new Variant("");
	imarisApplication.invoke("FileOpen",parameter1, parameter2);

imarisapplication is an instance of ActiveXComponent constructed above. Class Variant is described in the Jacob Java doc:!/api/com/jacob/com/Variant.html

“FileOpen” is a member funciton of IApplication Interface and details are in:

By the way, imarisapplication is initialized in the method “initialize()” as follows:

	private void initialize() {
		this.setSize(440, 545);
		this.setTitle("Hello Imaris DataSet");
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				if (imarisApplication != null) {
					imarisApplication.setProperty("mUserControl", !checkbox.getState());

details on the IApplication interface property “mUserControl” is in:

getSize button

(does not work, returs error in the current state)


This button's action is as follows:

	public void actionPerformed(java.awt.event.ActionEvent e) {
		ActiveXComponent dataSet = imarisApplication.getPropertyAsComponent("mDataSet");
		int type = dataSet.getPropertyAsInt("mType");

mDataset: IApplicaiton property

mSizeX: IDataSet property

entry generator

Weblog Archive

blogtng/blogtop.txt · Last modified: 2016/05/24 12:46 (external edit)