Tapioca

De MicMac
Aller à : navigation, rechercher

Picto-liste.png List of commands

Description

Tapioca is a simple tool interface for computing tie points. I think Tapioca should be sufficient in 95% of cases. If it is not the case, you will have to refer to a more complex and powerful tool named Pastis which will be described later. In fact, Tapioca is only an interface to Pastis.

Syntax

The global syntax for Tapioca is

mm3d Tapioca UnNamedArgs NamedArgs

Allowed commands

  • MulScale : Compute tie points for images in low resolution and then for high resolution.
  • All : Compute tie points for all images in a given resolution.
  • Line : Compute tie points for linear image canvas.
  • File : Compute tie points for images in a xml file
  • Graph : in development

Results

Tapioca generate a directory named "Homol" ("Homol_SRes" for Tapioca MulScale) in your working directory which contain for each image of your canvas, a directory named "PastisImage_name". In this directory "Pastis" you will find a binary file (".dat") for each image linked with the first image by tie points. This binary files contains tie points.
For example, in Gravillons dataset, all images are linked so this is the arborescence of the Gravillon Homol directory :
Tapioca homol arborescence.png

Workflow

Tapioca, is generally the first command to launch in a MicMac process.
Picto-previous.png Previous Command : ~
Picto-next.png Next Command : (HomolFilterMasq,Schnaps,) Tapas.

Visualize tie points

NB : This tool works only for Linux OS.
If you want to visualize tie points matched by Tapioca, you can run the command SEL:

mm3d SEL image_1 image_2 KH=NB

Tapioca exemple sift.png

Tie points computation mode

All

Tie points are looked for in all possible pair of images at the reduced resolution chosen by the user in the Size of image option.

Help

You can access to the help by typing :

mm3d Tapioca All -help

Mandatory unnamed args :

  • string :: {Full Name (Dir+Pat)}
  • INT :: {Size of image, in pixels}

Named args :

  • [Name=ExpTxt] INT :: {Export files in text format (Def=false means binary)}
  • [Name=PostFix] string :: {Add postfix in directory}
  • [Name=ByP] INT :: {By process}
  • [Name=Pat2] string :: {Second pattern}
  • [Name=Detect] string
  • [Name=Match] string
  • [Name=NoMax] bool
  • [Name=NoMin] bool
  • [Name=NoUnknown] bool

Using -1 as Image's size is equivalent to use full resolution image. But it's recommended to use rather a resolution to a scaling between 0.3 and 0.5.

Example

For example with the Ramses dataset, you can launch :

mm3d Tapioca All "IMG.*CR2" 1000

For example with the Zhenjue dataset, you can launch :

mm3d Tapioca All ".*JPG" 1500

MulScale

The mode MulScale can save significant computation time on large sets of images. Even if it is not optimal for all canvas, it has the benefit of being general and usable with any data set. In this mode, a first computation of tie points is made for all the pairs of images at a low resolution (so it is quite fast), chosen by the user through the Size of Low Resolution Images option. Then the computation is done at the Size of High Resolution Images only for the pairs having, at low resolution, a number of tie points exceeding a given threshold (NbMinPt).

Help

You can access to the help by typing :

mm3d Tapioca MulScale -help

Mandatory unnamed args :

  • string :: {Full Name (Dir+Pat)}
  • INT :: {Size of Low Resolution Images}
  • INT :: {Size of High Resolution Images}

Named args :

  • [Name=ExpTxt] INT :: {Export files in text format (Def=false means binary)}
  • [Name=ByP] INT :: {By process}
  • [Name=PostFix] string :: {Add postfix in directory}
  • [Name=NbMinPt] INT :: {Minimum number of points}
  • [Name=DLR] INT :: {Do Low Resolution}
  • [Name=Pat2] string :: {Second pattern}
  • [Name=Detect] string
  • [Name=Match] string
  • [Name=NoMax] bool
  • [Name=NoMin] bool
  • [Name=NoUnknown] bool

Example

For example with the Buddha dataset, you can launch :

mm3d Tapioca MulScale "IMG_[0-9]{4}.tif" 300 -1

For example with the Cuxa dataset, you can launch :

mm3d Tapioca MulScale "Abbey-IMG_.*.jpg" 200 800


Line

It often occurs that the photos canvas has a linear structure, for example, when you acquire photos of a facade walking along the street. In this case, you know that the [math]Kth[/math] image can only have tie points with images in the interval [K - δ, K + δ] giving this information to Tapioca can save a lot of time. The argument Number of adjacent images to look for sets δ. The Circ option is used if the acquisition is circular (the first and last image see each other). All the other arguments have the same meaning as in the All mode.

Help

You can access to the help by typing :

mm3d Tapioca Line -help

Mandatory unnamed args :

  • string :: {Full Name (Dir+Pat)}
  • INT :: {Image size}
  • INT :: {Number of adjacent images to look for (&#948)}

Named args :

  • [Name=ExpTxt] INT :: {Export files in text format (Def=false means binary)}
  • [Name=Jump] vector<int> :: {Densification by jump }
  • [Name=PostFix] string :: {Add postfix in directory}
  • [Name=ByP] INT :: {By process}
  • [Name=Circ] INT :: {In line mode if it's a loop (begin ~ end)}
  • [Name=ForceAdSupResol] bool :: {to force computation even when Resol
  • [Name=Detect] string
  • [Name=Match] string
  • [Name=NoMax] bool
  • [Name=NoMin] bool
  • [Name=NoUnknown] bool

Example

For example with the Ramses dataset, you can launch :

 mm3d Tapioca Line "IMG.*CR2" 3 1000

Graph

Help

You can access to the help by typing :

mm3d Tapioca Graph -help

Mandatory unnamed args :

  • string :: {Full images' pattern (directory+pattern)}
  • INT :: {Processing size of image (for the greater dimension)}

Named args :

  • [Name=ByP] INT :: {By process}
  • [Name=Detect] string :: {executable used to detect keypoints}
  • [Name=MaxPoint] INT :: {number of points used per image to construct the graph (default 200)}
  • [Name=MinScale] REAL :: {if specified, points with a lesser scale are ignored}
  • [Name=MaxScale] REAL :: {if specified, points with a greater scale are ignored}
  • [Name=NbRequired] INT :: {number of matches to create a connexion between two images (default 1)}
  • [Name=Out] string :: {name of the produced XML file}
  • [Name=PrintGraph] bool :: {print result graph in standard output}

File

A file specifying a set of images to be matched is needed here. Such a file can either be generated manually or be produced with OriConvert when the images come with GPS information, the images to be matched together being within a given distance threshold of each others.

Help

You can access to the help by typing :

mm3d Tapioca File -help

Mandatory unnamed args :

  • string :: {XML-File of pair}
  • INT :: {Resolution}

Named args :

  • [Name=ExpTxt] INT :: {Export files in text format (Def=false means binary)}
  • [Name=PostFix] string :: {Add postfix in directory}
  • [Name=ByP] INT :: {By process}
  • [Name=Detect] string
  • [Name=Match] string
  • [Name=NoMax] bool
  • [Name=NoMin] bool
  • [Name=NoUnknown] bool

Example

In the tutorial GrandLeez, we use the option File for Tapioca. The file FileImagesNeighbour.xml contain for each images, his differents neighboors. If you open the file, you can see :

     <Cple>R0040439.JPG R0040519.JPG</Cple>
     <Cple>R0040439.JPG R0040514.JPG</Cple>
     <Cple>R0040439.JPG R0040444.JPG</Cple>
     <Cple>R0040439.JPG R0040517.JPG</Cple>
     <Cple>R0040439.JPG R0040438.JPG</Cple>
     <Cple>R0040439.JPG R0040440.JPG</Cple>
     <Cple>R0040439.JPG R0040441.JPG</Cple>
     <Cple>R0040439.JPG R0040516.JPG</Cple>
     <Cple>R0040439.JPG R0040442.JPG</Cple>
     <Cple>R0040439.JPG R0040515.JPG</Cple>
     <Cple>R0040439.JPG R0040443.JPG</Cple>

It means, image R0040439.JPG is connected with all the images detailed in <Cple> tag. So you can run the tie point generation with Tapioca using this file :

mm3d Tapioca File FileImagesNeighbour.xml -1

What Tie Points is?

Tie points on low contrast Images

The current implementation of SIFT++ used in MicMac is not fully invariant to scaling/translation in radiometry. This may be a problem in case of acquisitions having a good SNR but with low contrast in the scene; in this case, thanks to good SNR there is potential information to get tie points, but as this information is assimilated to noise, it cannnot be extracted. To overcome this problem, it is possible to require that MicMac computes some contrast enhancement on images before computing SIFT points.