/******************************************************************* * morpho_easy_hdr.h * [CP932/CRLF] { ‚ •„†‰»•ûŽ®Ž©“®”»’è—p } *------------------------------------------------------------------ * Copyright (C) 2010-2012 Morpho,Inc. *******************************************************************/ #ifndef MORPHO_EASY_HDR_H #define MORPHO_EASY_HDR_H /*******************************************************************/ #include "morpho_api.h" #include "morpho_error.h" #include "morpho_image_data.h" #include "morpho_rect_int.h" /*******************************************************************/ #define MORPHO_EASY_HDR_VER "Morpho EasyHDR Ver.2.0.1 2012/07/18" /*-----------------------------------------------------------------*/ /* (input-limitaion) */ #define MORPHO_EASY_HDR_MIN_IMAGE_WIDTH 100 #define MORPHO_EASY_HDR_MAX_IMAGE_WIDTH 8192 #define MORPHO_EASY_HDR_MIN_IMAGE_HEIGHT 100 #define MORPHO_EASY_HDR_MAX_IMAGE_HEIGHT 8192 #define MORPHO_EASY_HDR_MIN_NIMAGES 2 #define MORPHO_EASY_HDR_MAX_NIMAGES 10 /*-----------------------------------------------------------------*/ /* (parameter) */ #define MORPHO_EASY_HDR_DISABLED 0 #define MORPHO_EASY_HDR_ENABLED 1 #define MORPHO_EASY_HDR_IMAGE_ALIGNMENT_DEFAULT MORPHO_EASY_HDR_ENABLED #define MORPHO_EASY_HDR_GHOST_REMOVAL_DEFAULT MORPHO_EASY_HDR_ENABLED #define MORPHO_EASY_HDR_AUTO_SCALING_DEFAULT MORPHO_EASY_HDR_ENABLED #define MORPHO_EASY_HDR_FACE_DETECTION_DEFAULT MORPHO_EASY_HDR_ENABLED #define MORPHO_EASY_HDR_FAIL_SOFT_MERGING_DEFAULT MORPHO_EASY_HDR_ENABLED #define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_MIN 0 #define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_MAX 10 #define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_DEFAULT 7 #define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_MIN 0 #define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_MAX 10 #define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_DEFAULT 6 #define MORPHO_EASY_HDR_MERGE_PARAM_MIN 0 #define MORPHO_EASY_HDR_MERGE_PARAM_MAX 255 #define MORPHO_EASY_HDR_MERGE_PARAM1_DEFAULT 0 #define MORPHO_EASY_HDR_MERGE_PARAM2_DEFAULT 128 #define MORPHO_EASY_HDR_MERGE_PARAM3_DEFAULT 0 #define MORPHO_EASY_HDR_MERGE_PARAM4_DEFAULT 255 #define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_MIN 0 #define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_MAX 100 #define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_DEFAULT 80 #define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_MIN 0 #define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_MAX 100 #define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_DEFAULT 90 #define MORPHO_EASY_HDR_CC_OFFSET_MIN 0 #define MORPHO_EASY_HDR_CC_OFFSET_MAX 255 #define MORPHO_EASY_HDR_CC_Y_OFFSET_DEFAULT 0 #define MORPHO_EASY_HDR_CC_C_OFFSET_DEFAULT 0 #define MORPHO_EASY_HDR_CC_GAIN_MIN 100 #define MORPHO_EASY_HDR_CC_GAIN_MAX 2000 #define MORPHO_EASY_HDR_CC_Y_GAIN_DEFAULT 1000 #define MORPHO_EASY_HDR_CC_C_GAIN_DEFAULT 1000 #define MORPHO_EASY_HDR_CC_GAMMA_MIN 100 #define MORPHO_EASY_HDR_CC_GAMMA_MAX 2000 #define MORPHO_EASY_HDR_CC_Y_GAMMA_DEFAULT 1000 #define MORPHO_EASY_HDR_CC_C_GAMMA_DEFAULT 1000 /*-----------------------------------------------------------------*/ /* (merge-status) */ #define MORPHO_EASY_HDR_OK 0x00000000 #define MORPHO_EASY_HDR_ERROR_IMAGE_ALIGNMENT_FAILURE 0x00000001 #define MORPHO_EASY_HDR_ERROR_EXP_ESTIMATION_FAILURE 0x00000002 #define MORPHO_EASY_HDR_ERROR_MOSTLY_GHOST 0x00000004 #define MORPHO_EASY_HDR_ERROR_INTERNAL 0x80000000 /*******************************************************************/ typedef struct _morpho_EasyHDR morpho_EasyHDR; typedef struct _morpho_EasyHDR_Callback morpho_EasyHDR_Callback; /*-----------------------------------------------------------------*/ /** EasyHDR */ struct _morpho_EasyHDR { void *p; /**< “à•”\‘¢‘̂ւ̃|ƒCƒ“ƒ^ */ }; /** EasyHDR Callback (for multi-thread processing) */ struct _morpho_EasyHDR_Callback { void *p; /**< ƒR[ƒ‹ƒoƒbƒNŠÖ”‚Ì‘æˆêˆø”‚Æ‚µ‚Ä“n‚³‚ê‚é’l */ void * (* thread_create )(void *p, int index, void *(*start_routine)(void *arg), void *arg); int (* thread_destroy)(void *p, void *thread); int (* thread_join )(void *p, void *thread, void **value_ptr); void * (* mutex_create )(void *p); int (* mutex_destroy)(void *p, void *mutex); int (* mutex_lock )(void *p, void *mutex); int (* mutex_trylock)(void *p, void *mutex); int (* mutex_unlock )(void *p, void *mutex); void * (* cond_create )(void *p); int (* cond_destroy )(void *p, void *cond); int (* cond_wait )(void *p, void *cond, void *lock); int (* cond_signal )(void *p, void *cond); int (* cond_broadcast)(void *p, void *cond); }; /*******************************************************************/ #ifdef __cplusplus extern "C" { #endif /*-----------------------------------------------------------------*/ /** * ƒo[ƒWƒ‡ƒ“•¶Žš—ñ‚ðŽæ“¾ * * @return ƒo[ƒWƒ‡ƒ“•¶Žš—ñ(MORPHO_EASY_HDR_VER) */ MORPHO_API(char const *) morpho_EasyHDR_getVersion(void); /*-----------------------------------------------------------------*/ /** * •K—v‚ȃƒ‚ƒŠƒTƒCƒY‚ðŽæ“¾ * * @param[in] max_width “ü—͉摜‚ÌÅ‘å• * @param[in] max_height “ü—͉摜‚ÌÅ‘å‚‚³ * @param[in] format ‰æ‘œƒtƒH[ƒ}ƒbƒg•¶Žš—ñ * * @return •K—v‚ȃƒ‚ƒŠƒTƒCƒY(byte) */ MORPHO_API(int) morpho_EasyHDR_getBufferSize( int max_width, int max_height, char const *format); /** * ‰Šú‰» * * Žg—pƒXƒŒƒbƒh”‚É0ˆÈ‰º‚Ì’l‚ðݒ肵‚½ê‡A * •ªŠ„ŽÀs‚ðs‚¤B * * Žg—pƒXƒŒƒbƒh”‚É1ˆÈã‚Ì’l‚ðݒ肵‚½ê‡A * ˆêŠ‡ŽÀs‚ðs‚¤B * * Žg—pƒXƒŒƒbƒh”‚É2ˆÈã‚Ì’l‚ðݒ肵‚½ê‡A * ƒ}ƒ‹ƒ`ƒXƒŒƒbƒh‚É‚æ‚é•À—ñŽÀs(ˆêŠ‡ŽÀs)‚ðs‚¤B * callback ‚É“KØ‚È’l‚ðÝ’è‚·‚é•K—v‚ ‚èB * * yŽÀsó‘Ô‚Ì‘JˆÚz * ?_UNKNOWN ¨ 0_INITIALIZED * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] buffer EasyHDR‚ÉŠ„‚è“–‚Ă郃‚ƒŠ‚ւ̃|ƒCƒ“ƒ^ * @param[in] buffer_size EasyHDR‚ÉŠ„‚è“–‚Ă郃‚ƒŠ‚̃TƒCƒY * @param[in] nthreads Žg—pƒXƒŒƒbƒh” (ƒRƒA”) * @param[in] callback ƒR[ƒ‹ƒoƒbƒNŠÖ”ŒQ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_initialize( morpho_EasyHDR *p, void *buffer, int buffer_size, int nthreads, morpho_EasyHDR_Callback const *callback); /** * ƒNƒŠ[ƒ“ƒAƒbƒv * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_finalize( morpho_EasyHDR *p); /*-----------------------------------------------------------------*/ /** * ‡¬‚ÌŠJŽnEŽÀs * setImageFormat() ŽÀsŒã‚ÉŽÀs‰Â”\ * * yŽÀsó‘Ô‚Ì‘JˆÚ (ˆêŠ‡ŽÀsŽž)z * 0_INITIALIZED ¨ (1_PROCESSING) ¨ 0_INITIALIZED (ˆ—Š®—¹) * ¨ 2_SUSPENDED (suspend()ŒÄ‚Ño‚µ) * * yŽÀsó‘Ô‚Ì‘JˆÚ (•ªŠ„ŽÀsŽž)z * 0_INITIALIZED ¨ 3_PAUSED (ˆ—’†) * ¨ 0_INITIALIZED (ˆ—Š®—¹) * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] output_image Œ‹‰Ê‰æ‘œ (u1–‡–Úv‚Ì“ü—͉摜‚ðŽw’è‰Â”\) * @param[in,out] input_images “ü—͉摜ŒQ (ƒGƒ“ƒWƒ“‚É‚æ‚Á‚Ä‘‚«Š·‚¦‚ç‚ê‚é) * @param[in] nimages “ü—͉摜‚Ì” * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_merge( morpho_EasyHDR *p, morpho_ImageData *output_image, morpho_ImageData *input_images[], int nimages); /*-----------------------------------------------------------------*/ /** * ‡¬‚ÌŒp‘±ŽÀs * * merge() ŽÀsŒã‚ÉŽÀs‰Â”\ * * •ªŠ„ŽÀsŽž(initialize() ‚Å nthreads ‚É 0 ‚ðŽw’肵‚½‚Æ‚«)‚Ì‚Ý—LŒø * * yŽÀsó‘Ô‚Ì‘JˆÚ (•ªŠ„ŽÀsŽž)z * 3_PAUSED ¨ 3_PAUSED (ˆ—’†) * ¨ 0_INITIALIZED (ˆ—Š®—¹) * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_process( morpho_EasyHDR *p); /*-----------------------------------------------------------------*/ /** * ‡¬‚Ì’†’f (•ÊƒRƒ“ƒeƒLƒXƒg‚©‚ç‚̌ĂÑo‚µ‚É‚æ‚é) * merge() ŽÀs’†‚ÉŽÀs‰Â”\ * * yŽÀsó‘Ô‚Ì‘JˆÚ (ˆêŠ‡ŽÀsŽž)z * 1_PROCESSING ¨ 2_SUSPENDED * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_suspend( morpho_EasyHDR *p); /** * ‡¬‚ÌÄŠJ * suspend() ŽÀsŒã‚ÉŽÀs‰Â”\ * * yŽÀsó‘Ô‚Ì‘JˆÚ (ˆêŠ‡ŽÀsŽž)z * 2_SUSPENDED ¨ (1_PROCESSING) ¨ 0_INITIALIZED (ˆ—Š®—¹) * ¨ 2_SUSPENDED (suspend()ŒÄ‚Ño‚µ) * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_resume( morpho_EasyHDR *p); /*-----------------------------------------------------------------*/ /** * ‰æ‘œƒtƒH[ƒ}ƒbƒg‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] format ‰æ‘œƒtƒH[ƒ}ƒbƒg‚ð‚ ‚ç‚í‚·•¶Žš—ñ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setImageFormat( morpho_EasyHDR *p, char const *format); /** * ‰æ‘œƒtƒH[ƒ}ƒbƒg‚̎擾 * setImageFormat() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] buffer ‰æ‘œƒtƒH[ƒ}ƒbƒg‚ð‚ ‚ç‚í‚·•¶Žš—ñ‚ªŠi”[‚³‚ê‚éƒoƒbƒtƒ@ * @param[in] buffer_size ƒoƒbƒtƒ@‚̃TƒCƒY(I’[•¶ŽšŠÜ‚Þ) * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getImageFormat( morpho_EasyHDR *p, char *buffer, int buffer_size); /*-----------------------------------------------------------------*/ /** * ˆÊ’u‡‚킹(Žè‚Ô‚ê•â³)‚Ì—L–³‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * value: * MOR_EASY_HDR_ENABLED : ˆÊ’u‡‚킹‚ ‚è * MOR_EASY_HDR_DISABLED : ˆÊ’u‡‚킹‚È‚µ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setImageAlignmentStatus( morpho_EasyHDR *p, int value); /** * ˆÊ’u‡‚킹(Žè‚Ô‚ê•â³)‚Ì—L–³‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getImageAlignmentStatus( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * ƒS[ƒXƒgœ‹Ž(”íŽÊ‘Ì‚Ô‚ê•â³)‚Ì—L–³‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * value: * MOR_EASY_HDR_ENABLED : ƒS[ƒXƒgœ‹Ž‚ ‚è * MOR_EASY_HDR_DISABLED : ƒS[ƒXƒgœ‹Ž‚È‚µ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setGhostRemovalStatus( morpho_EasyHDR *p, int value); /** * ƒS[ƒXƒgœ‹Ž(”íŽÊ‘Ì‚Ô‚ê•â³)‚Ì—L–³‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getGhostRemovalStatus( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * Ž©“®Šg‘å(ƒNƒŠƒbƒsƒ“ƒO)‚Ì—L–³‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * value: * MOR_EASY_HDR_ENABLED : Ž©“®Šg‘å‚ ‚è * MOR_EASY_HDR_DISABLED : Ž©“®Šg‘å‚È‚µ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setAutoScalingStatus( morpho_EasyHDR *p, int value); /** * Ž©“®Šg‘å(ƒNƒŠƒbƒsƒ“ƒO)‚Ì—L–³‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getAutoScalingStatus( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * ŠçŒŸo•â³‚Ì—L–³‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * value: * MOR_EASY_HDR_ENABLED : ŠçŒŸo•â³‚ ‚è * MOR_EASY_HDR_DISABLED : ŠçŒŸo•â³‚È‚µ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setFaceDetectionStatus( morpho_EasyHDR *p, int value); /** * ŠçŒŸo•â³‚Ì—L–³‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getFaceDetectionStatus( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * Fail-soft-merging ‚Ì—L–³‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * value: * MOR_EASY_HDR_ENABLED : Fail-soft-merging ‚ ‚è * MOR_EASY_HDR_DISABLED : Fail-soft-merging ‚È‚µ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setFailSoftMergingStatus( morpho_EasyHDR *p, int value); /** * Fail-soft-merging ‚Ì—L–³‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getFailSoftMergingStatus( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * ƒS[ƒXƒg”»’芴“xƒŒƒxƒ‹‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setGhostDetectionSensitivityLevel( morpho_EasyHDR *p, int value); /** * ƒS[ƒXƒg”»’芴“xƒŒƒxƒ‹‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getGhostDetectionSensitivityLevel( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * ‡¬‚È‚ß‚ç‚©‚³‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setMergeSmoothnessLevel( morpho_EasyHDR *p, int value); /** * ‡¬‚È‚ß‚ç‚©‚³‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getMergeSmoothnessLevel( morpho_EasyHDR *p, int *value); /*-----------------------------------------------------------------*/ /** * ‡¬ƒpƒ‰ƒ[ƒ^‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] value1 Ý’è’l * @param[in] value2 Ý’è’l * @param[in] value3 Ý’è’l * @param[in] value4 Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setMergeParameters( morpho_EasyHDR *p, int value1, int value2, int value3, int value4); /** * ‡¬ƒpƒ‰ƒ[ƒ^‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] value1 Ý’è’lŠi”[æ * @param[out] value2 Ý’è’lŠi”[æ * @param[out] value3 Ý’è’lŠi”[æ * @param[out] value4 Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getMergeParameters( morpho_EasyHDR *p, int *value1, int *value2, int *value3, int *value4); /*-----------------------------------------------------------------*/ /** * —LŒø—̈æ臒l‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] rate Ý’è’l (’†‰› rate % ‹éŒ`) * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setReliableRectRateThreshold( morpho_EasyHDR *p, int rate); /** * —LŒø—̈æ臒l‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] rate Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getReliableRectRateThreshold( morpho_EasyHDR *p, int *rate); /** * —LŒø—̈æ‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * (—LŒø‚È’l‚ªƒZƒbƒg‚³‚ê‚é‚Ì‚Í merge() Œã) * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] rect Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getReliableRect( morpho_EasyHDR *p, morpho_RectInt *rect); /*-----------------------------------------------------------------*/ /** * ƒS[ƒXƒgŠ„‡è‡’l‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] rate Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setGhostRateThreshold( morpho_EasyHDR *p, int rate); /** * ƒS[ƒXƒgŠ„‡è‡’l‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] rate Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getGhostRateThreshold( morpho_EasyHDR *p, int *rate); /*-----------------------------------------------------------------*/ /** * F•â³ƒpƒ‰ƒ[ƒ^‚ÌÝ’è * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[in] y_offset Ý’è’l * @param[in] y_gain Ý’è’l * @param[in] y_gamma Ý’è’l * @param[in] c_offset Ý’è’l * @param[in] c_gain Ý’è’l * @param[in] c_gamma Ý’è’l * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_setColorCorrectionParameters( morpho_EasyHDR *p, int y_offset, int y_gain, int y_gamma, int c_offset, int c_gain, int c_gamma); /** * F•â³ƒpƒ‰ƒ[ƒ^‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] y_offset Ý’è’lŠi”[æ * @param[out] y_gain Ý’è’lŠi”[æ * @param[out] y_gamma Ý’è’lŠi”[æ * @param[out] c_offset Ý’è’lŠi”[æ * @param[out] c_gain Ý’è’lŠi”[æ * @param[out] c_gamma Ý’è’lŠi”[æ * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_getColorCorrectionParameters( morpho_EasyHDR *p, int *y_offset, int *y_gain, int *y_gamma, int *c_offset, int *c_gain, int *c_gamma); /*-----------------------------------------------------------------*/ /** * ‡¬ƒXƒe[ƒ^ƒX‚̎擾 * initialize() ŽÀsŒã‚ÉŽÀs‰Â”\ * * ƒXƒe[ƒ^ƒXƒR[ƒh * MORPHO_EASY_HDR_OK * MORPHO_EASY_HDR_ERROR_* * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * * @return ƒXƒe[ƒ^ƒXƒR[ƒh (MORPHO_EASMORPHO_EASY_HDR_ERROR_ */ MORPHO_API(int) morpho_EasyHDR_getMergeStatus( morpho_EasyHDR *p); /*-----------------------------------------------------------------*/ /** * ƒTƒ€ƒlƒCƒ‹‚Ìì¬ (o—͉摜‚Ìk¬) * morpho_EasyHDR_setImageFormat() ŽÀsŒã‚ÉŽÀs‰Â”\ * * @param[in,out] p EasyHDR ƒCƒ“ƒXƒ^ƒ“ƒX * @param[out] thumbnail_image o—͉摜 * @param[in] output_image “ü—͉摜 * * @return ƒGƒ‰[ƒR[ƒh (see morpho_error.h) */ MORPHO_API(int) morpho_EasyHDR_makeThumbnail( morpho_EasyHDR *p, morpho_ImageData *thumbnail_image, morpho_ImageData const *output_image); /*-----------------------------------------------------------------*/ #ifdef __cplusplus } /* extern "C" */ #endif /*******************************************************************/ #endif /* !MORPHO_EASY_HDR_H */ /*******************************************************************/ /* [EOF] */