00001 
00002 #ifndef  __JBXL_GRAPHIC_MATH_H_
00003 #define  __JBXL_GRAPHIC_MATH_H_
00004 
00005 
00014 #include "gdata.h"
00015 
00019 typedef struct {
00020     int    mode;    
00021     int    msize;   
00022     int    nfact;   
00023     int*   imask;   
00024 } FMask;
00025 
00026 
00027 #define   ALL           0x0000
00028 #define   NONE_SHAPE    0x0001
00029 #define   PEAK          0x0002
00030 #define   PIT           0x0004
00031 #define   SADDLE_RIDGE  0x0008
00032 #define   SADDLE_VALLEY 0x0010
00033 #define   MINIMAL       0x0020
00034 #define   RIDGE         0x0040
00035 #define   VALLEY        0x0080
00036 #define   FLAT          0x0100
00037 
00038 
00039 #define   TOP_VIEW         0
00040 #define   SIDEZ_VIEW       0
00041 #define   SIDEX_VIEW       1
00042 #define   SIDEY_VIEW       2
00043 #define   TOP_VIEW_DEPTH   3
00044 #define   SIDEZ_VIEW_DEPTH 3
00045 
00046 
00047 WSGraph  xSobel(WSGraph vp); 
00048 WSGraph  ySobel(WSGraph vp); 
00049 WSGraph  zSobel(WSGraph vp); 
00050 FSGraph  fxSobel(FSGraph vp);
00051 FSGraph  fySobel(FSGraph vp);
00052 FSGraph  fzSobel(FSGraph vp);
00053 
00054 WSGraph  xxSobel(WSGraph vp);
00055 WSGraph  yySobel(WSGraph vp);
00056 WSGraph  zzSobel(WSGraph vp);
00057 FSGraph  fxxSobel(FSGraph vp);
00058 FSGraph  fyySobel(FSGraph vp);
00059 FSGraph  fzzSobel(FSGraph vp);
00060 
00061 WSGraph  Nabra (WSGraph vp); 
00062 FSGraph  fNabra(FSGraph vp); 
00063 VSGraph  vNabra(WSGraph vp); 
00064 VSGraph  vfNabra(FSGraph vp);
00065 
00066 WSGraph  Laplacian(WSGraph vp, int mode);
00067 
00068 VSGraph  curvature(FSGraph vp);
00069 VSGraph  curvature3D(FSGraph vp);
00070 WSGraph  curv2WSGraph(VSGraph vp);
00071 WSGraph  WSCurve(WSGraph gx, int mode, int cc);
00072 
00073 WSGraph  euclid_distance(WSGraph vp, int* rr, int bc);
00074 int      out_round(WSGraph, int, int, IRBound*, int);
00075 
00076 WSGraph  edge_enhance(WSGraph gd, int mode);
00077 WSGraph  median(WSGraph, int);
00078 FMask    gauss_mask(double sig, int mode, int size);
00079 WSGraph  imask(WSGraph, FMask);
00080 WSGraph  to2d(WSGraph gd, int mode);
00081 
00082 #define  distance2(vp, rr, bc)   euclid_distance(vp, rr, bc)
00083 #define  mip(vp)                 to2d(vp, TOP_VIEW)
00084 #define  free_mask(mk)           free((mk)->imask)
00085 
00086 
00087 #endif      // __JBXL_GRAPHIC_MATH_H_
00088