Skip to content
Snippets Groups Projects
Commit a5843853 authored by Thomas  MUSSET's avatar Thomas MUSSET
Browse files

updated pom to v4.0.0-a.1, fix classes accordingly to new architecture, added...

updated pom to v4.0.0-a.1, fix classes accordingly to new architecture, added icon, updated .gitignore
parent 63a44e48
No related branches found
No related tags found
No related merge requests found
/ROIToDistanceMap/bin/ /build*
*.jar /workspace
setting.xml
release/
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
icy.log
### IntelliJ IDEA ###
.idea/ .idea/
*.iws
*.iml *.iml
.settings/ *.ipr
.project
### Eclipse ###
.apt_generated
.classpath .classpath
target/ .factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
**/.DS_Store **/.DS_Store
Icon?
\ No newline at end of file
...@@ -8,12 +8,12 @@ ...@@ -8,12 +8,12 @@
<parent> <parent>
<artifactId>pom-icy</artifactId> <artifactId>pom-icy</artifactId>
<groupId>org.bioimageanalysis.icy</groupId> <groupId>org.bioimageanalysis.icy</groupId>
<version>2.2.0</version> <version>3.0.0-a.1</version>
</parent> </parent>
<!-- Project Information --> <!-- Project Information -->
<artifactId>roi-to-distance-map</artifactId> <artifactId>roi-to-distance-map</artifactId>
<version>4.0.0</version> <version>4.0.0-a.1</version>
<name>ROI to Distance Map</name> <name>ROI to Distance Map</name>
<description>Convert ROI to a Distance Map</description> <description>Convert ROI to a Distance Map</description>
...@@ -62,23 +62,19 @@ ...@@ -62,23 +62,19 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.bioimageanalysis.icy</groupId> <groupId>org.bioimageanalysis.icy</groupId>
<artifactId>protocols</artifactId> <artifactId>ezplug</artifactId>
</dependency> </dependency>
<!-- The EzPlug library, simplifies writing UI for Icy plugins. -->
<dependency> <dependency>
<groupId>org.bioimageanalysis.icy</groupId> <groupId>org.bioimageanalysis.icy</groupId>
<artifactId>ezplug</artifactId> <artifactId>protocols</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.bioimageanalysis.icy</groupId> <groupId>org.bioimageanalysis.icy</groupId>
<artifactId>3d-mesh-roi</artifactId> <artifactId>kernel-extensions</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.bioimageanalysis.icy</groupId> <groupId>org.bioimageanalysis.icy</groupId>
<artifactId>icy-bioformats</artifactId> <artifactId>3d-mesh-roi</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
...@@ -86,8 +82,7 @@ ...@@ -86,8 +82,7 @@
<repositories> <repositories>
<repository> <repository>
<id>icy</id> <id>icy</id>
<name>Icy's Nexus</name> <url>https://nexus.pasteur.cloud/repository/icy/</url>
<url>https://icy-nexus.pasteur.fr/repository/Icy/</url>
</repository> </repository>
</repositories> </repositories>
</project> </project>
/* /*
* Copyright (c) 2010-2023. Institut Pasteur. * Copyright (c) 2010-2024. Institut Pasteur.
* *
* This file is part of Icy. * This file is part of Icy.
* Icy is free software: you can redistribute it and/or modify * Icy is free software: you can redistribute it and/or modify
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
package plugins.adufour.distancetransforms; package plugins.adufour.distancetransforms;
import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
import org.jetbrains.annotations.NotNull;
/** /**
* Pseudo-Euclidean distance transform based on a two-pass sweeping algorithm using a 3x3 (in 2D) or * Pseudo-Euclidean distance transform based on a two-pass sweeping algorithm using a 3x3 (in 2D) or
* 3x3x3 (in 3D) chamfer mask. <br> * 3x3x3 (in 3D) chamfer mask. <br>
...@@ -35,9 +39,11 @@ package plugins.adufour.distancetransforms; ...@@ -35,9 +39,11 @@ package plugins.adufour.distancetransforms;
* *
* @author Alexandre Dufour * @author Alexandre Dufour
*/ */
@IcyPluginName("Chamfer 3")
@IcyPluginIcon(path = "/distance-transforms.png")
public class Chamfer3 extends ChamferDistanceTransform { public class Chamfer3 extends ChamferDistanceTransform {
@Override @Override
public void updateUnsignedChamferDistance2D(final float[] map, final int width, final float planarLateralDistance) { public void updateUnsignedChamferDistance2D(final float @NotNull [] map, final int width, final float planarLateralDistance) {
final double xy2 = planarLateralDistance * planarLateralDistance; final double xy2 = planarLateralDistance * planarLateralDistance;
final float planarDiagonalDistance = (float) Math.sqrt(xy2 + xy2); final float planarDiagonalDistance = (float) Math.sqrt(xy2 + xy2);
...@@ -95,7 +101,7 @@ public class Chamfer3 extends ChamferDistanceTransform { ...@@ -95,7 +101,7 @@ public class Chamfer3 extends ChamferDistanceTransform {
} }
@Override @Override
public void updateUnsignedChamferDistance3D(final float[][] map, final int width, final float planoLateralDistance, final float axioLateralDistance) { public void updateUnsignedChamferDistance3D(final float @NotNull [] @NotNull [] map, final int width, final float planoLateralDistance, final float axioLateralDistance) {
final double xy2 = planoLateralDistance * planoLateralDistance; final double xy2 = planoLateralDistance * planoLateralDistance;
final double xz2 = axioLateralDistance * axioLateralDistance; final double xz2 = axioLateralDistance * axioLateralDistance;
final float planoDiagonalDistance = (float) Math.sqrt(xy2 + xy2); final float planoDiagonalDistance = (float) Math.sqrt(xy2 + xy2);
......
/* /*
* Copyright (c) 2010-2023. Institut Pasteur. * Copyright (c) 2010-2024. Institut Pasteur.
* *
* This file is part of Icy. * This file is part of Icy.
* Icy is free software: you can redistribute it and/or modify * Icy is free software: you can redistribute it and/or modify
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
package plugins.adufour.distancetransforms; package plugins.adufour.distancetransforms;
import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
import org.jetbrains.annotations.NotNull;
/** /**
* Pseudo-Euclidean distance transform based on a two-pass sweeping algorithm using a 5x5 (in 2D) or * Pseudo-Euclidean distance transform based on a two-pass sweeping algorithm using a 5x5 (in 2D) or
* 5x5x5 (in 3D) chamfer mask. <br> * 5x5x5 (in 3D) chamfer mask. <br>
...@@ -40,9 +44,11 @@ package plugins.adufour.distancetransforms; ...@@ -40,9 +44,11 @@ package plugins.adufour.distancetransforms;
* *
* @author Alexandre Dufour * @author Alexandre Dufour
*/ */
@IcyPluginName("Chamfer 5")
@IcyPluginIcon(path = "/distance-transforms.png")
public class Chamfer5 extends ChamferDistanceTransform { public class Chamfer5 extends ChamferDistanceTransform {
@Override @Override
public void updateUnsignedChamferDistance2D(final float[] map, final int width, final float lateralDistance) { public void updateUnsignedChamferDistance2D(final float @NotNull [] map, final int width, final float lateralDistance) {
// pre-calculate distances // pre-calculate distances
final float a = lateralDistance; final float a = lateralDistance;
final float b = (float) Math.sqrt(a * a + a * a); final float b = (float) Math.sqrt(a * a + a * a);
...@@ -121,8 +127,9 @@ public class Chamfer5 extends ChamferDistanceTransform { ...@@ -121,8 +127,9 @@ public class Chamfer5 extends ChamferDistanceTransform {
} }
} }
// TODO: Make this method more simple
@Override @Override
public void updateUnsignedChamferDistance3D(final float[][] map, final int width, final float planarLateralDistance, final float axialLateralDistance) { public void updateUnsignedChamferDistance3D(final float @NotNull [] @NotNull [] map, final int width, final float planarLateralDistance, final float axialLateralDistance) {
// 2D distances // 2D distances
final float xySq = planarLateralDistance * planarLateralDistance; final float xySq = planarLateralDistance * planarLateralDistance;
final float b = (float) Math.sqrt(xySq + xySq); final float b = (float) Math.sqrt(xySq + xySq);
......
/* /*
* Copyright (c) 2010-2023. Institut Pasteur. * Copyright (c) 2010-2024. Institut Pasteur.
* *
* This file is part of Icy. * This file is part of Icy.
* Icy is free software: you can redistribute it and/or modify * Icy is free software: you can redistribute it and/or modify
...@@ -18,21 +18,18 @@ ...@@ -18,21 +18,18 @@
package plugins.adufour.distancetransforms; package plugins.adufour.distancetransforms;
import icy.common.Version; import org.bioimageanalysis.extension.kernel.roi.roi3d.ROI3DArea;
import icy.image.IcyBufferedImage; import org.bioimageanalysis.icy.common.collection.array.Array1DUtil;
import icy.main.Icy; import org.bioimageanalysis.icy.common.type.DataIteratorUtil;
import icy.roi.ROI; import org.bioimageanalysis.icy.common.type.DataType;
import icy.roi.ROI2D; import org.bioimageanalysis.icy.model.OMEUtil;
import icy.roi.ROI3D; import org.bioimageanalysis.icy.model.image.IcyBufferedImage;
import icy.sequence.Sequence; import org.bioimageanalysis.icy.model.roi.ROI;
import icy.sequence.SequenceDataIterator; import org.bioimageanalysis.icy.model.roi.ROI3D;
import icy.type.DataIteratorUtil; import org.bioimageanalysis.icy.model.sequence.Sequence;
import icy.type.DataType; import org.bioimageanalysis.icy.model.sequence.SequenceDataIterator;
import icy.type.collection.array.Array1DUtil; import org.jetbrains.annotations.NotNull;
import icy.util.OMEUtil;
import plugins.adufour.roi.mesh.ROI3DMesh; import plugins.adufour.roi.mesh.ROI3DMesh;
import plugins.kernel.roi.roi3d.ROI3DArea;
import plugins.kernel.roi.roi3d.ROI3DStack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
...@@ -41,12 +38,12 @@ import java.util.concurrent.Future; ...@@ -41,12 +38,12 @@ import java.util.concurrent.Future;
public abstract class ChamferDistanceTransform extends DistanceTransform { public abstract class ChamferDistanceTransform extends DistanceTransform {
@Override @Override
public Sequence createDistanceMap(final Sequence input, final int channel, final double threshold, final boolean invertMap, final boolean useRealUnits) { public Sequence createDistanceMap(final @NotNull Sequence input, final int channel, final double threshold, final boolean invertMap, final boolean useRealUnits) {
final int width = input.getSizeX(); final int width = input.getSizeX();
final int height = input.getSizeY(); final int height = input.getSizeY();
final int depth = input.getSizeZ(); final int depth = input.getSizeZ();
final int time = input.getSizeT(); final int time = input.getSizeT();
final DataType type = input.getDataType_(); final DataType type = input.getDataType();
final int maxDistance = width * height * depth; final int maxDistance = width * height * depth;
...@@ -92,7 +89,7 @@ public abstract class ChamferDistanceTransform extends DistanceTransform { ...@@ -92,7 +89,7 @@ public abstract class ChamferDistanceTransform extends DistanceTransform {
* @return sequence * @return sequence
*/ */
@Override @Override
public Sequence createDistanceMap(final Sequence sequence, final boolean mapOnlySelectedROI, final boolean invertMap, final boolean useRealUnits) throws InterruptedException { public Sequence createDistanceMap(final @NotNull Sequence sequence, final boolean mapOnlySelectedROI, final boolean invertMap, final boolean useRealUnits) throws InterruptedException {
final List<ROI> rois = mapOnlySelectedROI ? sequence.getSelectedROIs() : sequence.getROIs(); final List<ROI> rois = mapOnlySelectedROI ? sequence.getSelectedROIs() : sequence.getROIs();
String title = "Distance map "; String title = "Distance map ";
...@@ -121,17 +118,17 @@ public abstract class ChamferDistanceTransform extends DistanceTransform { ...@@ -121,17 +118,17 @@ public abstract class ChamferDistanceTransform extends DistanceTransform {
// Fill the ROI with the default distance // Fill the ROI with the default distance
// Warning: Icy <= 1.8.6 have an issue with the data iterator // Warning: Icy <= 1.8.6 have an issue with the data iterator
final Version patch = new Version(1, 8, 6); //final Version patch = new Version(1, 8, 6);
for (final ROI r : rois) { for (final ROI r : rois) {
if (Icy.version.isLowerOrEqual(patch) && r instanceof ROI3DStack) { /*if (Icy.VERSION.isLowerOrEqual(patch) && r instanceof final ROI3DStack<?> stack) {
final ROI3DStack<?> stack = (ROI3DStack<?>) r;
for (final ROI2D slice : stack) { for (final ROI2D slice : stack) {
final SequenceDataIterator iterator = new SequenceDataIterator(output, slice, true); final SequenceDataIterator iterator = new SequenceDataIterator(output, slice, true);
DataIteratorUtil.set(iterator, maxDistance); DataIteratorUtil.set(iterator, maxDistance);
} }
} }
else if (r instanceof ROI3DMesh) { else*/
if (r instanceof ROI3DMesh) {
final ROI3D rea = new ROI3DArea(((ROI3D) r).getBooleanMask(true)); final ROI3D rea = new ROI3DArea(((ROI3D) r).getBooleanMask(true));
rea.setC(((ROI3D) r).getC()); rea.setC(((ROI3D) r).getC());
rea.setT(((ROI3D) r).getT()); rea.setT(((ROI3D) r).getT());
...@@ -150,7 +147,7 @@ public abstract class ChamferDistanceTransform extends DistanceTransform { ...@@ -150,7 +147,7 @@ public abstract class ChamferDistanceTransform extends DistanceTransform {
return output; return output;
} }
private void updateUnsignedChamferDistance(final Sequence output, final boolean useRealUnits) { private void updateUnsignedChamferDistance(final @NotNull Sequence output, final boolean useRealUnits) {
final int width = output.getSizeX(); final int width = output.getSizeX();
final int length = output.getSizeT(); final int length = output.getSizeT();
......
/* /*
* Copyright (c) 2010-2023. Institut Pasteur. * Copyright (c) 2010-2024. Institut Pasteur.
* *
* This file is part of Icy. * This file is part of Icy.
* Icy is free software: you can redistribute it and/or modify * Icy is free software: you can redistribute it and/or modify
...@@ -18,14 +18,13 @@ ...@@ -18,14 +18,13 @@
package plugins.adufour.distancetransforms; package plugins.adufour.distancetransforms;
import icy.plugin.abstract_.Plugin; import org.bioimageanalysis.icy.extension.plugin.abstract_.Plugin;
import icy.plugin.interface_.PluginLibrary; import org.bioimageanalysis.icy.model.sequence.Sequence;
import icy.sequence.Sequence;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
public abstract class DistanceTransform extends Plugin implements PluginLibrary { public abstract class DistanceTransform extends Plugin {
protected static ExecutorService multiThreadService = Executors.newCachedThreadPool(); protected static ExecutorService multiThreadService = Executors.newCachedThreadPool();
/** /**
......
...@@ -18,7 +18,10 @@ ...@@ -18,7 +18,10 @@
package plugins.adufour.distancetransforms; package plugins.adufour.distancetransforms;
import icy.sequence.Sequence; import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
import org.bioimageanalysis.icy.model.sequence.Sequence;
import org.jetbrains.annotations.NotNull;
import plugins.adufour.blocks.lang.Block; import plugins.adufour.blocks.lang.Block;
import plugins.adufour.blocks.util.VarList; import plugins.adufour.blocks.util.VarList;
import plugins.adufour.ezplug.EzPlug; import plugins.adufour.ezplug.EzPlug;
...@@ -27,6 +30,8 @@ import plugins.adufour.ezplug.EzVarPlugin; ...@@ -27,6 +30,8 @@ import plugins.adufour.ezplug.EzVarPlugin;
import plugins.adufour.ezplug.EzVarSequence; import plugins.adufour.ezplug.EzVarSequence;
import plugins.adufour.vars.lang.VarSequence; import plugins.adufour.vars.lang.VarSequence;
@IcyPluginName("ROI to Distance Map")
@IcyPluginIcon(path = "/distance-transforms.png")
public class ROIToDistanceMap extends EzPlug implements Block { public class ROIToDistanceMap extends EzPlug implements Block {
EzVarSequence sequence = new EzVarSequence("Sequence"); EzVarSequence sequence = new EzVarSequence("Sequence");
...@@ -41,7 +46,7 @@ public class ROIToDistanceMap extends EzPlug implements Block { ...@@ -41,7 +46,7 @@ public class ROIToDistanceMap extends EzPlug implements Block {
VarSequence map = new VarSequence("Distance map", null); VarSequence map = new VarSequence("Distance map", null);
@Override @Override
public void declareInput(final VarList inputMap) { public void declareInput(final @NotNull VarList inputMap) {
inputMap.add("Use ROI from", sequence.getVariable()); inputMap.add("Use ROI from", sequence.getVariable());
inputMap.add("Algorithm", transform.getVariable()); inputMap.add("Algorithm", transform.getVariable());
inputMap.add("Invert map", invert.getVariable()); inputMap.add("Invert map", invert.getVariable());
...@@ -49,7 +54,7 @@ public class ROIToDistanceMap extends EzPlug implements Block { ...@@ -49,7 +54,7 @@ public class ROIToDistanceMap extends EzPlug implements Block {
} }
@Override @Override
public void declareOutput(final VarList outputMap) { public void declareOutput(final @NotNull VarList outputMap) {
outputMap.add("Distance map", map); outputMap.add("Distance map", map);
} }
...@@ -64,6 +69,7 @@ public class ROIToDistanceMap extends EzPlug implements Block { ...@@ -64,6 +69,7 @@ public class ROIToDistanceMap extends EzPlug implements Block {
setTimeDisplay(true); setTimeDisplay(true);
} }
@SuppressWarnings("resource")
@Override @Override
protected void execute() { protected void execute() {
try { try {
......
src/main/resources/distance-transforms.png

10.7 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment