Tapas

De MicMac
Révision de 15 avril 2024 à 09:31 par Zarg (discussion | contributions) (ForCalib doc update)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Picto-liste.png List of commands

Description

Tapas is a tool offering most of the posssibilities of Apero for computing purely relative orientations

Syntax

The global syntax for Tapas is

mm3d Tapas ModeCalib NamedArgs

Allowed commands

This allowed commands, correspond to the distorsion model you want to use :

  • RadialBasic : for Classic Lens
  • RadialStd : for Classic Lens
  • RadialExtended : Classic Lens with extra distorsion parameters.
  • FraserBasic
  • Fraser
  • FishEyeEqui : for FishEye Lens
  • FE_EquiSolBasic
  • FishEyeBasic
  • FishEyeStereo
  • Four
  • AddFour
  • AddPolyDeg
  • Ebner
  • Brown
  • AutoCal
  • Figee
  • HemiEqui

Description

Description of the basic distortion models easily accessible in MicMac
Command PPA/PPS Polynomial correction Decentric/Affine correction Number of parameters to estimate
RadialBasic
Equals
r³, r⁵, r⁷
No
5
RadialStd
Different
r³, r⁵, r⁷
No
8
RadialExtended
Different
r³, r⁵, r⁷, r⁹, r¹¹
No
10
FraserBasic
Equals
r³, r⁵, r⁷
Yes
10
Fraser
Different
r³, r⁵, r⁷
Yes
12

Source : https://www.int-arch-photogramm-remote-sens-spatial-inf-sci.net/XL-3-W3/327/2015/isprsarchives-XL-3-W3-327-2015.pdf

Results

Tapas produce a directory named "Ori-Out_name" which contain :

  • Camera calibration file : AutoCal[...].xml with camera parameters : focal length, PPP, distorsion parameters.
<?xml version="1.0" ?>
<ExportAPERO>
     <CalibrationInternConique>
          <KnownConv>eConvApero_DistM2C</KnownConv>
          <PP>3036.5765679584747 1998.71167135734891</PP> %Position of PPS in image
          <F>4037.08453810194351</F> %Focal length
          <SzIm>6000 4000</SzIm> %Image size
          <CalibDistortion>
               <ModRad> %Coefficient of distorsion
                    <CDist>3052.42394103968081 2001.86999748472294</CDist>
                    <CoeffDist>-4.50469053927919027e-09</CoeffDist>
                    <CoeffDist>3.40541430467215144e-16</CoeffDist>
                    <CoeffDist>6.26870361086794563e-25</CoeffDist>
                    <CoeffDistInv>4.51807038353698039e-09</CoeffDistInv>
                    <CoeffDistInv>-2.83621415930942252e-16</CoeffDistInv>
                    <CoeffDistInv>-1.28602811626265918e-23</CoeffDistInv>
                    <CoeffDistInv>5.99729269914569738e-31</CoeffDistInv>
               </ModRad>
          </CalibDistortion>
     </CalibrationInternConique>
</ExportAPERO>
  • Orientation file for each picture : Orientation-image_name.xml with :camera orientation (3D similarity), tie points used for orientation etc...
<?xml version="1.0" ?>
<ExportAPERO>
     <OrientationConique>
          <OrIntImaM2C>
               <I00>0 0</I00>
               <V10>1 0</V10>
               <V01>0 1</V01>
          </OrIntImaM2C>
          <TypeProj>eProjStenope</TypeProj>
          <ZoneUtileInPixel>true</ZoneUtileInPixel>
          <FileInterne>Ori-Arbitrary/AutoCal_Foc-16000_Cam-ILCE6000.xml</FileInterne> %Camera model
          <RelativeNameFI>true</RelativeNameFI>
          <Externe>
               <AltiSol>-8.50917595677101524</AltiSol> 
               <Profondeur>9.9233022137615734</Profondeur>
               <Time>-1.00000000000000002e+30</Time>
               <KnownConv>eConvApero_DistM2C</KnownConv>
               <Centre>0.33581992261091842 -26.3001714173638206 0.000147586637632812767</Centre> %Position of the PPS in arbitrary system
               <IncCentre>1 1 1</IncCentre>
               <ParamRotation>
                    <CodageMatr> %Boresight matrix (arbitrary system)
                         <L1>-0.981263794354502505 -0.155204851492389134 0.11416137684098876</L1>
                         <L2>-0.192442661386862057 0.818245676864819083 -0.541700871672157969</L2>
                         <L3>-0.00933744972389951265 -0.553520971929031491 -0.832782892275888531</L3>
                    </CodageMatr>
               </ParamRotation>
          </Externe>
...

When you use Tapas, a important part of informations are displaying directly in the terminal window, like image resiual or number of tie points used per images. Don't forget to look at this residuals when you use Tapas, for a good orientation you can decrease under 0.5px. All this informations are stocked in a file named "Residual.xml"

Workflow

Tapas process internal and relative orientation, you it's placed just after Tapas. The way to visualize relative orientation is to use AperiCloud.
Picto-previous.png Previous Command : Tapioca
Picto-next.png Next Command : AperiCloud.

RadialBasic

a subset of previous model: radial distortion with limited degrees of freedom ; adapted when there is a risk of divergence of RadialExtended; in this model there are 5 degrees of freedom : 1 for focal length , 2 for principal point and distortion center 3 , 2 for coefficients of radial distortion (r3 and r5 ).

Help

You can access to the help by typing :

mm3d Tapas RadialBasic -help


Mandatory unnamed args :

  • string :: {Calibration model}
  • string :: {Full Directory (Dir+Pattern)}

Named args :

  • [Name=ExpTxt] INT :: {Export in text format (Def=false)}
  • [Name=Out] string :: {Directory of Output Orientation}
  • [Name=InCal] string :: {Directory of Input Internal Orientation (Calibration)}
  • [Name=InOri] string :: {Directory of Input External Orientation}
  • [Name=DoC] INT :: {Do Compensation}
  • [Name=ForCalib] INT :: {1 for calibration }
  • [Name=Focs] Pt2dr :: {Keep images with focal length inside range [A,B] (A,B in mm) (Def=keep all)}
  • [Name=VitesseInit] INT
  • [Name=PPRel] Pt2dr :: {Principal point shift}</span style>
  • [Name=Decentre] INT :: {Principal point is shifted (Def=false)}</span style>
  • [Name=PropDiag] REAL :: {Hemi-spherik fisheye diameter to diagonal ratio}</span style>
  • [Name=SauvAutom] string :: {Save intermediary results to, Set NONE if dont want any}</span style>
  • [Name=ImInit] string :: {Force first image}</span style>
  • [Name=MOI] bool :: {MOI}</span style>

RadialExtended

A model with radial distortion.

Help

You can access to the help by typing :

mm3d Tapas RadialExtended -help

Mandatory unnamed args :

  • string :: {Calibration model}
  • string :: {Full Directory (Dir+Pattern)}

Named args :

  • [Name=ExpTxt] INT :: {Export in text format (Def=false)}
  • [Name=Out] string :: {Directory of Output Orientation} </span style>
  • [Name=InCal] string :: {Directory of Input Internal Orientation (Calibration)}
  • [Name=InOri] string :: {Directory of Input External Orientation}
  • [Name=DoC] INT :: {Do Compensation}
  • [Name=ForCalib] INT :: {1 for calibration }
  • [Name=Focs] Pt2dr :: {Keep images with focal length inside range [A,B] (A,B in mm) (Def=keep all)}
  • [Name=VitesseInit] INT
  • [Name=PPRel] Pt2dr :: {Principal point shift}
  • [Name=Decentre] INT :: {Principal point is shifted (Def=false)}
  • [Name=PropDiag] REAL :: {Hemi-spherik fisheye diameter to diagonal ratio}
  • [Name=SauvAutom] string :: {Save intermediary results to, Set NONE if dont want any}
  • [Name=ImInit] string :: {Force first image}
  • [Name=MOI] bool :: {MOI}
  • [Name=DBF] INT :: {Debug (internal use : DebugPbCondFaisceau=true)
  • [Name=Debug] bool :: {Partial file for debug}
  • [Name=DegRadMax] INT :: {Max degree of radial, default model dependent}
  • [Name=DegGen] INT :: {Max degree of general polynome, default model dependent (generally 0 or 1)}
  • [Name=LibAff] bool :: {Free affine parameter, Def=true}
  • [Name=LibDec] bool :: {Free decentric parameter, Def=true}
  • [Name=LibPP] bool :: {Free principal point, Def=true}
  • [Name=LibCP] bool :: {Free distorsion center, Def=true}
  • [Name=LibFoc] bool :: {Free focal, Def=true}
  • [Name=RapTxt] string :: {RapTxt}
  • [Name=LinkPPaPPs] REAL :: {Link PPa and PPs (double)}
  • [Name=FrozenPoses] string :: {List of frozen poses (pattern)}
  • [Name=SH] string :: {Set of Hom, Def="", give MasqFiltered for result of HomolFilterMasq}
  • [Name=RefineAll] bool :: {More refinement at all step, safer and more accurate, but slower, def=true}

Example

For example with the Mur Saint Martin dataset, you can launch :

Tapas RadialExtended "IMGP41((6[7-9])|([7-8][0-9])).JPG"

Fraser

a radial model, with decentric and affine parameters there are 12 degrees of freedom: 1 for focal length , 2 for principal point, 2 for distortion center , 3 for coefficients of radial distorsion (r3 , r5 r7 ), 2 for decentric parameters, 2 for affine parameters; the optional parameters LibAff and LibDec (def value true) can be set to false if decentric of affine parameters must stay frozen.

Help

You can access to the help by typing :

mm3d Tapas Fraser -help

Mandatory unnamed args :

  • {Calibration model}
  • string :: {Full Directory (Dir+Pattern)}

Named args :

  • [Name=ExpTxt] INT :: {Export in text format (Def=false)}
  • [Name=Out] string :: {Directory of Output Orientation}
  • [Name=InCal] string :: {Directory of Input Internal Orientation (Calibration)}
  • [Name=InOri] string :: {Directory of Input External Orientation}
  • [Name=DoC] INT :: {Do Compensation}
  • [Name=ForCalib] INT :: {1 for calibration }
  • [Name=Focs] Pt2dr :: {Keep images with focal length inside range [A,B] (A,B in mm) (Def=keep all)}
  • [Name=VitesseInit] INT
  • [Name=PPRel] Pt2dr :: {Principal point shift}
  • [Name=Decentre] INT :: {Principal point is shifted (Def=false)}
  • [Name=PropDiag] REAL :: {Hemi-spherik fisheye diameter to diagonal ratio}
  • [Name=SauvAutom] string :: {Save intermediary results to, Set NONE if dont want any}
  • [Name=ImInit] string :: {Force first image}
  • [Name=MOI] bool :: {MOI}
  • [Name=DBF] INT :: {Debug (internal use : DebugPbCondFaisceau=true) }
  • [Name=Debug] bool :: {Partial file for debug}
  • [Name=DegRadMax] INT :: {Max degree of radial, default model dependent}
  • [Name=DegGen] INT :: {Max degree of general polynome, default model dependent (generally 0 or 1)}
  • [Name=LibAff] bool :: {Free affine parameter, Def=true}
  • [Name=LibDec] bool :: {Free decentric parameter, Def=true}
  • [Name=LibPP] bool :: {Free principal point, Def=true}
  • [Name=LibCP] bool :: {Free distorsion center, Def=true}
  • [Name=LibFoc] bool :: {Free focal, Def=true}
  • [Name=RapTxt] string :: {RapTxt}
  • [Name=LinkPPaPPs] REAL :: {Link PPa and PPs (double)}
  • [Name=FrozenPoses] string :: {List of frozen poses (pattern)}
  • [Name=SH] string :: {Set of Hom, Def="", give MasqFiltered for result of HomolFilterMasq}
  • [Name=RefineAll] bool :: {More refinement at all step, safer and more accurate, but slower, def=true}
  • [Name=ImMinMax] vector :: {Image min and max (may avoid tricky pattern ...)}
  • [Name=EcMax] REAL :: {Final threshold for residual, def = 5.0 }

FraserBasic

same as previous with for principal point and distortion center constrained to have the same value (so 10 degree of freedom)

Help

You can access to the help by typing :

mm3d Tapas FraserBasic -help

Mandatory unnamed args :

  • string :: {Calibration model}
  • string :: {Full Directory (Dir+Pattern)}

Named args :

  • [Name=ExpTxt] INT :: {Export in text format (Def=false)}
  • [Name=Out] string :: {Directory of Output Orientation}
  • [Name=InCal] string :: {Directory of Input Internal Orientation (Calibration)}
  • [Name=InOri] string :: {Directory of Input External Orientation}
  • [Name=DoC] INT :: {Do Compensation}
  • [Name=ForCalib] INT :: {1 for calibration }
  • [Name=Focs] Pt2dr :: {Keep images with focal length inside range [A,B] (A,B in mm) (Def=keep all)}
  • [Name=VitesseInit] INT
  • [Name=PPRel] Pt2dr :: {Principal point shift}
  • [Name=Decentre] INT :: {Principal point is shifted (Def=false)}
  • [Name=PropDiag] REAL :: {Hemi-spherik fisheye diameter to diagonal ratio}
  • [Name=SauvAutom] string :: {Save intermediary results to, Set NONE if dont want any}
  • [Name=ImInit] string :: {Force first image}
  • [Name=MOI] bool :: {MOI}
  • [Name=DBF] INT :: {Debug (internal use : DebugPbCondFaisceau=true) }
  • [Name=Debug] bool :: {Partial file for debug}
  • [Name=DegRadMax] INT :: {Max degree of radial, default model dependent}
  • [Name=DegGen] INT :: {Max degree of general polynome, default model dependent (generally 0 or 1)}
  • [Name=LibAff] bool :: {Free affine parameter, Def=true}
  • [Name=LibDec] bool :: {Free decentric parameter, Def=true}
  • [Name=LibPP] bool :: {Free principal point, Def=true}
  • [Name=LibCP] bool :: {Free distorsion center, Def=true}
  • [Name=LibFoc] bool :: {Free focal, Def=true}
  • [Name=RapTxt] string :: {RapTxt}
  • [Name=LinkPPaPPs] REAL :: {Link PPa and PPs (double)}
  • [Name=FrozenPoses] string :: {List of frozen poses (pattern)}
  • [Name=SH] string :: {Set of Hom, Def="", give MasqFiltered for result of HomolFilterMasq}
  • [Name=RefineAll] bool :: {More refinement at all step, safer and more accurate, but slower, def=true}
  • [Name=ImMinMax] vector :: {Image min and max (may avoid tricky pattern ...)}
  • [Name=EcMax] REAL :: {Final threshold for residual, def = 5.0 }


FishEyeEqui

a model adapted for diagonal fisheyes equilinear ( with atan physicall model com- pleted with polynomial parameters there are 14 degrees of freedom: 1 for focal length , 2 for principal point, 2 for distorsion center , 5 for coefficients of radial distortion (r3 , r5 r7 ), 2 for decentric parameters, 2 for affine parameters; by default the ray defining the useful mask is 95% of the diagonal.

Help

You can access to the help by typing :

mm3d Tapas FishEyeEqui -help

Mandatory unnamed args :

  • string :: {Calibration model}
  • string :: {Full Directory (Dir+Pattern)}

Named args :

  • [Name=ExpTxt] INT :: {Export in text format (Def=false)}
  • [Name=Out] string :: {Directory of Output Orientation}
  • [Name=InCal] string :: {Directory of Input Internal Orientation (Calibration)}
  • [Name=InOri] string :: {Directory of Input External Orientation}
  • [Name=DoC] INT :: {Do Compensation}
  • [Name=ForCalib] INT :: {1 for calibration }
  • [Name=Focs] Pt2dr :: {Keep images with focal length inside range [A,B] (A,B in mm) (Def=keep all)}
  • [Name=VitesseInit] INT
  • [Name=PPRel] Pt2dr :: {Principal point shift}
  • [Name=Decentre] INT :: {Principal point is shifted (Def=false)}
  • [Name=PropDiag] REAL :: {Hemi-spherik fisheye diameter to diagonal ratio}
  • [Name=SauvAutom] string :: {Save intermediary results to, Set NONE if dont want any}
  • [Name=ImInit] string :: {Force first image}
  • [Name=MOI] bool :: {MOI}
  • [Name=DBF] INT :: {Debug (internal use : DebugPbCondFaisceau=true) }
  • [Name=Debug] bool :: {Partial file for debug}
  • [Name=DegRadMax] INT :: {Max degree of radial, default model dependent}
  • [Name=DegGen] INT :: {Max degree of general polynome, default model dependent (generally 0 or 1)}
  • [Name=LibAff] bool :: {Free affine parameter, Def=true}
  • [Name=LibDec] bool :: {Free decentric parameter, Def=true}
  • [Name=LibPP] bool :: {Free principal point, Def=true}
  • [Name=LibCP] bool :: {Free distorsion center, Def=true}
  • [Name=LibFoc] bool :: {Free focal, Def=true}
  • [Name=RapTxt] string :: {RapTxt}
  • [Name=LinkPPaPPs] REAL :: {Link PPa and PPs (double)}
  • [Name=FrozenPoses] string :: {List of frozen poses (pattern)}
  • [Name=SH] string :: {Set of Hom, Def="", give MasqFiltered for result of HomolFilterMasq}
  • [Name=RefineAll] bool :: {More refinement at all step, safer and more accurate, but slower, def=true}
  • [Name=ImMinMax] vector :: {Image min and max (may avoid tricky pattern ...)}
  • [Name=EcMax] REAL :: {Final threshold for residual, def = 5.0 }

HemiEqui

same model as previous, but by default the ray defining the useful mask s 52% of the diagonal; adapted to hemispheric equilinear fisheye.

Help

You can access to the help by typing :

mm3d Tapas HemiEqui -help

Mandatory unnamed args :

  • string :: {Calibration model}
  • string :: {Full Directory (Dir+Pattern)}

Named args :

  • [Name=ExpTxt] INT :: {Export in text format (Def=false)}
  • [Name=Out] string :: {Directory of Output Orientation}
  • [Name=InCal] string :: {Directory of Input Internal Orientation (Calibration)}
  • [Name=InOri] string :: {Directory of Input External Orientation}
  • [Name=DoC] INT :: {Do Compensation}
  • [Name=ForCalib] INT :: {1 for calibration }
  • [Name=Focs] Pt2dr :: {Keep images with focal length inside range [A,B] (A,B in mm) (Def=keep all)}
  • [Name=VitesseInit] INT
  • [Name=PPRel] Pt2dr :: {Principal point shift}
  • [Name=Decentre] INT :: {Principal point is shifted (Def=false)}
  • [Name=PropDiag] REAL :: {Hemi-spherik fisheye diameter to diagonal ratio}
  • [Name=SauvAutom] string :: {Save intermediary results to, Set NONE if dont want any}
  • [Name=ImInit] string :: {Force first image}
  • [Name=MOI] bool :: {MOI}
  • [Name=DBF] INT :: {Debug (internal use : DebugPbCondFaisceau=true) }
  • [Name=Debug] bool :: {Partial file for debug}
  • [Name=DegRadMax] INT :: {Max degree of radial, default model dependent}
  • [Name=DegGen] INT :: {Max degree of general polynome, default model dependent (generally 0 or 1)}
  • [Name=LibAff] bool :: {Free affine parameter, Def=true}
  • [Name=LibDec] bool :: {Free decentric parameter, Def=true}
  • [Name=LibPP] bool :: {Free principal point, Def=true}
  • [Name=LibCP] bool :: {Free distorsion center, Def=true}
  • [Name=LibFoc] bool :: {Free focal, Def=true}
  • [Name=RapTxt] string :: {RapTxt}
  • [Name=LinkPPaPPs] REAL :: {Link PPa and PPs (double)}
  • [Name=FrozenPoses] string :: {List of frozen poses (pattern)}
  • [Name=SH] string :: {Set of Hom, Def="", give MasqFiltered for result of HomolFilterMasq}
  • [Name=RefineAll] bool :: {More refinement at all step, safer and more accurate, but slower, def=true}
  • [Name=ImMinMax] vector :: {Image min and max (may avoid tricky

Error messages

  • Pt Out Cam in ElCamera::F2toPtDirRayonL3 : occurs when an image in a sequence have been rotated before processing (happens sometime when dealing with old aerial scans)
  • very singular matrix in Gausj : choose a distortion model with a lower number of parameters to estimate.