Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/micmacIGN/micmac
Browse files Browse the repository at this point in the history
  • Loading branch information
deseilligny committed Jul 25, 2024
2 parents a67e49b + 7e76276 commit c2b1ff3
Show file tree
Hide file tree
Showing 69 changed files with 7,801 additions and 449 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
999 changes: 999 additions & 0 deletions MMVII/Doc/CommandReferences/ImagesComRef/cart_geocentr.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1,201 changes: 1,201 additions & 0 deletions MMVII/Doc/CommandReferences/ImagesComRef/topo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion MMVII/Doc/CommandReferences/MeshCommands.tex
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ \subsection{MeshCloudClip}
\centering
\includegraphics[width=6cm]{CommandReferences/ImagesComRef/MeshWithSkirt.jpg}
\includegraphics[width=6cm]{CommandReferences/ImagesComRef/MeshCliped.jpg}
\caption{Letft mesh with undesirable extension, right mesh after clipping}
\caption{Left mesh with undesirable extension, right mesh after clipping}
\label{fig:MeshClip}
\end{figure}

Expand Down
617 changes: 472 additions & 145 deletions MMVII/Doc/CommandReferences/SysCo.tex

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion MMVII/Doc/Doc2007.tex
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
%\usepackage{amsmath}
\usepackage{amssymb}


\makeindex


Expand Down
4 changes: 2 additions & 2 deletions MMVII/Doc/Methods/PerspCamModelization.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1118,7 +1118,7 @@ \subsection{Intuitive analyse of dangerous case}
A less obvious, but still dangerous, case is symbolized by right image of figure~\ref{fig:TanSpace},
this is the cases where the intersection of $\mathcal{S}^i$ and $\mathcal{S}^h$ is reduced to
identity, but the spaces are tangent at this intersection. In this case, even if there is theoretically
a single solutions to the projection equation, the system will be badly conditionned.
a single solutions to the projection equation, the system will be badly conditioned.

Finally the ideal safe case is symbolized by middle image if figure~\ref{fig:TanSpace}, here
the space intersec orthogonally and there is no mixing possible between $\mathcal{S}^h$ and $\mathcal{S}^i$
Expand Down Expand Up @@ -1265,7 +1265,7 @@ \subsubsection{Decentric distorsion}
Let's name $\omega$ the angle between the $2$ functions $Dec_x$ and $T_y$, as a measurement of correlation, the ideal case being
$\omega=\frac{\pi}{2}$, and the degenerate case $\omega=0$. Here, as illustrated by
figure~\ref{fig:DecTy}, we see that $\omega=\tan^{-1}({\frac13})$. Also not ideal basis relatively to
the rotation ambiguity problem, it's still acceptable for conditionning of the system.
the rotation ambiguity problem, it's still acceptable for conditioning of the system.

\begin{figure}
\centering
Expand Down
6 changes: 4 additions & 2 deletions MMVII/Doc/Programmer/NonLinearOptim.tex
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,7 @@ \subsection{Least square solving and constructor}
uses sparse matrix for storing the normal matrix; this is probably the most
general way and the most efficient in time and storage for most cases in
photogrammetry involving many pose estimations. Its
drawback is that using normal equations increase the conditionning of the
drawback is that using normal equations increase the conditioning of the
system, the potential problem increasing with number of unknowns;
solving is made calling {\tt SimplicialCholesky} decomposition of eigen;

Expand All @@ -542,7 +542,7 @@ \subsection{Least square solving and constructor}
{\tt LeastSquaresConjugateGradient} decomposition of eigen;
\emph{do not} use Schur complement for temporary unknowns, they
are processed like the other unknowns; according to eigen documentation
this method is the more robust for poorly conditionned systems
this method is the more robust for poorly conditioned systems
compared to {\bf \tt eSSR\_LsqNormSparse}, for big
sparse system with a high proportion of temporary unknowns,
it's certainly less memory efficient and it's probably
Expand Down Expand Up @@ -1356,6 +1356,8 @@ \subsubsection{Topo survey classes}
The classes named \texttt{cTopo???Data} are used only for data serialization and deserialization.
They are a simplified version of the classes without the \texttt{Data} suffix.

%The \CdPPP\ topo files record all the input and output data, organized as the internal \CdPPP\ objects during compensation.

\texttt{cTopoObsSet} is an abstract class.
The concrete class that is currently used is \texttt{cTopoObsSetStation}, that corresponds to a survey instrument positionned on one point.
It has a notion of {\tt origin} (the point where the instrument is positionned), and an orientation matrix in the RTL SysCo.
Expand Down
2 changes: 1 addition & 1 deletion MMVII/MMVII-RessourceDir/SysCo/Geog.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<Version>"0.0.0"</Version>
<Data>
<SysCoData>
<Def>"+proj=latlong"</Def>
<Def>"+proj=latlong +datum=WGS84"</Def>
</SysCoData>
</Data>
</Root>
18 changes: 18 additions & 0 deletions MMVII/MMVII-UseCaseDataSet/TopoMini/Cmd.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
set -e

# clear
rm -Rf MMVII-PhgrProj

# import coords
MMVII ImportGCP inputs/coords.txt ANXYZ InitL93 ChSys=[L93] AddInfoFree=0 Sigma=0.001 Comment=*


# convert to RTL
MMVII GCPChSysCo "RTL*657700*6860700*0*IGNF:LAMB93" InitL93 InitRTL

mkdir -p MMVII-PhgrProj/Topo/Obs1/
cp inputs/meas.obs MMVII-PhgrProj/Topo/Obs1/

MMVII TopoAdj Obs1 Obs1_out InitRTL FinalRTL

MMVII GCPChSysCo L93 FinalRTL FinalL93
5 changes: 5 additions & 0 deletions MMVII/MMVII-UseCaseDataSet/TopoMini/inputs/coords.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
* 1st column: 0 = free point
1 PtA 657700.000 6860700.000 10.000
0 PtB 657710 6860700 10 * approx
0 PtC 657710 6860710 10 * approx
1 PtD 657700.000 6860690.000 10.000
15 changes: 15 additions & 0 deletions MMVII/MMVII-UseCaseDataSet/TopoMini/inputs/meas.obs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
7 PtA PtB 0 0.001
6 PtA PtB 100 0.001
3 PtA PtB 10.05 0.005
5 PtA PtC -40.62 0.001
6 PtA PtC 100 0.001
3 PtA PtC 14.88 0.005


7 PtD PtB 0 0.001
6 PtD PtB 100 0.001
3 PtD PtB 14.88 0.005
5 PtD PtC -14.96 0.001
6 PtD PtC 100 0.001
3 PtD PtC 22.82 0.005

16 changes: 15 additions & 1 deletion MMVII/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Some external tools need to be present on your system for **MMVII** to run prope
- **[CMake](https://cmake.org/)** to generate build files
- **[make](http://www.gnu.org/software/make)** for parallel processes management
- **[PROJ](http://trac.osgeo.org/proj/)** for coordinate system conversion and coordinate reference system transformation
- **[PROJ additional data](https://download.osgeo.org/proj/)** grids for coordinates tranformations (optional, see doc)
- **[ccache](https://ccache.dev/)** for recompilation optimization (optional)
- **[OpenMP](https://www.openmp.org/)** multi-platform parallel programming (optionnal)
- **[Doxygen](https://www.doxygen.nl/)** documentation generator (optional)
Expand Down Expand Up @@ -124,7 +125,7 @@ Under Windows the installation procedure is as follows:
## macOS

## Additionnal notes
### Compilation details
### Linux compilation details
- If using CLang version XX and want OpenMP: `sudo apt install libomp-XX-dev`
- You can use `cmake -G Ninja ..` to use Ninja build system instead of the native one. (`sudo apt install ninja-build`)
- Use `cmake --build . -j N` or `cmake --build . -j N -v` instead of make (works with all build systems)
Expand Down Expand Up @@ -164,6 +165,19 @@ These are typically installed by default on Ubuntu. If not, you can install them

After making this modification, the command completion feature will be active in any new terminal session.

**Windows:**

If you're using bash (installed with git for example) on Windows, completion may also works:
- You must have python >= 3.7 installed somewhere
- Edit your ~/.bash_profile and add: (adapt first 2 lines to your case)
```
MMVII_INSTALL_PATH=/c/micmac/MMVII
PYTHON_INSTALL_PATH=/c/Python/Python39/
PATH=${PYTHON_INSTALL_PATH}:${MMVII_INSTALL_PATH}/bin:$PATH
[ -f ${MMVII_INSTALL_PATH}/bash-completion/mmvii-completion ] && . ${MMVII_INSTALL_PATH}/bash-completion/mmvii-completion
```
### Graphical User Interface vMMVII
The **vMMVII** tool provides a convenient graphical user interface (GUI) for writing **MMVII** commands.
Expand Down
2 changes: 1 addition & 1 deletion MMVII/bash-completion/mmvii-completion
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def printFiles(word,extensions=None) -> None:
try:
if file.is_dir():
dirs.append(os.path.join(path,file.name))
elif not extensions or any (file.name.lower().endswith(ext) for ext in extensions):
elif not extensions or "" in extensions or any (file.name.lower().endswith(ext) for ext in extensions):
files.append(os.path.join(path,file.name))
except PermissionError:
pass
Expand Down
2 changes: 1 addition & 1 deletion MMVII/bash-completion/mmvii-completion.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def printFiles(word,extensions=None) -> None:
try:
if file.is_dir():
dirs.append(os.path.join(path,file.name))
elif not extensions or any (file.name.lower().endswith(ext) for ext in extensions):
elif not extensions or "" in extensions or any (file.name.lower().endswith(ext) for ext in extensions):
files.append(os.path.join(path,file.name))
except PermissionError:
pass
Expand Down
7 changes: 6 additions & 1 deletion MMVII/include/MMVII_DeclareAllCmd.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,19 @@ extern cSpecMMVII_Appli TheSpec_ConvertV1V2_GCPIM;
extern cSpecMMVII_Appli TheSpec_SpecSerial;
extern cSpecMMVII_Appli TheSpec_CGPReport;
extern cSpecMMVII_Appli TheSpec_TiePReport;
extern cSpecMMVII_Appli TheSpec_SimulDispl;
extern cSpecMMVII_Appli TheSpec_RandomGeneratedDelaunay;
extern cSpecMMVII_Appli TheSpec_ComputeTriangleDeformation;
extern cSpecMMVII_Appli TheSpec_ComputeTriangleDeformationTranslation;
extern cSpecMMVII_Appli TheSpec_ComputeTriangleDeformationRadiometry;
extern cSpecMMVII_Appli TheSpec_ComputeNodesPrecision;
extern cSpecMMVII_Appli TheSpec_PoseCmpReport;
extern cSpecMMVII_Appli TheSpec_BlockCamInit; // RIGIDBLOC
extern cSpecMMVII_Appli TheSpec_ClinoInit;
extern cSpecMMVII_Appli TheSpecRename;
extern cSpecMMVII_Appli TheSpec_V2ImportCalib;
extern cSpecMMVII_Appli TheSpec_ImportOri;
extern cSpecMMVII_Appli TheSpecDicoRename;
extern cSpecMMVII_Appli TheSpec_SimulDispl;
extern cSpecMMVII_Appli TheSpec_CreateRTL;
extern cSpecMMVII_Appli TheSpec_TestProj;
extern cSpecMMVII_Appli TheSpec_ChSysCo;
Expand Down
2 changes: 1 addition & 1 deletion MMVII/include/MMVII_DeclareCste.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ extern const std::string MMVII_StdDest; ///< For destination parameter (TieP
extern const std::string MMVII_PrefRefBench; ///< Prefix for file used as reference in bench

extern const std::string MMVII_SysCoLocal; ///< Prefix for SysCo type
extern const std::string MMVII_SysCoLGeo; ///< Prefix for SysCo type
extern const std::string MMVII_SysCoLEuc; ///< Prefix for SysCo type
extern const std::string MMVII_SysCoRTL; ///< Prefix for SysCo type
extern const std::string MMVII_SysCoGeoC; ///< Prefix for SysCo type
extern const std::string MMVII_SysCoDefLatLong; ///< Definition for latlong
Expand Down
4 changes: 2 additions & 2 deletions MMVII/include/MMVII_Error.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ void MMVII_RestoreDefaultHandle();
if ((The_MMVII_DebugLevel>=The_MMVII_DebugLevel_BenchError ) && (!(aTest)))\
{MMVII_INTERNAL_ERROR(aMes);}

void MMVII_UsersErrror(const eTyUEr &,const std::string & aMes);
void MMVII_UserError(const eTyUEr &,const std::string & aMes);
#define MMVII_INTERNAL_ASSERT_User(aTest,aRef,aMes)\
if ((The_MMVII_DebugLevel>=The_MMVII_DebugLevel_UserError) && (!(aTest))) \
{ MMVII_UsersErrror(aRef,aMes);}
{ MMVII_UserError(aRef,aMes);}
void MMVII_UnclasseUsEr(const std::string & aMes);


Expand Down
2 changes: 1 addition & 1 deletion MMVII/include/MMVII_Matrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ template <class Type> class cDenseMatrix : public cUnOptDenseMatrix<Type>
tDM SubMatrix(const cPt2di & aSz) const;
tDM SubMatrix(const cPt2di & aP0,const cPt2di & aP1) const;

/** Generate a random square matrix having "good" conditionning property , i.e with eigen value constraint,
/** Generate a random square matrix having "good" conditioning property , i.e with eigen value constraint,
usefull for bench as when the random matrix is close to singular, it may instability that fail
the numerical test.
*/
Expand Down
12 changes: 12 additions & 0 deletions MMVII/include/MMVII_PhgrDist.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,18 @@ NS_SymbolicDerivative::cCalculator<double> * EqTopoDZ(bool WithDerive,int aSzBuf
NS_SymbolicDerivative::cCalculator<double> * EqDeformImHomotethy(bool WithDerive,int aSzBuf);
/// Variant of "EqDeformImHomotethy", case where we use linear approximation
NS_SymbolicDerivative::cCalculator<double> * EqDeformImLinearGradHomotethy(bool WithDerive,int aSzBuf);
/// Equation used to optimize translation and radiometry transformation between two images with bilinear interpolator.
NS_SymbolicDerivative::cCalculator<double> *EqDeformTriBilin(bool WithDerive, int aSzBuf);
/// Equation used to optimize translation transformation between two images with bilinear interpolator.
NS_SymbolicDerivative::cCalculator<double> *EqDeformTriTranslationBilin(bool WithDerive, int aSzBuf);
/// Equation used to optimize radiometric transformation between two images with bilinear interpolator.
NS_SymbolicDerivative::cCalculator<double> *EqDeformTriRadiometryBilin(bool WithDerive, int aSzBuf);
/// Equation used to optimize translation and radiometry transformation between two images with linear interpolator.
NS_SymbolicDerivative::cCalculator<double> *EqDeformTriLinearGrad(bool WithDerive, int aSzBuf);
/// Equation used to optimize translation transformation between two images with linear interpolator.
NS_SymbolicDerivative::cCalculator<double> *EqDeformTriTranslationLinearGrad(bool WithDerive, int aSzBuf);
/// Equation used to optimize radiometric transformation between two images with linear interpolator.
NS_SymbolicDerivative::cCalculator<double> *EqDeformTriRadiometryLinearGrad(bool WithDerive, int aSzBuf);

// ............. Covariance propagation .............

Expand Down
1 change: 1 addition & 0 deletions MMVII/include/MMVII_Stringifier.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "MMVII_memory.h"
#include "MMVII_Ptxd.h"
#include <sstream>

namespace MMVII
{
Expand Down
2 changes: 1 addition & 1 deletion MMVII/include/MMVII_SysSurR.h
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ template <class Type> class cLeasSq : public cLinearOverCstrSys<Type>
};

/** Implemant least by suming tA A , simple and efficient, by the way known to have
a conditionning problem
a conditioning problem
*/

template <class Type> class cLeasSqtAA : public cLeasSq<Type>
Expand Down
Loading

0 comments on commit c2b1ff3

Please sign in to comment.