⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snaphu.h

📁 phase unwrapping algorithm for SAR interferometry
💻 H
📖 第 1 页 / 共 4 页
字号:
  double maxcyclefraction;/* ratio of max cycles to pixels */  long sourcemode;        /* 0, -1, or 1, determines how tree root is chosen */  long cs2scalefactor;    /* scale factor for cs2 initialization (eg, 3-30) */  /* tiling parameters */  long ntilerow;          /* number of tiles in azimuth */  long ntilecol;          /* number of tiles in range */  long rowovrlp;          /* pixels of overlap between row tiles */  long colovrlp;          /* pixels of overlap between column tiles */  long piecefirstrow;     /* first row (indexed from 1) for piece mode */  long piecefirstcol;     /* first column (indexed from 1) for piece mode */  long piecenrow;         /* number of rows for piece mode */  long piecencol;         /* number of rows for piece mode */  long tilecostthresh;    /* maximum cost within single reliable tile region */  long minregionsize;     /* minimum number of pixels in a region */  long nthreads;          /* number of parallel processes to run */  long scndryarcflowmax;  /* max flow increment for which to keep cost data */  double tileedgeweight;  /* weight applied to tile-edge secondary arc costs */  signed char assembleonly; /* flag for assemble-only (no unwrap) mode */  signed char rmtmptile;  /* flag for removing temporary tile files */  char tiledir[MAXSTRLEN];/* directory for temporary tile files */  /* connected component parameters */  double minconncompfrac; /* min fraction of pixels in connected component */  long conncompthresh;    /* cost threshold for connected component */  long maxncomps;         /* max number of connected components */  }paramT;/* input file name data structure */typedef struct infileST{  char infile[MAXSTRLEN];             /* input interferogram */  char magfile[MAXSTRLEN];            /* interferogram magnitude (optional) */  char ampfile[MAXSTRLEN];            /* image amplitude or power file */  char ampfile2[MAXSTRLEN];           /* second amplitude or power file */  char weightfile[MAXSTRLEN];         /* arc weights */  char corrfile[MAXSTRLEN];           /* correlation file */  char estfile[MAXSTRLEN];            /* unwrapped estimate */  char costinfile[MAXSTRLEN];         /* file from which cost data is read */  signed char infileformat;           /* input file format */  signed char unwrappedinfileformat;  /* input file format if unwrapped */  signed char magfileformat;          /* interferogram magnitude file format */  signed char corrfileformat;         /* correlation file format */  signed char weightfileformat;       /* weight file format */  signed char ampfileformat;          /* amplitude file format */  signed char estfileformat;          /* unwrapped-estimate file format */}infileT;/* output file name data structure */typedef struct outfileST{  char outfile[MAXSTRLEN];            /* unwrapped output */  char initfile[MAXSTRLEN];           /* unwrapped initialization */  char flowfile[MAXSTRLEN];           /* flows of unwrapped solution */  char eifile[MAXSTRLEN];             /* despckled, normalized intensity */  char rowcostfile[MAXSTRLEN];        /* statistical azimuth cost array */  char colcostfile[MAXSTRLEN];        /* statistical range cost array */  char mstrowcostfile[MAXSTRLEN];     /* scalar initialization azimuth costs */  char mstcolcostfile[MAXSTRLEN];     /* scalar initialization range costs */  char mstcostsfile[MAXSTRLEN];       /* scalar initialization costs (all) */  char corrdumpfile[MAXSTRLEN];       /* correlation coefficient magnitude */  char rawcorrdumpfile[MAXSTRLEN];    /* correlation coefficient magnitude */  char conncompfile[MAXSTRLEN];       /* connected component map or mask */  char costoutfile[MAXSTRLEN];        /* file to which cost data is written */  char logfile[MAXSTRLEN];            /* file to which parmeters are logged */  signed char outfileformat;          /* output file format */}outfileT;/* tile parameter data structure */typedef struct tileparamST{  long firstcol;          /* first column of tile to process (index from 0) */  long ncol;              /* number of columns in tile to process */  long firstrow;          /* first row of tile to process (index from 0) */  long nrow;              /* number of rows in tile to process */}tileparamT;/* type for total cost of solution (may overflow long) */typedef double totalcostT;            /* typedef long long totalcostT; */#define INITTOTALCOST LARGEFLOAT      /* #define INITTOTALCOST LARGELONGLONG *//***********************//* function prototypes *//***********************//* functions in snaphu.c */void Unwrap(infileT *infiles, outfileT *outfiles, paramT *params, 	    long linelen, long nlines);void UnwrapTile(infileT *infiles, outfileT *outfiles, paramT *params, 		tileparamT *tileparams, long nlines, long linelen);/* functions in snaphu_tile.c */void SetupTile(long nlines, long linelen, paramT *params, 	       tileparamT *tileparams, outfileT *outfiles, 	       outfileT *tileoutfiles, long tilerow, long tilecol);void GrowRegions(void **costs, short **flows, long nrow, long ncol, 		 incrcostT **incrcosts, outfileT *outfiles, paramT *params);void GrowConnCompsMask(void **costs, short **flows, long nrow, long ncol, 		       incrcostT **incrcosts, outfileT *outfiles, 		       paramT *params);long ThickenCosts(incrcostT **incrcosts, long nrow, long ncol);nodeT *RegionsNeighborNode(nodeT *node1, long *arcnumptr, nodeT **nodes, 			   long *arcrowptr, long *arccolptr, 			   long nrow, long ncol);void ClearBuckets(bucketT *bkts);void MergeRegions(nodeT **nodes, nodeT *source, long *regionsizes, 		  long closestregion, long nrow, long ncol);void RenumberRegion(nodeT **nodes, nodeT *source, long newnum, 		    long nrow, long ncol);void AssembleTiles(outfileT *outfiles, paramT *params, 		   long nlines, long linelen);void ReadNextRegion(long tilerow, long tilecol, long nlines, long linelen,		    outfileT *outfiles, paramT *params, 		    short ***nextregionsptr, float ***nextunwphaseptr,		    void ***nextcostsptr, 		    long *nextnrowptr, long *nextncolptr);void SetTileReadParams(tileparamT *tileparams, long nexttilenlines, 		       long nexttilelinelen, long tilerow, long tilecol, 		       long nlines, long linelen, paramT *params);void ReadEdgesAboveAndBelow(long tilerow, long tilecol, long nlines, 			    long linelen, paramT *params, outfileT *outfiles, 			    short *regionsabove, short *regionsbelow,			    float *unwphaseabove, float *unwphasebelow,			    void *costsabove, void *costsbelow);void TraceRegions(short **regions, short **nextregions, short **lastregions, 		  short *regionsabove, short *regionsbelow, float **unwphase, 		  float **nextunwphase, float **lastunwphase, 		  float *unwphaseabove, float *unwphasebelow, void **costs, 		  void **nextcosts, void **lastcosts, void *costsabove, 		  void *costsbelow, long prevnrow, long prevncol, long tilerow,		  long tilecol, long nrow, long ncol, nodeT **scndrynodes,		  nodesuppT **nodesupp, scndryarcT **scndryarcs, 		  long ***scndrycosts, short *nscndrynodes, 		  short *nscndryarcs, long *totarclens, short **bulkoffsets, 		  paramT *params);long FindNumPathsOut(nodeT *from, paramT *params, long tilerow, long tilecol, 		     long nnrow, long nncol, short **regions, 		     short **nextregions, short **lastregions,		     short *regionsabove, short *regionsbelow, long prevncol);void RegionTraceCheckNeighbors(nodeT *from, nodeT **nextnodeptr, 			       nodeT **primarynodes, short **regions, 			       short **nextregions, short **lastregions, 			       short *regionsabove, short *regionsbelow,  			       long tilerow, long tilecol, long nnrow, 			       long nncol, nodeT **scndrynodes, 			       nodesuppT **nodesupp, scndryarcT **scndryarcs, 			       long *nnewnodesptr, long *nnewarcsptr, 			       long flowmax, long nrow, long ncol, 			       long prevnrow, long prevncol, paramT *params, 			       void **costs, void **rightedgecosts, 			       void **loweredgecosts, void **leftedgecosts, 			       void **upperedgecosts, short **flows, 			       short **rightedgeflows, short **loweredgeflows,			       short **leftedgeflows, short **upperedgeflows,			       long ***scndrycosts, 			       nodeT ***updatednontilenodesptr, 			       long *nupdatednontilenodesptr, 			       long *updatednontilenodesizeptr,			       short **inontilenodeoutarcptr, 			       long *totarclenptr);void SetUpperEdge(long ncol, long tilerow, long tilecol, void **voidcosts, 		  void *voidcostsabove, float **unwphase, 		  float *unwphaseabove, void **voidupperedgecosts, 		  short **upperedgeflows, paramT *params, short **bulkoffsets);void SetLowerEdge(long nrow, long ncol, long tilerow, long tilecol, 		  void **voidcosts, void *voidcostsbelow, 		  float **unwphase, float *unwphasebelow, 		  void **voidloweredgecosts, short **loweredgeflows, 		  paramT *params, short **bulkoffsets);void SetLeftEdge(long nrow, long prevncol, long tilerow, long tilecol, 		 void **voidcosts, void **voidlastcosts, float **unwphase, 		 float **lastunwphase, void **voidleftedgecosts, 		 short **leftedgeflows, paramT *params, short **bulkoffsets);void SetRightEdge(long nrow, long ncol, long tilerow, long tilecol, 		  void **voidcosts, void **voidnextcosts, 		  float **unwphase, float **nextunwphase, 		  void **voidrightedgecosts, short **rightedgeflows, 		  paramT *params, short **bulkoffsets);void TraceSecondaryArc(nodeT *primaryhead, nodeT **scndrynodes, 		       nodesuppT **nodesupp, scndryarcT **scndryarcs, 		       long ***scndrycosts, long *nnewnodesptr, 		       long *nnewarcsptr, long tilerow, long tilecol, 		       long flowmax, long nrow, long ncol, 		       long prevnrow, long prevncol, paramT *params, 		       void **tilecosts, void **rightedgecosts, 		       void **loweredgecosts, void **leftedgecosts,		       void **upperedgecosts, short **tileflows, 		       short **rightedgeflows, short **loweredgeflows, 		       short **leftedgeflows, short **upperedgeflows,		       nodeT ***updatednontilenodesptr, 		       long *nupdatednontilenodesptr, 		       long *updatednontilenodesizeptr,		       short **inontilenodeoutarcptr, long *totarclenptr);nodeT *FindScndryNode(nodeT **scndrynodes, nodesuppT **nodesupp, 		      long tilenum, long primaryrow, long primarycol);void IntegrateSecondaryFlows(long linelen, long nlines, nodeT **scndrynodes, 			     nodesuppT **nodesupp, scndryarcT **scndryarcs, 			     short *nscndryarcs, short **scndryflows, 			     short **bulkoffsets, outfileT *outfiles, 			     paramT *params);void ParseSecondaryFlows(long tilenum, short *nscndryarcs, short **tileflows, 			 short **regions, short **scndryflows, 			 nodesuppT **nodesupp, scndryarcT **scndryarcs, 			 long nrow, long ncol, long ntilerow, long ntilecol,			 paramT *params);/* functions in snaphu_solver.c */long TreeSolve(nodeT **nodes, nodesuppT **nodesupp, nodeT *ground, 	       nodeT *source, candidateT **candidatelistptr, 	       candidateT **candidatebagptr, long *candidatelistsizeptr,	       long *candidatebagsizeptr, bucketT *bkts, short **flows, 	       void **costs, incrcostT **incrcosts, nodeT ***apexes, 	       signed char **iscandidate, long ngroundarcs, long nflow, 	       float **mag, float **wrappedphase, char *outfile, 	       long nnoderow, short *nnodesperrow, long narcrow, 	       short *narcsperrow, long nrow, long ncol,	       outfileT *outfiles, paramT *params);void AddNewNode(nodeT *from, nodeT *to, long arcdir, bucketT *bkts, 		long nflow, incrcostT **incrcosts, long arcrow, long arccol, 		paramT *params);void CheckArcReducedCost(nodeT *from, nodeT *to, nodeT *apex, 			 long arcrow, long arccol, long arcdir, 			 long nflow, nodeT **nodes, nodeT *ground, 			 candidateT **candidatebagptr, 			 long *candidatebagnextptr, 			 long *candidatebagsizeptr, incrcostT **incrcosts, 			 signed char **iscandidate, paramT *params);long InitTree(nodeT *source, nodeT **nodes, nodesuppT **nodesupp, 	      nodeT *ground, long ngroundarcs, bucketT *bkts, long nflow, 	      incrcostT **incrcosts, nodeT ***apexes, 	      signed char **iscandidate, long nnoderow, short *nnodesperrow, 	      long narcrow, short *narcsperrow, long nrow, long ncol, 	      paramT *params);nodeT *FindApex(nodeT *from, nodeT *to);int CandidateCompare(const void *c1, const void *c2);nodeT *NeighborNodeGrid(nodeT *node1, long arcnum, long *upperarcnumptr,			nodeT **nodes, nodeT *ground, long *arcrowptr, 			long *arccolptr, long *arcdirptr, long nrow, 			long ncol, nodesuppT **nodesupp);nodeT *NeighborNodeNonGrid(nodeT *node1, long arcnum, long *upperarcnumptr,			   nodeT **nodes, nodeT *ground, long *arcrowptr, 			   long *arccolptr, long *arcdirptr, long nrow, 			   long ncol, nodesuppT **nodesupp);void GetArcGrid(nodeT *from, nodeT *to, long *arcrow, long *arccol, 		long *arcdir, long nrow, long ncol, nodesuppT **nodesupp);void GetArcNonGrid(nodeT *from, nodeT *to, long *arcrow, long *arccol, 		   long *arcdir, long nrow, long ncol, nodesuppT **nodesupp);void NonDegenUpdateChildren(nodeT *startnode, nodeT *lastnode, 			    nodeT *nextonpath, long dgroup, 			    long ngroundarcs, long nflow, nodeT **nodes,			    nodesuppT **nodesupp, nodeT *ground, 			    nodeT ***apexes, incrcostT **incrcosts, 			    long nrow, long ncol, paramT *params);void InitNetwork(short **flows, long *ngroundarcsptr, long *ncycleptr, 		 long *nflowdoneptr, long *mostflowptr, long *nflowptr, 		 long *candidatebagsizeptr, candidateT **candidatebagptr, 		 long *candidatelistsizeptr, candidateT **candidatelistptr, 		 signed char ***iscandidateptr, nodeT ****apexesptr, 		 bucketT **bktsptr, long *iincrcostfileptr, 		 incrcostT ***incrcostsptr, nodeT ***nodesptr, nodeT *ground, 		 long *nnoderowptr, short **nnodesperrowptr, long *narcrowptr,		 short **narcsperrowptr, long nrow, long ncol, 		 signed char *notfirstloopptr, totalcostT *totalcostptr,		 paramT *params);void InitNodeNums(long nrow, long ncol, nodeT **nodes, nodeT *ground);void InitBuckets(bucketT *bkts, nodeT *source, long nbuckets);void InitNodes(long nrow, long ncol, nodeT **nodes, nodeT *ground);void BucketInsert(nodeT *node, long ind, bucketT *bkts);void BucketRemove(nodeT *node, long ind, bucketT *bkts);nodeT *ClosestNode(bucketT *bkts);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -