Skip to content

Commit ea11bed

Browse files
committed
[panorama] added docs
1 parent 66ca477 commit ea11bed

File tree

7 files changed

+140
-1
lines changed

7 files changed

+140
-1
lines changed
105 KB
Loading

docs/commands/panorama/index.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
:icon: material/panorama-variant-outline
2+
3+
Panorama
4+
========
5+
6+
For documentation purposes it might be useful to have an image of the measured
7+
area with the measured points annotated. Total stations with integrated cameras
8+
usually have a panorama capture on-board program, but it provides to way to
9+
annotate the recorded points.
10+
11+
The panorama commands provide a way to capture frames of a panorama, and
12+
merge them together with optional point annotations.
13+
14+
.. toctree::
15+
:maxdepth: 1
16+
17+
measure
18+
process

docs/commands/panorama/measure.rst

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
Measuring
2+
=========
3+
4+
To create a panorama image from different images taken from a common center
5+
point, the orientatiobs of the images have to be known among other camera
6+
properties. The necessary data can be derived from independent calibration and
7+
screenshots during the on-board panorama program.
8+
9+
To simplify the process, this command can be used to capture images with the
10+
necessary metadata automatically being recorded as reported by the instrument.
11+
12+
Requirements
13+
------------
14+
15+
- GeoCom capable robotic total station with overview camera and imaging license
16+
17+
Positions
18+
---------
19+
20+
The program takes images in a region defined by a horizontal and vertical angle
21+
range. Two convenience settings exists (in addition to the default), that
22+
reduce the number of angle inputs needed for specific cases:
23+
24+
- region: horizontal and vertical range is required (this is the default)
25+
- strip: 360 degree horizontal coverage with given vertical range
26+
- sphere: complete spherical panorama
27+
28+
.. note::
29+
30+
The complete sphere panorama is very practical, and more of a proof of
31+
concept, as capturing the full view takes impractically long time.
32+
33+
Images that are taken at angles that deviate from the horizontal position
34+
cover a wider horizontal angle area. To avoid taking unnecessary images, the
35+
top and bottom rows have fewer images.
36+
37+
.. image:: image_positions.png
38+
39+
Examples
40+
--------
41+
42+
.. code-block:: shell
43+
:caption: Capturing panorama with interactive region definition and default settings
44+
45+
iman capture panorama COM1 metadata.json
46+
47+
.. code-block:: shell
48+
:caption: Capturing full sphere panorama with custom file prefix
49+
50+
iman capture panorama --shape sphere --prefix panosphere_ COM1 metadata.json
51+
52+
.. code-block:: shell
53+
:caption: Capturing predefined 360 panorama strip
54+
55+
iman capture panorama --strip strip --vertical 70-00-00 110-00-00 COM1 metadata.json
56+
57+
Usage
58+
-----
59+
60+
.. click:: instrumentman.panorama:cli_measure
61+
:prog: iman capture panorama

docs/commands/panorama/process.rst

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
Processing
2+
==========
3+
4+
.. caution::
5+
:class: warning
6+
7+
The panorama image processing requires extra dependencies.
8+
9+
- opencv-python
10+
11+
Install them manually, or install instrumentman with the 'panorama' extra:
12+
13+
.. code-block:: shell
14+
15+
python -m pip install instrumentman[panorama]
16+
17+
The processing command can be used to merge individual frames of a panorama
18+
capture into a single image, and optionally annotate points on it.
19+
20+
The accuracy of the annotation is usually a few centimeters.
21+
22+
Requirements
23+
------------
24+
25+
- Image metadata JSON file
26+
- Images downloaded from the instrument
27+
28+
Examples
29+
--------
30+
31+
.. code-block:: shell
32+
:caption: Merging images
33+
34+
iman process panorama metadata.json merged_panorama.jpg panorama*.jpg
35+
36+
37+
.. code-block:: shell
38+
:caption: Merging images and annotating points
39+
40+
iman process panorama --annotate points.csv --fontsize 50 metadata.json merged_panorama.jpg panorama*.jpg
41+
42+
.. code-block:: shell
43+
:caption: Merging full sphere panorama with downscaling to fit into OpenCV limits
44+
45+
iman process panorama --scale 2000 metadata.json merged_panorama.jpg panorama*.jpg
46+
47+
.. code-block:: text
48+
:caption: Example points file for annotations (with the optional label column present)
49+
50+
P0001,1.0,1.0,0.0,BENCHMARK
51+
P0002,1.0,2.0,1.0,BENCHMARK
52+
P0003,1.0,2.0,3.0,TOPO
53+
54+
Usage
55+
-----
56+
57+
.. click:: instrumentman.panorama:cli_process
58+
:prog: iman process panorama

docs/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Content
4141
commands/targets/index
4242
commands/sets/index
4343
commands/inclination/index
44+
commands/panorama/index
4445
commands/protocoltest/index
4546
commands/files/index
4647
commands/data/index

docs/latexindex.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Applications
2626
commands/targets/index
2727
commands/sets/index
2828
commands/inclination/index
29+
commands/panorama/index
2930
commands/protocoltest/index
3031
commands/files/index
3132
commands/data/index

src/instrumentman/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def cli(
107107
)
108108

109109

110-
@cli.group("measure") # type: ignore[misc]
110+
@cli.group("measure", aliases=["capture"]) # type: ignore[misc]
111111
def cli_measure() -> None:
112112
"""Conduct measurements."""
113113

0 commit comments

Comments
 (0)