Skip to content

Commit 710c708

Browse files
committed
connected component analysis update labelId
1 parent 352fa0e commit 710c708

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/main/java/net/imglib2/algorithm/labeling/ConnectedComponentAnalysis.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)