Metashape Professional supports creating orthomosaic of a cylindrical surface. It helps to avoid severe distortions while projecting cylindrical objects, like tubes, round towers, tunnels, etc. 


We thank Mohamed Abdelaziz (Alexandria University, Egypt) for the provided data set for writing the article.


To project 3D points on a cylindrical surface one needs to 

  • define the cylinder, i.e. define its axis and its radius;
  • drop a perpendicular from the 3D point to the axis of the cylinder - the point of intersection of the perpendicular and the cylindrical surface is the projection of the 3D point in question;
  • agree on how to define x and y coordinates of a point on the cylinder.


For the purpose of orthomosaic and DEM generation in cylindrical projection Metashape define x and y coordinates of a point on the cylinder in the following way: x - along the curve in the zero-plane, y - along the zero-element of the cylindrical surface (zero-line), where zero-plane and zero-line are to be defined. Metashape offers four methods to perform projecting on cylindrical surfaces:


They differ in how the four core elements - cylinder axis and radius, zero-plane, and zero-line are defined. In this article, we will describe in more detail the construction stage for each of the items. For building orthomosaic you need to have a Mesh or DEM in chunks and save a project in .PSX format.


More than one instance of Orhomosaic can be stored in one chunk. In case you want to save current Orthomosaic instance and build new one a current chunk, right-click on Orthomosaic on the Workspace pane and uncheck Set as default option.


Current Region


The cylinder is inscribed in the Bounding box: the axis goes through the cross sign on the bottom side of the Bounding box perpendicular to the bottom plane; the radius is defined as one half of the shorter side of the rectangle in the bottom of the Bounding box. Zero-plane goes through the center of the Bounding box perpendicular to the axis; zero-line belongs to the Bounding box side which is opposite to the side with the vertical marks. 


1. Select the Build Orthomosaic... command from the Workflow menu (Workflow > Build Orthomosaic...).


2. In the Build Orthomosaic dialog window select projection type and parameters for building orthomosaic. 



Interior projection - option allows to switch to projecting on the inner surface of the cylinder


3. Click OK button when done. The progress dialog box will appear the current processing status. To cancel processing click Cancel button. 



Current View 


The axis is set as the line from the viewpoint to the center of rotation for the model. Radius is defined as one half of the shortest of all the edges of the Bounding box. Zero-plane goes through the center of rotation for the model perpendicular to the axis; zero-line goes through the highest point (in a monitor-related coordinate system) of the curve in the zero-plane.



1. Select the Build Orthomosaic... command from the Workflow menu (Workflow > Build Orthomosaic...).


2. In the Build Orthomosaic dialog window select projection type and parameters for building orthomosaic. 



3. Click OK button when done. The progress dialog box will appear the current processing status. To cancel processing click Cancel button. 



Markers 


At least three markers are required. The first pair sets the axis. The third marker defines zero-point, i.e. defines zero-plane and zero-line, on the condition that radius is the distance from the third marker to the axis. 



To specify the axis using the markers, place them on the model using the tool to add markers. To set the axis, you need to use 2 markers and 1 marker you need to specify a projection origin. 


There are cases when one marker can be located in space instead of on the point cloud. To add such a marker, first put the first point that will set the axis on the model and the knowing the coordinates of the point, create a second point. Knowing which axis the point will be shifted along (for example axis - Z), manually specify the coordinate along this axis in the Reference pane, the rest will coincide with the previous point. To change the coordinates, double-click in the corresponding coordinates field and enter a value. 



1. Select the Build Orthomosaic... command from the Workflow menu (Workflow > Build Orthomosaic...).


2. In the Build Orthomosaic dialog window select projection type and parameters for building orthomosaic. 



3. Click OK button when done. The progress dialog box will appear the current processing status. To cancel processing click Cancel button. 



X/Y/Z


The axis is the line parallel to the corresponding Cartesian axis - X/Y/Z, going through the center of the Bounding box. Radius (r) is defined as one half of the shortest edge of the Bounding box. Zero-plane goes through the center of the Bounding box perpendicular to the axis; zero-line is the line opposite to the cut line. The cut line definition for each of the three possible options is illustrated on the Figure below:

1. Select the Build Orthomosaic... command from the Workflow menu (Workflow > Build Orthomosaic...).


2. In the Build Orthomosaic dialog window select projection type (for example we chosen axis Y) and parameters for building orthomosaic. 



3. Click OK button when done. The progress dialog box will appear the current processing status. To cancel processing click Cancel button.