Skip to content

Provide manual selection groups of neigbouring CCs #14

@apsexton

Description

@apsexton

This feature is to support manual selection of groups of neighbouring CCs so that they can (in a future task) be labelled.

Efficient ground truth labelling of connected components requires minimal switches between keyboard and mouse use. CCs on the screen image need to be selected so that they can be labelled with the characters they represent. However, characters are often broken so that the character really appears as two or more connected components. Sometimes two or more different characters touch in the image, so that there is only a single CC for more than one character.

Implement a way to have a "current selection group": this should be a list of the selected CCs. All selected CCs should be drawn on the image in a different colour to distinguish them from the non-selected CCs. Selecting a CC or a group of CCs simply means adding them to the current selection group.

The following is a suggestion but alternative approaches that provide similar functionality can be considered:

Using the keyboard:

If the selection group is empty, using an arrow key will select a CC in a corresponding corner (right=top right, up=top left, left = bottom left, down = bottom down). If the selection group is not empty, then it selects the next possible CC in the corresponding direction. The selection group can be extended by using shift-arrow to add the next possible CC in the corresponding direction to the selection group. Control-arrow can reduce the selection by removing the CC currently in the selection group that is furthest in the corresponding direction.

Using the mouse:

dragging should select those CCs that intersect the dragged out area. Clicking or dragging replaces the existing selection with the new selection. Shift clicking or shift dragging should add the new CCs to the existing selection. Control clicking or control dragging should toggle membership of the newly selected items in the existing selection (adds them if they were not already in it, removes them if they were in it).

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions