Skip to content

Commit 17e7ba5

Browse files
committed
2 parents c05b691 + 55e35df commit 17e7ba5

17 files changed

+246
-285
lines changed

pom.xml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
<parent>
66
<groupId>org.scijava</groupId>
77
<artifactId>pom-scijava</artifactId>
8-
<version>38.0.1</version>
8+
<version>39.0.0</version>
99
<relativePath />
1010
</parent>
1111

1212
<groupId>sc.fiji</groupId>
1313
<artifactId>bigdataviewer-playground</artifactId>
14-
<version>0.10.7-SNAPSHOT</version>
14+
<version>0.10.8-SNAPSHOT</version>
1515

1616
<name>bigdataviewer-playground</name>
1717
<description>BigDataViewer Actions and GUI</description>
@@ -121,8 +121,9 @@
121121

122122
<!-- package version below are not present in the parent pom. A version is needed -->
123123
<bigdataviewer-selector.version>0.2.7</bigdataviewer-selector.version>
124-
<bigvolumeviewer.version>0.3.3</bigvolumeviewer.version>
124+
<bigvolumeviewer.version>0.3.4</bigvolumeviewer.version>
125125
<reflections.version>0.10.2</reflections.version> <!-- for test only -->
126+
<!--<spim_data.version>2.3.4</spim_data.version>-->
126127

127128
<!-- package version below are determined by the parent pom but need to be upgraded or temporarily fixed for bugs -->
128129

@@ -174,6 +175,12 @@
174175
<version>${imglib2-realtransform.version}</version>
175176
</dependency>
176177

178+
<dependency>
179+
<groupId>sc.fiji</groupId>
180+
<artifactId>spim_data</artifactId>
181+
<version>${spim_data.version}</version>
182+
</dependency>
183+
177184
<dependency>
178185
<groupId>sc.fiji</groupId>
179186
<artifactId>bigwarp_fiji</artifactId>

src/main/java/bdv/util/Procedural3DImageShort.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ public RealRandomAccessible<UnsignedShortType> getRRA() {
8686

8787
return new RealRandomAccessible<UnsignedShortType>() {
8888

89+
@Override
90+
public UnsignedShortType getType() {
91+
return new UnsignedShortType();
92+
}
93+
8994
@Override
9095
public RealRandomAccess<UnsignedShortType> realRandomAccess() {
9196
return copy();

src/main/java/sc/fiji/bdvpg/bdv/ManualRegistrationStarter.java

Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import bdv.viewer.SourceAndConverter;
3535
import net.imglib2.realtransform.AffineTransform3D;
3636
import bdv.viewer.TransformListener;
37-
import org.scijava.vecmath.Point3d;
3837
import sc.fiji.bdvpg.services.SourceAndConverterServices;
3938
import sc.fiji.bdvpg.sourceandconverter.transform.SourceAffineTransformer;
4039

@@ -221,58 +220,65 @@ public static AffineTransform3D ensureOrthoNormalTransform(
221220
correctedAffineTransform.set(at3D);
222221

223222
// Gets three vectors
224-
Point3d v1 = new Point3d(at3D.get(0, 0), at3D.get(0, 1), at3D.get(0, 2));
225-
Point3d v2 = new Point3d(at3D.get(1, 0), at3D.get(1, 1), at3D.get(1, 2));
223+
double v1x = at3D.get(0, 0);
224+
double v1y = at3D.get(0, 1);
225+
double v1z = at3D.get(0, 2);
226+
227+
double v2x = at3D.get(1, 0);
228+
double v2y = at3D.get(1, 1);
229+
double v2z = at3D.get(1,2);
226230

227231
// 0 - Ensure v1 and v2 have the same norm
228-
double normv1 = Math.sqrt(v1.x * v1.x + v1.y * v1.y + v1.z * v1.z);
229-
double normv2 = Math.sqrt(v2.x * v2.x + v2.y * v2.y + v2.z * v2.z);
232+
double normv1 = Math.sqrt(v1x * v1x + v1y * v1y + v1z * v1z);
233+
double normv2 = Math.sqrt(v2x * v2x + v2y * v2y + v2z * v2z);
230234

231235
// If v1 and v2 do not have the same norm
232236
if (Math.abs(normv1 - normv2) / normv1 > 1e-10) {
233237
// We make v2 having the norm of v1
234-
v2.x = v2.x / normv2 * normv1;
235-
v2.y = v2.y / normv2 * normv1;
236-
v2.z = v2.z / normv2 * normv1;
238+
v2x = v2x / normv2 * normv1;
239+
v2y = v2y / normv2 * normv1;
240+
v2z = v2z / normv2 * normv1;
237241

238-
correctedAffineTransform.set(v2.x, 1, 0);
239-
correctedAffineTransform.set(v2.y, 1, 1);
240-
correctedAffineTransform.set(v2.z, 1, 2);
242+
correctedAffineTransform.set(v2x, 1, 0);
243+
correctedAffineTransform.set(v2y, 1, 1);
244+
correctedAffineTransform.set(v2z, 1, 2);
241245
}
242246

243247
// 1 - Ensure v1 and v2 are perpendicular
244248

245-
if (Math.abs(v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) / (normv1 *
249+
if (Math.abs(v1x * v2x + v1y * v2y + v1z * v2z) / (normv1 *
246250
normv2) > (1e-10))
247251
{
248252
// v1 and v2 not perpendicular enough
249253
// Compute the projection of v1 onto v2
250-
Point3d u1 = new Point3d(v1.x / normv1, v1.y / normv1, v1.z / normv1);
251-
double dotProductNormalized = (u1.x * v2.x + u1.y * v2.y + u1.z * v2.z);
252-
v2.x = v2.x - dotProductNormalized * u1.x;
253-
v2.y = v2.y - dotProductNormalized * u1.y;
254-
v2.z = v2.z - dotProductNormalized * u1.z;
255-
256-
normv2 = Math.sqrt(v2.x * v2.x + v2.y * v2.y + v2.z * v2.z);
257-
v2.x = v2.x / normv2 * normv1;
258-
v2.y = v2.y / normv2 * normv1;
259-
v2.z = v2.z / normv2 * normv1;
260-
261-
correctedAffineTransform.set(v2.x, 1, 0);
262-
correctedAffineTransform.set(v2.y, 1, 1);
263-
correctedAffineTransform.set(v2.z, 1, 2);
254+
double u1x = v1x / normv1;
255+
double u1y = v1y / normv1;
256+
double u1z = v1z / normv1;
257+
double dotProductNormalized = (u1x * v2x + u1y * v2y + u1z * v2z);
258+
v2x = v2x - dotProductNormalized * u1x;
259+
v2y = v2y - dotProductNormalized * u1y;
260+
v2z = v2z - dotProductNormalized * u1z;
261+
262+
normv2 = Math.sqrt(v2x * v2x + v2y * v2y + v2z * v2z);
263+
v2x = v2x / normv2 * normv1;
264+
v2y = v2y / normv2 * normv1;
265+
v2z = v2z / normv2 * normv1;
266+
267+
correctedAffineTransform.set(v2x, 1, 0);
268+
correctedAffineTransform.set(v2y, 1, 1);
269+
correctedAffineTransform.set(v2z, 1, 2);
264270
}
265271

266272
// 2 - We now set v3 as the cross product of v1 and v2, no matter what
267-
double xr = (v1.y * v2.z - v1.z * v2.y) / normv1;
268-
double yr = (v1.z * v2.x - v1.x * v2.z) / normv1;
269-
double zr = (v1.x * v2.y - v1.y * v2.x) / normv1;
273+
double xr = (v1y * v2z - v1z * v2y) / normv1;
274+
double yr = (v1z * v2x - v1x * v2z) / normv1;
275+
double zr = (v1x * v2y - v1y * v2x) / normv1;
270276

271-
Point3d v3orthonormal = new Point3d(xr, yr, zr);
277+
//double v3orthonormal = new Point3d(xr, yr, zr);
272278

273-
correctedAffineTransform.set(v3orthonormal.x, 2, 0);
274-
correctedAffineTransform.set(v3orthonormal.y, 2, 1);
275-
correctedAffineTransform.set(v3orthonormal.z, 2, 2);
279+
correctedAffineTransform.set(xr, 2, 0);
280+
correctedAffineTransform.set(yr, 2, 1);
281+
correctedAffineTransform.set(zr, 2, 2);
276282

277283
return correctedAffineTransform;
278284

src/main/java/sc/fiji/bdvpg/sourceandconverter/SourceAndConverterHelper.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import net.imglib2.type.numeric.RealType;
6060
import net.imglib2.type.volatiles.VolatileARGBType;
6161
import net.imglib2.util.Intervals;
62-
import org.scijava.vecmath.Point3d;
6362
import org.slf4j.Logger;
6463
import org.slf4j.LoggerFactory;
6564
import sc.fiji.bdvpg.bdv.BdvHandleHelper;
@@ -946,17 +945,20 @@ public static double getCharacteristicVoxelSize(
946945
AffineTransform3D sourceTransform)
947946
{ // method also present in resampled source
948947
// Gets three vectors
949-
Point3d v1 = new Point3d(sourceTransform.get(0, 0), sourceTransform.get(0,
950-
1), sourceTransform.get(0, 2));
951-
Point3d v2 = new Point3d(sourceTransform.get(1, 0), sourceTransform.get(1,
952-
1), sourceTransform.get(1, 2));
953-
Point3d v3 = new Point3d(sourceTransform.get(2, 0), sourceTransform.get(2,
954-
1), sourceTransform.get(2, 2));
948+
double v1x = sourceTransform.get(0, 0);
949+
double v1y = sourceTransform.get(0, 1);
950+
double v1z = sourceTransform.get(0, 2);
951+
double v2x = sourceTransform.get(1, 0);
952+
double v2y = sourceTransform.get(1, 1);
953+
double v2z = sourceTransform.get(1, 2);
954+
double v3x = sourceTransform.get(2, 0);
955+
double v3y = sourceTransform.get(2, 1);
956+
double v3z = sourceTransform.get(2, 2);
955957

956958
// 0 - Ensure v1 and v2 have the same norm
957-
double a = Math.sqrt(v1.x * v1.x + v1.y * v1.y + v1.z * v1.z);
958-
double b = Math.sqrt(v2.x * v2.x + v2.y * v2.y + v2.z * v2.z);
959-
double c = Math.sqrt(v3.x * v3.x + v3.y * v3.y + v3.z * v3.z);
959+
double a = Math.sqrt(v1x * v1x + v1y * v1y + v1z * v1z);
960+
double b = Math.sqrt(v2x * v2x + v2y * v2y + v2z * v2z);
961+
double c = Math.sqrt(v3x * v3x + v3y * v3y + v3z * v3z);
960962

961963
return Math.max(Math.min(a, b), Math.min(Math.max(a, b), c)); // https://stackoverflow.com/questions/1582356/fastest-way-of-finding-the-middle-value-of-a-triple
962964
}

src/main/java/sc/fiji/bdvpg/sourceandconverter/importer/VoronoiSourceGetter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ public static RandomAccessibleInterval<FloatType> getVoronoiTestLabelImage(
122122
randomAccessible, interval);
123123

124124
if (copyImg) {
125-
final ArrayImg<FloatType, ?> labelImageCopy = new ArrayImgFactory(Util
126-
.getTypeFromInterval(labelImage)).create(labelImage);
125+
final ArrayImg<FloatType, ?> labelImageCopy = new ArrayImgFactory(labelImage.getType()).create(labelImage);
127126

128127
// Image copied to avoid computing it on the fly
129128
// https://github.com/imglib/imglib2-algorithm/blob/47cd6ed5c97cca4b316c92d4d3260086a335544d/src/main/java/net/imglib2/algorithm/util/Grids.java#L221

0 commit comments

Comments
 (0)