• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************
2  * morpho_easy_hdr.h
3  * [CP932/CRLF] { �� ������������������p }
4  *------------------------------------------------------------------
5  * Copyright (C) 2010-2012 Morpho,Inc.
6  *******************************************************************/
7 
8 #ifndef MORPHO_EASY_HDR_H
9 #define MORPHO_EASY_HDR_H
10 
11 /*******************************************************************/
12 
13 #include "morpho_api.h"
14 #include "morpho_error.h"
15 #include "morpho_image_data.h"
16 #include "morpho_rect_int.h"
17 
18 /*******************************************************************/
19 
20 #define MORPHO_EASY_HDR_VER "Morpho EasyHDR Ver.2.0.1 2012/07/18"
21 
22 /*-----------------------------------------------------------------*/
23 
24 /* (input-limitaion) */
25 
26 #define MORPHO_EASY_HDR_MIN_IMAGE_WIDTH    100
27 #define MORPHO_EASY_HDR_MAX_IMAGE_WIDTH   8192
28 #define MORPHO_EASY_HDR_MIN_IMAGE_HEIGHT   100
29 #define MORPHO_EASY_HDR_MAX_IMAGE_HEIGHT  8192
30 #define MORPHO_EASY_HDR_MIN_NIMAGES   2
31 #define MORPHO_EASY_HDR_MAX_NIMAGES  10
32 
33 /*-----------------------------------------------------------------*/
34 
35 /* (parameter) */
36 
37 #define MORPHO_EASY_HDR_DISABLED 0
38 #define MORPHO_EASY_HDR_ENABLED  1
39 
40 #define MORPHO_EASY_HDR_IMAGE_ALIGNMENT_DEFAULT  MORPHO_EASY_HDR_ENABLED
41 
42 #define MORPHO_EASY_HDR_GHOST_REMOVAL_DEFAULT  MORPHO_EASY_HDR_ENABLED
43 
44 #define MORPHO_EASY_HDR_AUTO_SCALING_DEFAULT  MORPHO_EASY_HDR_ENABLED
45 
46 #define MORPHO_EASY_HDR_FACE_DETECTION_DEFAULT  MORPHO_EASY_HDR_ENABLED
47 
48 #define MORPHO_EASY_HDR_FAIL_SOFT_MERGING_DEFAULT  MORPHO_EASY_HDR_ENABLED
49 
50 #define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_MIN      0
51 #define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_MAX     10
52 #define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_DEFAULT  7
53 
54 #define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_MIN      0
55 #define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_MAX     10
56 #define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_DEFAULT  6
57 
58 #define MORPHO_EASY_HDR_MERGE_PARAM_MIN        0
59 #define MORPHO_EASY_HDR_MERGE_PARAM_MAX      255
60 #define MORPHO_EASY_HDR_MERGE_PARAM1_DEFAULT   0
61 #define MORPHO_EASY_HDR_MERGE_PARAM2_DEFAULT 128
62 #define MORPHO_EASY_HDR_MERGE_PARAM3_DEFAULT   0
63 #define MORPHO_EASY_HDR_MERGE_PARAM4_DEFAULT 255
64 
65 #define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_MIN       0
66 #define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_MAX     100
67 #define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_DEFAULT  80
68 
69 #define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_MIN       0
70 #define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_MAX     100
71 #define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_DEFAULT  90
72 
73 #define MORPHO_EASY_HDR_CC_OFFSET_MIN          0
74 #define MORPHO_EASY_HDR_CC_OFFSET_MAX        255
75 #define MORPHO_EASY_HDR_CC_Y_OFFSET_DEFAULT    0
76 #define MORPHO_EASY_HDR_CC_C_OFFSET_DEFAULT    0
77 
78 #define MORPHO_EASY_HDR_CC_GAIN_MIN        100
79 #define MORPHO_EASY_HDR_CC_GAIN_MAX       2000
80 #define MORPHO_EASY_HDR_CC_Y_GAIN_DEFAULT 1000
81 #define MORPHO_EASY_HDR_CC_C_GAIN_DEFAULT 1000
82 
83 #define MORPHO_EASY_HDR_CC_GAMMA_MIN        100
84 #define MORPHO_EASY_HDR_CC_GAMMA_MAX       2000
85 #define MORPHO_EASY_HDR_CC_Y_GAMMA_DEFAULT 1000
86 #define MORPHO_EASY_HDR_CC_C_GAMMA_DEFAULT 1000
87 
88 /*-----------------------------------------------------------------*/
89 
90 /* (merge-status) */
91 
92 #define MORPHO_EASY_HDR_OK                             0x00000000
93 #define MORPHO_EASY_HDR_ERROR_IMAGE_ALIGNMENT_FAILURE  0x00000001
94 #define MORPHO_EASY_HDR_ERROR_EXP_ESTIMATION_FAILURE   0x00000002
95 #define MORPHO_EASY_HDR_ERROR_MOSTLY_GHOST             0x00000004
96 #define MORPHO_EASY_HDR_ERROR_INTERNAL                 0x80000000
97 
98 /*******************************************************************/
99 
100 typedef struct _morpho_EasyHDR morpho_EasyHDR;
101 typedef struct _morpho_EasyHDR_Callback morpho_EasyHDR_Callback;
102 
103 /*-----------------------------------------------------------------*/
104 
105 /** EasyHDR */
106 struct _morpho_EasyHDR
107 {
108     void *p; /**< �����\���̂ւ̃|�C���^ */
109 };
110 
111 /** EasyHDR Callback (for multi-thread processing) */
112 struct _morpho_EasyHDR_Callback
113 {
114     void *p; /**< �R�[���o�b�N�֐��̑������Ƃ��ēn�����l */
115 
116     void * (* thread_create )(void *p, int index, void *(*start_routine)(void *arg), void *arg);
117     int    (* thread_destroy)(void *p, void *thread);
118     int    (* thread_join   )(void *p, void *thread, void **value_ptr);
119 
120     void * (* mutex_create )(void *p);
121     int    (* mutex_destroy)(void *p, void *mutex);
122     int    (* mutex_lock   )(void *p, void *mutex);
123     int    (* mutex_trylock)(void *p, void *mutex);
124     int    (* mutex_unlock )(void *p, void *mutex);
125 
126     void * (* cond_create   )(void *p);
127     int    (* cond_destroy  )(void *p, void *cond);
128     int    (* cond_wait     )(void *p, void *cond, void *lock);
129     int    (* cond_signal   )(void *p, void *cond);
130     int    (* cond_broadcast)(void *p, void *cond);
131 };
132 
133 /*******************************************************************/
134 
135 #ifdef __cplusplus
136 extern "C"
137 {
138 #endif
139 
140 /*-----------------------------------------------------------------*/
141 
142 /**
143  * �o�[�W������������擾
144  *
145  * @return �o�[�W����������(MORPHO_EASY_HDR_VER)
146  */
147 MORPHO_API(char const *)
148 morpho_EasyHDR_getVersion(void);
149 
150 /*-----------------------------------------------------------------*/
151 
152 /**
153  * �K�v�ȃ������T�C�Y���擾
154  *
155  * @param[in]  max_width   ���͉摜�̍ő啝
156  * @param[in]  max_height  ���͉摜�̍ő卂��
157  * @param[in]  format      �摜�t�H�[�}�b�g������
158  *
159  * @return �K�v�ȃ������T�C�Y(byte)
160  */
161 MORPHO_API(int)
162 morpho_EasyHDR_getBufferSize(
163     int max_width,
164     int max_height,
165     char const *format);
166 
167 /**
168  * ������
169  *
170  * �g�p�X���b�h����0�ȉ��̒l��ݒ肵���ꍇ�A
171  * �������s���s���B
172  *
173  * �g�p�X���b�h����1�ȏ�̒l��ݒ肵���ꍇ�A
174  * �ꊇ���s���s���B
175  *
176  * �g�p�X���b�h����2�ȏ�̒l��ݒ肵���ꍇ�A
177  * �}���`�X���b�h�ɂ�������s(�ꊇ���s)���s���B
178  * callback �ɓK�؂Ȓl��ݒ肷��K�v����B
179  *
180  * �y���s��Ԃ̑J�ځz
181  *     ?_UNKNOWN �� 0_INITIALIZED
182  *
183  * @param[in,out]  p            EasyHDR �C���X�^���X
184  * @param[out]     buffer       EasyHDR�Ɋ��蓖�Ă郁�����ւ̃|�C���^
185  * @param[in]      buffer_size  EasyHDR�Ɋ��蓖�Ă郁�����̃T�C�Y
186  * @param[in]      nthreads     �g�p�X���b�h�� (�R�A��)
187  * @param[in]      callback     �R�[���o�b�N�֐��Q
188  *
189  * @return �G���[�R�[�h (see morpho_error.h)
190  */
191 MORPHO_API(int)
192 morpho_EasyHDR_initialize(
193     morpho_EasyHDR *p,
194     void *buffer,
195     int buffer_size,
196     int nthreads,
197     morpho_EasyHDR_Callback const *callback);
198 
199 /**
200  * �N���[���A�b�v
201  * initialize() ���s��Ɏ��s�”\
202  *
203  * @param[in,out]  p  EasyHDR �C���X�^���X
204  *
205  * @return �G���[�R�[�h (see morpho_error.h)
206  */
207 MORPHO_API(int)
208 morpho_EasyHDR_finalize(
209     morpho_EasyHDR *p);
210 
211 /*-----------------------------------------------------------------*/
212 
213 /**
214  * �����̊J�n�E���s
215  * setImageFormat() ���s��Ɏ��s�”\
216  *
217  * �y���s��Ԃ̑J�� (�ꊇ���s��)�z
218  *     0_INITIALIZED �� (1_PROCESSING) �� 0_INITIALIZED (��������)
219  *                                     �� 2_SUSPENDED   (suspend()�Ăяo��)
220  *
221  * �y���s��Ԃ̑J�� (�������s��)�z
222  *     0_INITIALIZED �� 3_PAUSED      (������)
223  *                   �� 0_INITIALIZED (��������)
224  *
225  * @param[in,out]  p             EasyHDR �C���X�^���X
226  * @param[out]     output_image  ���ʉ摜 (�u1���ځv�̓��͉摜���w��”\)
227  * @param[in,out]  input_images  ���͉摜�Q (�G���W���ɂ���ď�����������)
228  * @param[in]      nimages       ���͉摜�̐�
229  *
230  * @return �G���[�R�[�h (see morpho_error.h)
231  */
232 MORPHO_API(int)
233 morpho_EasyHDR_merge(
234     morpho_EasyHDR *p,
235     morpho_ImageData *output_image,
236     morpho_ImageData *input_images[],
237     int nimages);
238 
239 /*-----------------------------------------------------------------*/
240 
241 /**
242  * �����̌p�����s
243  *
244  * merge() ���s��Ɏ��s�”\
245  *
246  * �������s��(initialize() �� nthreads �� 0 ���w�肵���Ƃ�)�̂ݗL��
247  *
248  * �y���s��Ԃ̑J�� (�������s��)�z
249  *     3_PAUSED �� 3_PAUSED      (������)
250  *              �� 0_INITIALIZED (��������)
251  *
252  * @param[in,out]  p  EasyHDR �C���X�^���X
253  *
254  * @return �G���[�R�[�h (see morpho_error.h)
255  */
256 MORPHO_API(int)
257 morpho_EasyHDR_process(
258     morpho_EasyHDR *p);
259 
260 /*-----------------------------------------------------------------*/
261 
262 /**
263  * �����̒��f (�ʃR���e�L�X�g����̌Ăяo���ɂ��)
264  * merge() ���s���Ɏ��s�”\
265  *
266  * �y���s��Ԃ̑J�� (�ꊇ���s��)�z
267  *     1_PROCESSING �� 2_SUSPENDED
268  *
269  * @param[in,out]  p  EasyHDR �C���X�^���X
270  *
271  * @return �G���[�R�[�h (see morpho_error.h)
272  */
273 MORPHO_API(int)
274 morpho_EasyHDR_suspend(
275     morpho_EasyHDR *p);
276 
277 /**
278  * �����̍ĊJ
279  * suspend() ���s��Ɏ��s�”\
280  *
281  * �y���s��Ԃ̑J�� (�ꊇ���s��)�z
282  *     2_SUSPENDED �� (1_PROCESSING) �� 0_INITIALIZED (��������)
283  *                                   �� 2_SUSPENDED   (suspend()�Ăяo��)
284  *
285  * @param[in,out]  p  EasyHDR �C���X�^���X
286  *
287  * @return �G���[�R�[�h (see morpho_error.h)
288  */
289 MORPHO_API(int)
290 morpho_EasyHDR_resume(
291     morpho_EasyHDR *p);
292 
293 /*-----------------------------------------------------------------*/
294 
295 /**
296  * �摜�t�H�[�}�b�g�̐ݒ�
297  * initialize() ���s��Ɏ��s�”\
298  *
299  * @param[in,out]  p       EasyHDR �C���X�^���X
300  * @param[in]      format  �摜�t�H�[�}�b�g������킷������
301  *
302  * @return �G���[�R�[�h (see morpho_error.h)
303  */
304 MORPHO_API(int)
305 morpho_EasyHDR_setImageFormat(
306     morpho_EasyHDR *p,
307     char const *format);
308 
309 /**
310  * �摜�t�H�[�}�b�g�̎擾
311  * setImageFormat() ���s��Ɏ��s�”\
312  *
313  * @param[in,out]  p            EasyHDR �C���X�^���X
314  * @param[out]     buffer       �摜�t�H�[�}�b�g������킷�������i�[�����o�b�t�@
315  * @param[in]      buffer_size  �o�b�t�@�̃T�C�Y(�I�[�����܂�)
316  *
317  * @return �G���[�R�[�h (see morpho_error.h)
318  */
319 MORPHO_API(int)
320 morpho_EasyHDR_getImageFormat(
321     morpho_EasyHDR *p,
322     char *buffer,
323     int buffer_size);
324 
325 /*-----------------------------------------------------------------*/
326 
327 /**
328  * �ʒu���킹(��Ԃ�␳)�̗L���̐ݒ�
329  * initialize() ���s��Ɏ��s�”\
330  *
331  * value:
332  *   MOR_EASY_HDR_ENABLED  : �ʒu���킹����
333  *   MOR_EASY_HDR_DISABLED : �ʒu���킹�Ȃ�
334  *
335  * @param[in,out]  p      EasyHDR �C���X�^���X
336  * @param[in]      value  �ݒ�l
337  *
338  * @return �G���[�R�[�h (see morpho_error.h)
339  */
340 MORPHO_API(int)
341 morpho_EasyHDR_setImageAlignmentStatus(
342     morpho_EasyHDR *p,
343     int value);
344 
345 /**
346  * �ʒu���킹(��Ԃ�␳)�̗L���̎擾
347  * initialize() ���s��Ɏ��s�”\
348  *
349  * @param[in,out]  p      EasyHDR �C���X�^���X
350  * @param[out]     value  �ݒ�l�i�[��
351  *
352  * @return �G���[�R�[�h (see morpho_error.h)
353  */
354 MORPHO_API(int)
355 morpho_EasyHDR_getImageAlignmentStatus(
356     morpho_EasyHDR *p,
357     int *value);
358 
359 /*-----------------------------------------------------------------*/
360 
361 /**
362  * �S�[�X�g����(��ʑ̂Ԃ�␳)�̗L���̐ݒ�
363  * initialize() ���s��Ɏ��s�”\
364  *
365  * value:
366  *   MOR_EASY_HDR_ENABLED  : �S�[�X�g��������
367  *   MOR_EASY_HDR_DISABLED : �S�[�X�g�����Ȃ�
368  *
369  * @param[in,out]  p      EasyHDR �C���X�^���X
370  * @param[in]      value  �ݒ�l
371  *
372  * @return �G���[�R�[�h (see morpho_error.h)
373  */
374 MORPHO_API(int)
375 morpho_EasyHDR_setGhostRemovalStatus(
376     morpho_EasyHDR *p,
377     int value);
378 
379 /**
380  * �S�[�X�g����(��ʑ̂Ԃ�␳)�̗L���̎擾
381  * initialize() ���s��Ɏ��s�”\
382  *
383  * @param[in,out]  p      EasyHDR �C���X�^���X
384  * @param[out]     value  �ݒ�l�i�[��
385  *
386  * @return �G���[�R�[�h (see morpho_error.h)
387  */
388 MORPHO_API(int)
389 morpho_EasyHDR_getGhostRemovalStatus(
390     morpho_EasyHDR *p,
391     int *value);
392 
393 /*-----------------------------------------------------------------*/
394 
395 /**
396  * �����g��(�N���b�s���O)�̗L���̐ݒ�
397  * initialize() ���s��Ɏ��s�”\
398  *
399  * value:
400  *   MOR_EASY_HDR_ENABLED  : �����g�傠��
401  *   MOR_EASY_HDR_DISABLED : �����g��Ȃ�
402  *
403  * @param[in,out]  p      EasyHDR �C���X�^���X
404  * @param[in]      value  �ݒ�l
405  *
406  * @return �G���[�R�[�h (see morpho_error.h)
407  */
408 MORPHO_API(int)
409 morpho_EasyHDR_setAutoScalingStatus(
410     morpho_EasyHDR *p,
411     int value);
412 
413 /**
414  * �����g��(�N���b�s���O)�̗L���̎擾
415  * initialize() ���s��Ɏ��s�”\
416  *
417  * @param[in,out]  p      EasyHDR �C���X�^���X
418  * @param[out]     value  �ݒ�l�i�[��
419  *
420  * @return �G���[�R�[�h (see morpho_error.h)
421  */
422 MORPHO_API(int)
423 morpho_EasyHDR_getAutoScalingStatus(
424     morpho_EasyHDR *p,
425     int *value);
426 
427 /*-----------------------------------------------------------------*/
428 
429 /**
430  * �猟�o�␳�̗L���̐ݒ�
431  * initialize() ���s��Ɏ��s�”\
432  *
433  * value:
434  *   MOR_EASY_HDR_ENABLED  : �猟�o�␳����
435  *   MOR_EASY_HDR_DISABLED : �猟�o�␳�Ȃ�
436  *
437  * @param[in,out]  p      EasyHDR �C���X�^���X
438  * @param[in]      value  �ݒ�l
439  *
440  * @return �G���[�R�[�h (see morpho_error.h)
441  */
442 MORPHO_API(int)
443 morpho_EasyHDR_setFaceDetectionStatus(
444     morpho_EasyHDR *p,
445     int value);
446 
447 /**
448  * �猟�o�␳�̗L���̎擾
449  * initialize() ���s��Ɏ��s�”\
450  *
451  * @param[in,out]  p      EasyHDR �C���X�^���X
452  * @param[out]     value  �ݒ�l�i�[��
453  *
454  * @return �G���[�R�[�h (see morpho_error.h)
455  */
456 MORPHO_API(int)
457 morpho_EasyHDR_getFaceDetectionStatus(
458     morpho_EasyHDR *p,
459     int *value);
460 
461 /*-----------------------------------------------------------------*/
462 
463 /**
464  * Fail-soft-merging �̗L���̐ݒ�
465  * initialize() ���s��Ɏ��s�”\
466  *
467  * value:
468  *   MOR_EASY_HDR_ENABLED  : Fail-soft-merging ����
469  *   MOR_EASY_HDR_DISABLED : Fail-soft-merging �Ȃ�
470  *
471  * @param[in,out]  p      EasyHDR �C���X�^���X
472  * @param[in]      value  �ݒ�l
473  *
474  * @return �G���[�R�[�h (see morpho_error.h)
475  */
476 MORPHO_API(int)
477 morpho_EasyHDR_setFailSoftMergingStatus(
478     morpho_EasyHDR *p,
479     int value);
480 
481 /**
482  * Fail-soft-merging �̗L���̎擾
483  * initialize() ���s��Ɏ��s�”\
484  *
485  * @param[in,out]  p      EasyHDR �C���X�^���X
486  * @param[out]     value  �ݒ�l�i�[��
487  *
488  * @return �G���[�R�[�h (see morpho_error.h)
489  */
490 MORPHO_API(int)
491 morpho_EasyHDR_getFailSoftMergingStatus(
492     morpho_EasyHDR *p,
493     int *value);
494 
495 /*-----------------------------------------------------------------*/
496 
497 /**
498  * �S�[�X�g���芴�x���x���̐ݒ�
499  * initialize() ���s��Ɏ��s�”\
500  *
501  * @param[in,out]  p      EasyHDR �C���X�^���X
502  * @param[in]      value  �ݒ�l
503  *
504  * @return �G���[�R�[�h (see morpho_error.h)
505  */
506 MORPHO_API(int)
507 morpho_EasyHDR_setGhostDetectionSensitivityLevel(
508     morpho_EasyHDR *p,
509     int value);
510 
511 /**
512  * �S�[�X�g���芴�x���x���̎擾
513  * initialize() ���s��Ɏ��s�”\
514  *
515  * @param[in,out]  p      EasyHDR �C���X�^���X
516  * @param[out]     value  �ݒ�l�i�[��
517  *
518  * @return �G���[�R�[�h (see morpho_error.h)
519  */
520 MORPHO_API(int)
521 morpho_EasyHDR_getGhostDetectionSensitivityLevel(
522     morpho_EasyHDR *p,
523     int *value);
524 
525 /*-----------------------------------------------------------------*/
526 
527 /**
528  * �����Ȃ߂炩���̐ݒ�
529  * initialize() ���s��Ɏ��s�”\
530  *
531  * @param[in,out]  p      EasyHDR �C���X�^���X
532  * @param[in]      value  �ݒ�l
533  *
534  * @return �G���[�R�[�h (see morpho_error.h)
535  */
536 MORPHO_API(int)
537 morpho_EasyHDR_setMergeSmoothnessLevel(
538     morpho_EasyHDR *p,
539     int value);
540 
541 /**
542  * �����Ȃ߂炩���̎擾
543  * initialize() ���s��Ɏ��s�”\
544  *
545  * @param[in,out]  p      EasyHDR �C���X�^���X
546  * @param[out]     value  �ݒ�l�i�[��
547  *
548  * @return �G���[�R�[�h (see morpho_error.h)
549  */
550 MORPHO_API(int)
551 morpho_EasyHDR_getMergeSmoothnessLevel(
552     morpho_EasyHDR *p,
553     int *value);
554 
555 /*-----------------------------------------------------------------*/
556 
557 /**
558  * �����p�����[�^�̐ݒ�
559  * initialize() ���s��Ɏ��s�”\
560  *
561  * @param[in,out]  p       EasyHDR �C���X�^���X
562  * @param[in]      value1  �ݒ�l
563  * @param[in]      value2  �ݒ�l
564  * @param[in]      value3  �ݒ�l
565  * @param[in]      value4  �ݒ�l
566  *
567  * @return �G���[�R�[�h (see morpho_error.h)
568  */
569 MORPHO_API(int)
570 morpho_EasyHDR_setMergeParameters(
571     morpho_EasyHDR *p,
572     int value1,
573     int value2,
574     int value3,
575     int value4);
576 
577 /**
578  * �����p�����[�^�̎擾
579  * initialize() ���s��Ɏ��s�”\
580  *
581  * @param[in,out]  p       EasyHDR �C���X�^���X
582  * @param[out]     value1  �ݒ�l�i�[��
583  * @param[out]     value2  �ݒ�l�i�[��
584  * @param[out]     value3  �ݒ�l�i�[��
585  * @param[out]     value4  �ݒ�l�i�[��
586  *
587  * @return �G���[�R�[�h (see morpho_error.h)
588  */
589 MORPHO_API(int)
590 morpho_EasyHDR_getMergeParameters(
591     morpho_EasyHDR *p,
592     int *value1,
593     int *value2,
594     int *value3,
595     int *value4);
596 
597 /*-----------------------------------------------------------------*/
598 
599 /**
600  * �L���̈�臒l�̐ݒ�
601  * initialize() ���s��Ɏ��s�”\
602  *
603  * @param[in,out]  p     EasyHDR �C���X�^���X
604  * @param[in]      rate  �ݒ�l (���� rate % ��`)
605  *
606  * @return �G���[�R�[�h (see morpho_error.h)
607  */
608 MORPHO_API(int)
609 morpho_EasyHDR_setReliableRectRateThreshold(
610     morpho_EasyHDR *p,
611     int rate);
612 
613 /**
614  * �L���̈�臒l�̎擾
615  * initialize() ���s��Ɏ��s�”\
616  *
617  * @param[in,out]  p     EasyHDR �C���X�^���X
618  * @param[out]     rate  �ݒ�l�i�[��
619  *
620  * @return �G���[�R�[�h (see morpho_error.h)
621  */
622 MORPHO_API(int)
623 morpho_EasyHDR_getReliableRectRateThreshold(
624     morpho_EasyHDR *p,
625     int *rate);
626 
627 /**
628  * �L���̈�̎擾
629  * initialize() ���s��Ɏ��s�”\
630  * (�L���Ȓl���Z�b�g�����̂� merge() ��)
631  *
632  * @param[in,out]  p     EasyHDR �C���X�^���X
633  * @param[out]     rect  �ݒ�l�i�[��
634  *
635  * @return �G���[�R�[�h (see morpho_error.h)
636  */
637 MORPHO_API(int)
638 morpho_EasyHDR_getReliableRect(
639     morpho_EasyHDR *p,
640     morpho_RectInt *rect);
641 
642 /*-----------------------------------------------------------------*/
643 
644 /**
645  * �S�[�X�g����臒l�̐ݒ�
646  * initialize() ���s��Ɏ��s�”\
647  *
648  * @param[in,out]  p     EasyHDR �C���X�^���X
649  * @param[in]      rate  �ݒ�l
650  *
651  * @return �G���[�R�[�h (see morpho_error.h)
652  */
653 MORPHO_API(int)
654 morpho_EasyHDR_setGhostRateThreshold(
655     morpho_EasyHDR *p,
656     int rate);
657 
658 /**
659  * �S�[�X�g����臒l�̎擾
660  * initialize() ���s��Ɏ��s�”\
661  *
662  * @param[in,out]  p     EasyHDR �C���X�^���X
663  * @param[out]     rate  �ݒ�l�i�[��
664  *
665  * @return �G���[�R�[�h (see morpho_error.h)
666  */
667 MORPHO_API(int)
668 morpho_EasyHDR_getGhostRateThreshold(
669     morpho_EasyHDR *p,
670     int *rate);
671 
672 /*-----------------------------------------------------------------*/
673 
674 /**
675  * �F�␳�p�����[�^�̐ݒ�
676  * initialize() ���s��Ɏ��s�”\
677  *
678  * @param[in,out]  p         EasyHDR �C���X�^���X
679  * @param[in]      y_offset  �ݒ�l
680  * @param[in]      y_gain    �ݒ�l
681  * @param[in]      y_gamma   �ݒ�l
682  * @param[in]      c_offset  �ݒ�l
683  * @param[in]      c_gain    �ݒ�l
684  * @param[in]      c_gamma   �ݒ�l
685  *
686  * @return �G���[�R�[�h (see morpho_error.h)
687  */
688 MORPHO_API(int)
689 morpho_EasyHDR_setColorCorrectionParameters(
690     morpho_EasyHDR *p,
691     int y_offset,
692     int y_gain,
693     int y_gamma,
694     int c_offset,
695     int c_gain,
696     int c_gamma);
697 
698 /**
699  * �F�␳�p�����[�^�̎擾
700  * initialize() ���s��Ɏ��s�”\
701  *
702  * @param[in,out]  p         EasyHDR �C���X�^���X
703  * @param[out]     y_offset  �ݒ�l�i�[��
704  * @param[out]     y_gain    �ݒ�l�i�[��
705  * @param[out]     y_gamma   �ݒ�l�i�[��
706  * @param[out]     c_offset  �ݒ�l�i�[��
707  * @param[out]     c_gain    �ݒ�l�i�[��
708  * @param[out]     c_gamma   �ݒ�l�i�[��
709  *
710  * @return �G���[�R�[�h (see morpho_error.h)
711  */
712 MORPHO_API(int)
713 morpho_EasyHDR_getColorCorrectionParameters(
714     morpho_EasyHDR *p,
715     int *y_offset,
716     int *y_gain,
717     int *y_gamma,
718     int *c_offset,
719     int *c_gain,
720     int *c_gamma);
721 
722 /*-----------------------------------------------------------------*/
723 
724 /**
725  * �����X�e�[�^�X�̎擾
726  * initialize() ���s��Ɏ��s�”\
727  *
728  * �X�e�[�^�X�R�[�h
729  *   MORPHO_EASY_HDR_OK
730  *   MORPHO_EASY_HDR_ERROR_*
731  *
732  * @param[in,out]  p  EasyHDR �C���X�^���X
733  *
734  * @return �X�e�[�^�X�R�[�h (MORPHO_EASMORPHO_EASY_HDR_ERROR_
735  */
736 MORPHO_API(int)
737 morpho_EasyHDR_getMergeStatus(
738     morpho_EasyHDR *p);
739 
740 /*-----------------------------------------------------------------*/
741 
742 /**
743  * �T���l�C���̍쐬 (�o�͉摜�̏k��)
744  * morpho_EasyHDR_setImageFormat() ���s��Ɏ��s�”\
745  *
746  * @param[in,out]  p                EasyHDR �C���X�^���X
747  * @param[out]     thumbnail_image  �o�͉摜
748  * @param[in]      output_image     ���͉摜
749  *
750  * @return �G���[�R�[�h (see morpho_error.h)
751  */
752 MORPHO_API(int)
753 morpho_EasyHDR_makeThumbnail(
754     morpho_EasyHDR *p,
755     morpho_ImageData *thumbnail_image,
756     morpho_ImageData const *output_image);
757 
758 /*-----------------------------------------------------------------*/
759 
760 #ifdef __cplusplus
761 } /* extern "C" */
762 #endif
763 
764 /*******************************************************************/
765 
766 #endif /* !MORPHO_EASY_HDR_H */
767 
768 /*******************************************************************/
769 /* [EOF] */
770