00001 #ifndef __CLARITY_LIB_H_
00002 #define __CLARITY_LIB_H_
00003
00018 #ifdef __cplusplus
00019 # if defined(WIN32) && defined(CLARITY_SHARED_LIB)
00020 # ifdef Clarity_EXPORTS
00021 # define C_FUNC_DEF extern "C" __declspec(dllexport)
00022 # else
00023 # define C_FUNC_DEF extern "C" __declspec(dllimport)
00024 # endif
00025 # else
00026 # define C_FUNC_DEF extern "C"
00027 # endif
00028 #else
00029 # if defined(WIN32) && defined(CLARITY_SHARED_LIB)
00030 # ifdef Clarity_EXPORTS
00031 # define C_FUNC_DEF __declspec(dllexport)
00032 # else
00033 # define C_FUNC_DEF __declspec(dllimport)
00034 # endif
00035 # else
00036 # define C_FUNC_DEF
00037 # endif
00038 #endif
00039
00040 #ifndef NULL
00041 #define NULL 0L
00042 #endif
00043
00046 typedef enum {
00047 CLARITY_FFT_FAILED,
00049 CLARITY_OUT_OF_MEMORY,
00051 CLARITY_DEVICE_OUT_OF_MEMORY,
00053 CLARITY_INVALID_OPERATION,
00055 CLARITY_INVALID_ARGUMENT,
00056 CLARITY_SUCCESS
00057 } ClarityResult_t;
00058
00059
00060
00061
00062
00063
00065 typedef struct _Clarity_Dim3_t {
00066 int x;
00067 int y;
00068 int z;
00069 } Clarity_Dim3;
00070
00071
00078 C_FUNC_DEF
00079 Clarity_Dim3
00080 Clarity_Dim3FromArray(int dimArray[3]);
00081
00082
00083
00084
00085
00086
00092 C_FUNC_DEF
00093 ClarityResult_t
00094 Clarity_Register();
00095
00096
00102 C_FUNC_DEF
00103 ClarityResult_t
00104 Clarity_UnRegister();
00105
00106
00115 C_FUNC_DEF
00116 ClarityResult_t
00117 Clarity_SetNumberOfThreads(unsigned n);
00118
00119
00136 C_FUNC_DEF
00137 ClarityResult_t
00138 Clarity_ImagePadSpatialShift(float *dst, Clarity_Dim3 dstDim,
00139 float *src, Clarity_Dim3 srcDim,
00140 int shift[3], float fillValue);
00141
00155 C_FUNC_DEF
00156 ClarityResult_t
00157 Clarity_ImageClip(float *dst, Clarity_Dim3 dstDim, float *src, Clarity_Dim3 srcDim);
00158
00159
00160
00161
00162
00163
00181 C_FUNC_DEF
00182 ClarityResult_t
00183 Clarity_WienerDeconvolve(float* inImage, Clarity_Dim3 imageDim,
00184 float* kernelImage, Clarity_Dim3 kernelDim,
00185 float* outImage, float epsilon);
00186
00187
00202 C_FUNC_DEF
00203 ClarityResult_t
00204 Clarity_JansenVanCittertDeconvolve(float* inImage, Clarity_Dim3 imageDim,
00205 float* kernelImage, Clarity_Dim3 kernelDim,
00206 float* outImage, int iterations);
00207
00230 C_FUNC_DEF
00231 ClarityResult_t
00232 Clarity_SmoothedJansenVanCittertDeconvolve(
00233 float* inImage, Clarity_Dim3 imageDim,
00234 float* kernelImage, Clarity_Dim3 kernelDim,
00235 float* outImage, unsigned iterations, unsigned smoothInterval,
00236 float* smoothSigma[3]);
00237
00238
00259 C_FUNC_DEF
00260 ClarityResult_t
00261 Clarity_IDivergenceDeconvolve(
00262 float* inImage, Clarity_Dim3 imageDim,
00263 float* kernelImage, Clarity_Dim3 kernelDim,
00264 float* outImage);
00265
00266
00282 C_FUNC_DEF
00283 ClarityResult_t
00284 Clarity_MaximumLikelihoodDeconvolve(float* inImage, Clarity_Dim3 imageDim,
00285 float* kernelImage, Clarity_Dim3 kernelDim,
00286 float* outImage, int iterations);
00287
00301 C_FUNC_DEF
00302 ClarityResult_t
00303 Clarity_BlindMaximumLikelihoodDeconvolve(float* outImage, float* inImage, float* psfImage,
00304 Clarity_Dim3 dim, unsigned iterations);
00305
00306
00307
00308
00309
00310
00320 C_FUNC_DEF
00321 ClarityResult_t
00322 Clarity_Convolve(float* inImage, Clarity_Dim3 imageDim,
00323 float* kernel, Clarity_Dim3 kernelDim,
00324 float* outImage);
00325
00326
00327 #endif // __CLARITY_LIB_H_