An annotation is ROI inside an image. It can be a polygon, multipolygon, point,...
Different kinds of data can be added to an annotation:
- Terms from the project ontology,
- AttachedFile (no UI for that now)
Package main classes
An abstract class storing properties for all annotation types.
The project property is redundant (project = image.project) for perf reason.
|UserAnnotation||An annotation created by a "human" user.|
It can be an annotation created from the web interface (draw) or added from a client with user credential
|AlgoAnnotation||An annotation created by a "software" user.|
Usually an annotation created by an algorithm.
|ReviewedAnnotation||A user/software annotation that has been reviewed by a user.|
This create a copy of the annotation (that the user can modify).
Properties parentIdent and parentClassName are usefull to keep a link the the annotation that has been reviewed.
The user can draw an annotation using the toolbox or using a client an a WKT location (ex: POLYGON (( x y ,....))).
One of the key feature is the ability to add a term to an annotation. See Package Ontology page.
Each annotation is simplify before the insert. An algorithm in SimplifyGeometryService reduce the number of point in the polygon.
An image may contains a lot of annotations. Some algorithm (e.g. cell detector) can add millions of annotation. The web client / browser cannot show all these annotations.
We use two method to deals with big amount of annotations:
- clustering: when you explore an image, you only get from the server the visible annotations. The web client will not ask all annotation on the visible layer(s). The request area is bigger than the screen view to provide a kind of cache if the user move.
- k-means: when you are at the min zoom leven, you see the full image and need the full annotations set (clustering is useless).
Zoom out, k-means is enabled and you only see big polygon with the number of annotation inside
Zoom in, k-means in disabled and you only get the annotation set inside the screen area (+ overflow)