OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/base.git] / src / Tools / mrcImage / mrcImageBilateralFilter / src / mrcImageBilateralFilter.c
1 /*
2 # mrcImageBilateralFilter : $Revision$  
3 # $Date$ 
4 # Created by $Author$
5 # Usage : mrcImageBilateralFilter
6 # Attention
7 #   $Loccker$
8 #       $State$ 
9 #
10 */
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <string.h>
14 #include <math.h>                  
15 #define GLOBAL_DECLARATION
16 #include "../inc/config.h"
17
18 #define DEBUG
19 #include "genUtil.h"
20 #include "mrcImage.h"
21 #include "lmrcImageBilateralFilter.h"
22
23 /*
24 Example:
25 typedef struct lmrcImageBilateralFilterInfo {
26         float a;
27         int   b;
28 } lmrcImageBilateralFilterInfo;
29
30 typedef enum lmrcImageBilateralFilterMode {
31         a=0,
32         b=1
33 } lmrcImageBilateralFilterMode;
34 */
35
36 int
37 main(int argc, char* argv[]) 
38 {
39         mrcImageBilateralFilterInfo info;
40         lmrcImageBilateralFilterInfo linfo;
41         mrcImage in;
42         mrcImage out;
43
44         init0(&info);
45     argCheck(&info, argc, argv);
46     init1(&info);
47
48         DEBUGPRINT("Program Start\n");
49
50         // Set Kernel Size
51         if(info.flagKernelSizeX) {
52                 linfo.kernelSize.x = info.KernelSizeX; 
53                 linfo.kernelSize.y = info.KernelSizeY; 
54                 linfo.kernelSize.z = info.KernelSizeZ; 
55                 linfo.flagKernelSize = 1;
56         } else if(info.flagKernelSize) {
57                 linfo.kernelSize.x = info.KernelSize;
58                 linfo.kernelSize.y = info.KernelSize;
59                 linfo.kernelSize.z = info.KernelSize;
60                 linfo.flagKernelSize = 1;
61         } else {
62                 fprintf(stderr, "Use default kernelSIze %ld %ld %ld\n", info.KernelSizeX, info.KernelSizeY, info.KernelSizeZ);
63                 linfo.kernelSize.x = info.KernelSizeX; 
64                 linfo.kernelSize.y = info.KernelSizeY; 
65                 linfo.kernelSize.z = info.KernelSizeZ; 
66                 linfo.flagKernelSize = 1;
67         }
68
69         linfo.sigmaDensity = info.SigmaDensity;
70         linfo.sigmaDensityMode = info.KernelTypeDensity;
71
72         if(info.flagSigmaSpaceX) {
73                 linfo.sigmaSpace.x = info.SigmaSpaceX;
74                 linfo.sigmaSpace.y = info.SigmaSpaceY;
75                 linfo.sigmaSpace.z = info.SigmaSpaceZ;
76         } else if(info.flagSigmaSpace) {
77                 linfo.sigmaSpace.x = info.SigmaSpace;
78                 linfo.sigmaSpace.y = info.SigmaSpace;
79                 linfo.sigmaSpace.z = info.SigmaSpace;
80         } else {
81                 linfo.sigmaSpace.x = info.SigmaSpaceX;
82                 linfo.sigmaSpace.y = info.SigmaSpaceY;
83                 linfo.sigmaSpace.z = info.SigmaSpaceZ;
84         }
85
86         linfo.sigmaSpaceMode = info.KernelTypeSpace;
87
88         mrcFileRead(&in, info.In, "in main", 0);
89
90         lmrcImageBilateralFilter(&out, &in, linfo, info.mode);
91
92         mrcFileWrite(&out, info.Out, "in main", 0);
93
94         exit(EXIT_SUCCESS);
95 }
96
97 void
98 additionalUsage()
99 {
100         fprintf(stderr, "----- Additional Usage -----\n");
101         lmrcImageBilateralFilterUsage(stderr);
102 }