@@ -406,7 +406,8 @@ public static < B extends BooleanType< B >, C extends RealComposite< B >, L exte
406406 final UnionFind uf ,
407407 final long firstIndex )
408408 {
409- final ExtendedRandomAccessibleInterval < L , RandomAccessibleInterval < L > > extendedLabeling = Views .extendValue ( labeling , Util .getTypeFromInterval ( labeling ).createVariable () );
409+ final ExtendedRandomAccessibleInterval < L , RandomAccessibleInterval < L > > extendedLabeling =
410+ Views .extendValue ( labeling , Util .getTypeFromInterval ( labeling ).createVariable () );
410411
411412 /* populate labeling with index */
412413 long index = firstIndex ;
@@ -418,7 +419,13 @@ public static < B extends BooleanType< B >, C extends RealComposite< B >, L exte
418419
419420 @ SuppressWarnings ( "unchecked" )
420421 final Cursor < L >[] offsetLabelingCursors = new Cursor [ affinityOffsets .length ];
421- Arrays .setAll ( offsetLabelingCursors , i -> Views .flatIterable ( Views .interval ( Views .offset ( extendedLabeling , affinityOffsets [ i ] ), labeling ) ).cursor () );
422+ Arrays .setAll ( offsetLabelingCursors , i -> Views .flatIterable (
423+ Views .interval (
424+ Views .offset (
425+ extendedLabeling ,
426+ affinityOffsets [ i ] ),
427+ labeling ) )
428+ .cursor () );
422429
423430 final Cursor < L > target = Views .flatIterable ( labeling ).cursor ();
424431 final Cursor < C > affinitiesCursor = Views .flatIterable ( Views .interval ( affinities , labeling ) ).cursor ();
@@ -427,7 +434,7 @@ public static < B extends BooleanType< B >, C extends RealComposite< B >, L exte
427434 {
428435 final C affinitiesVector = affinitiesCursor .next ();
429436 final L targetLabel = target .next ();
430- final long labelId = uf .findRoot ( targetLabel .getIntegerLong () );
437+ long labelId = uf .findRoot ( targetLabel .getIntegerLong () );
431438
432439 for ( int i = 0 ; i < affinityOffsets .length ; ++i )
433440 {
@@ -436,7 +443,11 @@ public static < B extends BooleanType< B >, C extends RealComposite< B >, L exte
436443 {
437444 final long otherLabelId = uf .findRoot ( offsetLabelingCursors [ i ].get ().getIntegerLong () );
438445 if ( labelId != otherLabelId )
446+ {
439447 uf .join ( labelId , otherLabelId );
448+ if ( i + 1 < affinityOffsets .length )
449+ labelId = uf .findRoot ( targetLabel .getIntegerLong () );
450+ }
440451 }
441452 }
442453 }
0 commit comments