Skip to content

Conversation

kouichi-c-nakamura
Copy link
Contributor

This is only a suggestion.

ImageJ has been split into ImageJ and ImageJ_javaaddpath. ImageJ calls ImageJ_javaaddpath to add java class paths.

I have tested that the following code successfully launches ImageJ.

addpath('D:\\Fiji.app\scripts');
ImageJ

In addition, you can use ImageJ_javaaddpath to access ImageJ Java API from within parfor loop of parallel computing MATLAB toolbox.

https://forum.image.sc/t/can-i-use-fiji-imagej-from-within-matlabs-parfor-loop-for-parallel-computing/19007/4?u=kouichi-c-nakamura

fijipath = 'D\Fiji.app\scripts';

addpath(fijipath)
ImageJ

I = imread('corn.tif',3); % uint8

parfor i = 1:10
    addpath(fijipath) % to make MATLAB functions for ImageJ available
    ImageJ_javaaddpath % to make ImageJ Java class available

    I1 = I - uint8(10*i);
    imp = copytoImagePlus(I1);

    disp(imp)

    local_saveasTIFF(imp,i) % you cannot directly access ij.IJ in parfor loop
end

% a local function is needed to access ij.IJ
function local_saveasTIFF(imp,i)
    ij.IJ.saveA
    

In addition, the following code successfully showed an image in ImageJ without ImageJ GUI. I wonder this can be effectively called 'headless' mode. If this disqualifies to be called headless, what else is needed? IJM, perhaps?

addpath('D:\\Fiji.app\scripts');
ImageJ_javaaddpath

A = uint16( randn(100,100)* double(intmax('uint16')));
imp = copytoImagePlus(A)
imp.show()

Above is equivalent to the code below, actually, if this can be called as 'headless'.

addpath('D:\\Fiji.app\scripts');
ImageJ(false)

A = uint16( randn(100,100)* double(intmax('uint16')));
imp = copytoImagePlus(A)
imp.show()

In fact, if yes, we won't need ImageJ_javaaddpath to be a separate function. We can simply work with ImageJ and ImageJ(false).

Jacques Pecreaux and others added 30 commits July 3, 2018 16:54
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Sometimes, you only want to use parts of Fiji as a library, not start
the interactive ImageJ. To do this, start 'Miji(false)'.

By default, ImageJ will still be started (e.g. 'Miji' does the same as
'Miji(true)').

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
While at it, almost rewrite the thing to avoid unnecessary cd'ing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Unfortunately, a restart is required if Java3D was not installed, but it
is as convenient now as we could make it, at least.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This file only contains comments, as it is meant to be published using
Matlab's publish() function.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Signed-off-by: Stephan Preibisch <stephan.preibisch@gmx.de>
We also have to ensure that the bin folder in the MATLAB jre path is
writable, otherwise it will confuse the user.

Reported by Peter Beemiller
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Now that Johannes fixed the surface plot mode of the 3D viewer, we can
put this demo back. It is a demo explainging how to get the MATLAB logo
rendered in 3D in Fiji 3D viewer.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Apparently, the light was bluish, dunno whether we can do that, too :O)

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
... also if the user asked the main window to be hidden...

Noticed and reported by Walter de Back.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In Miji.m, there it a call to

 fiji.User_Plugins.installScripts();

Unfortunately, this causes a nasty bug with MATLAB: calling this
static method modifies the static MATLAB java path, which is
normally forbidden. The consequences of that are nasty: adding a
class to the dynamic class path can be refused, because it would be
falsy recorded in the static path. On top of that, the static
path is fsck in a weird way, with file separator from Unix, causing a
mess on Windows platform.
So we give it up as now.
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
In the same vein as the previous commit...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Interoperability for the win.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
…rrayImg

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
The Miji.m script adds Fiji.app/jars and Fiji.app/plugins to the MATLAB
classpath by explicitly iterating over *.jar in these directories. Thus
it was not recursing to subdirectories - notably /jars/bio-formats.

The script will now recurse through subdirectories to find jars.

Adapted from: http://stackoverflow.com/questions/2652630/
how-to-get-all-files-under-a-specific-directory-in-matlab
Instead of manually adding filesep let's let MATLAB decide how to make a
full file path.
This proposed change removes a bug I described on imagej-dev . Any other use of javaaddpath, say to develop one's other software, loses the instance of MIJ. This is because javaaddpath automatically calls clear java. By returning the MIJ instance as a workspace object, the MIJ instance will not be cleared. The only change for the user is to call:

MIJ = Miji;

instead of just

Miji;

Signed-off by: Mark Hiner
This changes all relevant scripts from javax.vecmath to
org.scijava.vecmath, since we now ship vecmath as a standard dependency!
Java 3D 1.6 now ships with Fiji. It does not need to be
(and cannot be!) installed separately.
bastelflp and others added 6 commits July 3, 2018 16:54
…pt spam of printing every artifact added to the classpath to the console. Related commit: 2633d12 - Remove `cd ..` to stay in the same directory while loading Miji - Only turn warnings off for: `MATLAB:javaclasspath:jarAlreadySpecified`
 ImageJ.m src\scripts\update
@ctrueden ctrueden added the to do label Oct 3, 2018
@imagejan imagejan changed the base branch from master to migrate-matlab-scripts October 11, 2018 12:29
@imagejan
Copy link
Member

Merged in 8d0d50d, closing now.

@imagejan imagejan closed this Oct 11, 2018
@ctrueden ctrueden removed the to do label Oct 11, 2018
@imagejan imagejan mentioned this pull request Oct 11, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants