Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/proofreading/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ WEBKNOSSOS offers several ways for proofreading large-scale, volumetric segmenta

There are three proofreading workflows supported by WEBKNOSSOS:

1. The [Proofreading tool](proofreading_tool.md) to correct split and merge errors in large segmentations based on an underlying super-voxel graph. To use the proofreading tool, you need a [segmentation mapping](segmentation_mappings.md).
1. The [Proofreading tool](proofreading_tool.md) to correct split and merge errors in large segmentations based on an underlying supervoxel graph. To use the proofreading tool, you need a [segmentation mapping](segmentation_mappings.md).
2. The [Merger-Mode tool](merger_mode.md) which allows merging of segments by constructing a lightweight skeleton-based mapping.
3. Voxel-based relabeling of segments. Segments can be merged using the fill tool. To split segments there is a dedicated [Split Segments toolkit](split_segments_toolkit.md).
3. Voxel-based relabeling of segments. Segments can be merged using the fill tool. To split segments there is a dedicated [Split Segments toolkit](split_segments_toolkit.md).
12 changes: 6 additions & 6 deletions docs/proofreading/proofreading_tool.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Proofreading Tool

The proofreading tool enables users to fix merge and split errors in a segmentation generated from an automated workflow (outside of WEBKNOSSOS), e.g. from a machine learning system such as [Voxelytics](https://voxelytics.com). Split and merge operations are directly executed on the underlying [super-voxel graph structure](../terminology.md#agglomerates) of a segmentation.
The proofreading tool enables users to fix merge and split errors in a segmentation generated from an automated workflow (outside of WEBKNOSSOS), e.g. from a machine learning system such as [Voxelytics](https://voxelytics.com). Split and merge operations are directly executed on the underlying [supervoxel graph structure](../terminology.md#agglomerates) of a segmentation.

Watch this video to get started with the proofreading tools:
![youtube-video](https://www.youtube.com/embed/h_paTLAIIwY)

To use the proofreading tool you need to enable an [ID mapping for your segmentation](./segmentation_mappings.md) to load the super-voxel graph. Once, WEBKNOSSOS detects this the proofreading tool can be activated on the toolbar (clipboard icon):
To use the proofreading tool you need to enable an [ID mapping for your segmentation](./segmentation_mappings.md) to load the supervoxel graph. Once, WEBKNOSSOS detects this the proofreading tool can be activated on the toolbar (clipboard icon):

1. Select an ID mapping for a segmentation layer from the left-hand side panel
2. From the toolbar, switch to the proofreading tool (clipboard icon)
3. [Optional] Shift + middle-click on any segment to load and display its super-voxel graph
3. [Optional] Shift + middle-click on any segment to load and display its supervoxel graph
4. Proceed to fix split and merge errors:

## Fixing Split Errors
Expand All @@ -22,14 +22,14 @@ To use the proofreading tool you need to enable an [ID mapping for your segmenta

1. Left-click on any part of the source segment. It will be marked with a white crosshair
2. Right-click on the part of the source segment that you would like to split off to bring up the context menu. Select `Split from active segment (Min-Cut)`
3. WEBKNOSSOS will perform a min-cut operation to delete all super-voxel graph edges between the source and target segments, effectively splitting the two into individual segments
3. WEBKNOSSOS will perform a min-cut operation to delete all supervoxel graph edges between the source and target segments, effectively splitting the two into individual segments
4. WEBKNOSSOS will split both segments and reload the updated segmentation and 3D meshes

Note, the proofreading operations rely directly on the information and quality of an initial over-segmentation. If cells/segments are already erroneously connected in this state, then WEBKNOSSOS cannot split them apart (this might change in the future, though).

If case you want to reload, hide or remove a 3D mesh during proofreading, you can use the context menu in the 3D viewport by hovering the mesh. You can enable and disable the automatic mesh loading by toggling the respective button in the toolbar, right of the proofreading tool button.

In addition to the handy shortcuts available from the right-click context menu, users can also directly modify the super-voxel graph like any other skeleton to manually add/remove nodes and edges for fine-grained control.
In addition to the handy shortcuts available from the right-click context menu, users can also directly modify the supervoxel graph like any other skeleton to manually add/remove nodes and edges for fine-grained control.

!!!info
The proofreading tool requires a super-voxel graph representation of a segmentation to work. At this time, these can only be obtained from the [Voxelytics AI segmentation pipeline](https://voxelytics.com). We are actively working to make this available for more users, so please reach out to us to get you started and provide feedback: [hello@webknossos.org](mailto:hello@webknossos.org)
The proofreading tool requires a supervoxel graph representation of a segmentation to work. At this time, these can only be obtained from the [Voxelytics AI segmentation pipeline](https://voxelytics.com). We are actively working to make this available for more users, so please reach out to us to get you started and provide feedback: [hello@webknossos.org](mailto:hello@webknossos.org)
2 changes: 1 addition & 1 deletion docs/terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ Typically, many segments make up a segmentation. Segments can be painted manuall

## Agglomerates
An agglomerate is the combination of several (smaller) segments to reconstruct a larger biological structure. Typically an agglomerate combines the fragments of an over-segmentation created by some automated method, e.g. a machine learning system.
Sometimes this is also referred to as a super-voxel graph.
Sometimes this is also referred to as a supervoxel graph.
2 changes: 1 addition & 1 deletion docs/volume_annotation/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Volume annotation in WEBKNOSSOS allows you to label and segment 3D structures in
The AI mode works across various imaging modalities and can significantly speed up annotation workflows. See the [Quick-select tool](#quick-select-tool) section for detailed usage.

![Proofreading Tool](../ui/images/proofreading-tool.jpg){align=left width="60"}
**Proofreading**: Fix merge and split errors in automated segmentations using the underlying super-voxel graph by combining and breaking apart segments. Read more about [proofreading](../proofreading/proofreading_tool.md).
**Proofreading**: Fix merge and split errors in automated segmentations using the underlying supervoxel graph by combining and breaking apart segments. Read more about [proofreading](../proofreading/proofreading_tool.md).


In the [Segments tab](./segments_list.md) on the right-hand side panel, you can find all segment IDs which are available in your annotation. You can rename and organize segments as needed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1131,9 +1131,9 @@ export class ProofreadToolController {
if (isTDViewportActive) {
let maybeLeftClick: Partial<ActionDescriptor> = {};
if (shiftKey) {
maybeLeftClick.leftClick = "Jump to point";
maybeLeftClick.leftClick = "Jump to Point";
} else if (ctrlOrMetaKey) {
maybeLeftClick.leftClick = "Activate super-voxel";
maybeLeftClick.leftClick = "Activate Supervoxel";
}

return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1628,7 +1628,7 @@ function* gatherInfoForOperation(
// The action was triggered via a data viewport (not 3D). In this case,
// the active segment's position can be used as a source.
if (activeUnmappedSegmentId != null) {
// The user has selected a super-voxel in the 3D viewport and then clicked
// The user has selected a supervoxel in the 3D viewport and then clicked
// in a data viewport to select the second merge partner. However, this mix
// is currently not supported.
Toast.warning(MISSING_INFORMATION_WARNING);
Expand All @@ -1655,7 +1655,7 @@ function* gatherInfoForOperation(

// The action was triggered in the 3D viewport. In this case, we don't have
// a mouse position and also the active segment position isn't necessarily
// a position of the clicked super-voxel.
// a position of the clicked supervoxel.
if (
action.agglomerateId == null ||
activeCellId == null ||
Expand Down Expand Up @@ -1687,7 +1687,7 @@ function* gatherInfoForOperation(
} else {
// When splitting two segments, we don't really have reliable positions at hand.
// For the source position, we cannot rely on the active segment position, because
// the active super-voxel doesn't necessarily match the last click position within
// the active supervoxel doesn't necessarily match the last click position within
// the data viewports.
// For the target position, we also don't have reliable information available.
[sourcePosition, targetPosition] = yield* all([
Expand Down
2 changes: 1 addition & 1 deletion frontend/javascripts/viewer/shaders/segmentation.glsl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ export const getSegmentationAlphaIncrement: ShaderModule = {
if (isProofreading) {
if (isActiveCell) {
return (isHoveredUnmappedSegment
? 0.4 // Highlight the hovered super-voxel of the active segment
? 0.4 // Highlight the hovered supervoxel of the active segment
: (isHoveredSegment
? 0.15 // Highlight the not-hovered super-voxels of the hovered segment
: 0.0
Expand Down
4 changes: 2 additions & 2 deletions frontend/javascripts/viewer/view/context_menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ function getMeshItems(
? `within Segment ${clickedMeshId}`
: clickedMeshId;
const segmentOrSuperVoxel =
isProofreadingActive && maybeUnmappedSegmentId != null ? "Super-Voxel" : "Segment";
isProofreadingActive && maybeUnmappedSegmentId != null ? "Supervoxel" : "Segment";

const proofreadingMultiSplitToolActions =
isProofreadingActive && isMultiSplitActive && minCutPartitions && maybeUnmappedSegmentId != null
Expand Down Expand Up @@ -1040,7 +1040,7 @@ function getNoNodeContextMenuOptions(props: NoNodeContextMenuProps): ItemType[]
? `within Segment ${maybeUnmappedSegmentId}`
: segmentIdAtPosition;
const segmentOrSuperVoxel =
isProofreadingActive && maybeUnmappedSegmentId != null ? "Super-Voxel" : "Segment";
isProofreadingActive && maybeUnmappedSegmentId != null ? "Supervoxel" : "Segment";
Store.dispatch(maybeFetchMeshFilesAction(visibleSegmentationLayer, dataset, false));

const loadPrecomputedMesh = async () => {
Expand Down
2 changes: 1 addition & 1 deletion frontend/javascripts/viewer/view/plane_view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ class PlaneView {
return null;
}
// If the proofreading tool is not active, pretend that
// activeUnmappedSegmentId is null so that no super-voxel
// activeUnmappedSegmentId is null so that no supervoxel
// is highlighted.
return storeState.uiInformation.activeTool === AnnotationTool.PROOFREAD
? segmentationTracing.activeUnmappedSegmentId
Expand Down
2 changes: 2 additions & 0 deletions unreleased_changes/8952.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
### Fixed
- Fixed spelling of super-voxel to supervoxel.