型定義 | |
| typedef VOID(FVALGAPI * | F_TEMPLATE_FUNC_1x1 )(VOID *src_pixel, VOID *src_opt_pixel, VOID *dst_pixel, VOID *param) |
| コールバック関数のポインタ型(1画素単位フィルターテンプレート) | |
| typedef VOID(FVALGAPI * | F_TEMPLATE_FUNC_MxN )(VOID *src_pixel, INT_PTR src_step, VOID *dst_pixel, VOID *param) |
| コールバック関数のポインタ型(カーネルフィルターテンプレート) | |
| typedef INT(FVALGAPI * | F_TEMPLATE_FUNC_P )(FHANDLE src, FHANDLE src_opt1, FHANDLE src_opt2, FHANDLE dst, VOID *param) |
| コールバック関数のポインタ型(既存画像処理関数並列化テンプレート) | |
| typedef VOID(FVALGAPI * | F_TEMPLATE_FUNC_CHANNELS )(VOID **src_pixels, VOID **dst_pixels, VOID *param) |
| コールバック関数のポインタ型(複数チャネル対応 1画素単位フィルターテンプレート) | |
関数 | |
| INT FVALGAPI | fnFIE_img_filter_template_1x1 (FHANDLE hsrc, FHANDLE hsrc_optional, FHANDLE hdst, F_TEMPLATE_FUNC_1x1 pixel_func, VOID *func_param) |
| 1画素単位フィルターテンプレート | |
| INT FVALGAPI | fnFIE_img_filter_template_mxn (FHANDLE hsrc, FHANDLE hdst, F_TEMPLATE_FUNC_MxN pixel_func, VOID *func_param, INT border_left, INT border_top, INT border_right, INT border_bottom, INT border_mode, DOUBLE border_value) |
| カーネルフィルターテンプレート | |
| INT FVALGAPI | fnFIE_img_filter_template_parallel (FHANDLE hsrc, FHANDLE hsrc_optional1, FHANDLE hsrc_optional2, FHANDLE hdst, F_TEMPLATE_FUNC_P block_func, VOID *func_param, INT block_width, INT block_height, INT border_left, INT border_top, INT border_right, INT border_bottom, INT border_mode, DOUBLE border_value) |
| 既存画像処理関数並列化テンプレート | |
| INT FVALGAPI | fnFIE_filter_template_channels (FHANDLE hsrc, FHANDLE hdst, F_TEMPLATE_FUNC_CHANNELS pixels_func, VOID *func_param) |
| 複数チャネル対応 1画素単位フィルターテンプレート | |
| INT FVALGAPI fnFIE_img_filter_template_1x1 | ( | FHANDLE | hsrc, | |
| FHANDLE | hsrc_optional, | |||
| FHANDLE | hdst, | |||
| F_TEMPLATE_FUNC_1x1 | pixel_func, | |||
| VOID * | func_param | |||
| ) |
1画素単位フィルターテンプレート
入出力画像の同じ座標の画素だけを参照した1画素単位の空間フィルタを実施します。 フィルタの内容はユーザーが引数 pixel_func で自由に指定できます。
入出力画像は下記の条件を満たしていなければなりません。
VOID (FVALGAPI *pixel_func)( VOID *src_pixel, VOID *src_opt_pixel, VOID *dst_pixel, VOID *param );
VOID myfunc( VOID *src, VOID *src_opt, VOID *dst, VOID *param ){
UCHAR *ps = (UCHAR*)src;
INT *ps_opt = (INT*)src_opt;
DOUBLE *pd = (DOUBLE*)dst;
MYSTRUCT *pstruct = (MYSTRUCT*)param;
*pd = ( *ps_opt - *ps / pstruct->alpha ) + pstruct->beta;
}
| [in] | hsrc | 入力画像ハンドル |
| [in] | hsrc_optional | 入力画像ハンドル 必要なければNULLを渡してください。その際は pixel_func の第2引数にアクセスしないでください。 |
| [out] | hdst | 出力画像ハンドル |
| [in] | pixel_func | 1ピクセルだけ処理する内容を記述した関数の関数ポインタ |
| [in,out] | func_param | オプションパラメータ 各画素で pixel_func が実行される際に参照できます。必要がなければNULLを渡してください |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_IMAGE | 入力画像異常 | |
| F_ERR_INVALID_PARAM | パラメータ異常 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_img_filter_template_mxn | ( | FHANDLE | hsrc, | |
| FHANDLE | hdst, | |||
| F_TEMPLATE_FUNC_MxN | pixel_func, | |||
| VOID * | func_param, | |||
| INT | border_left, | |||
| INT | border_top, | |||
| INT | border_right, | |||
| INT | border_bottom, | |||
| INT | border_mode, | |||
| DOUBLE | border_value | |||
| ) |
カーネルフィルターテンプレート
出力画像の各ピクセルに対し、入力画像で上下左右に範囲を持ったアクセスを行うカーネルフィルタに類似した空間フィルタを実施します。 フィルタの内容はユーザーが引数 pixel_func で自由に指定できます。
入出力画像は下記の条件を満たしていなければなりません。
VOID (FVALGAPI *pixel_func)( VOID *src_pixel, INT_PTR step, VOID *dst_pixel, VOID *param );
VOID myfunc( VOID *src, INT_PTR step_src, VOID *dst, VOID *param ){
INT x, y;
DOUBLE sum = 0;
UCHAR *ps = (UCHAR*)src;
DOUBLE *pd = (DOUBLE*)dst;
MYSTRUCT *pstruct = (MYSTRUCT*)param;
for( y = -1; y <= 1; y++ ){
for( x = -2; x <= 2; x++ ){
sum += *( ps + y * step_src + x );
}
}
*pd = ( sum * pstruct->alpha ) + pstruct->beta;
}
| [in] | hsrc | 入力画像ハンドル |
| [out] | hdst | 出力画像ハンドル |
| [in] | pixel_func | 1ピクセルだけ処理する内容を記述した関数の関数ポインタ |
| [in,out] | func_param | オプションパラメータ 各画素で pixel_func が実行される際に参照できます。必要がなければNULLを渡してください |
| [in] | border_left | pixel_func が左方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_top | pixel_func が上方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_right | pixel_func が右方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_bottom | pixel_func が下方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_mode | ボーダー処理モード
|
| [in] | border_value | ボーダー濃度値。 border_mode が F_BORDER_VALUE の場合のみ使用されます。 その他のモードの場合は、この値は無視されます。 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_IMAGE | 入力画像異常 | |
| F_ERR_INVALID_PARAM | パラメータ異常 | |
| F_ERR_NOMEMORY | メモリ不足 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_img_filter_template_parallel | ( | FHANDLE | hsrc, | |
| FHANDLE | hsrc_optional1, | |||
| FHANDLE | hsrc_optional2, | |||
| FHANDLE | hdst, | |||
| F_TEMPLATE_FUNC_P | block_func, | |||
| VOID * | func_param, | |||
| INT | block_width, | |||
| INT | block_height, | |||
| INT | border_left, | |||
| INT | border_top, | |||
| INT | border_right, | |||
| INT | border_bottom, | |||
| INT | border_mode, | |||
| DOUBLE | border_value | |||
| ) |
既存画像処理関数並列化テンプレート
既存のFIE画像オブジェクトを扱うシングルスレッドの空間フィルタを利用して並列処理するテンプレートです。 入出力画像を指定したサイズのブロックに分割し、フィルタを各ブロックごとに並列に適応します。 フィルタの内容はユーザーが引数 block_func で自由に指定できます。
入出力画像は下記の条件を満たしていなければなりません。
INT (FVALGAPI *block_func)( FHANDLE src_image, FHANDLE src_image_optional_1, FHANDLE src_image_optional_2, FHANDLE dst_image, VOID *param );
INT FVALGAPI myfunc( FHANDLE src, FHANDLE opt1, FHANDLE opt2, FHANDLE dst, VOID *param ){
INT *p = (INT*)param;
return fnFIE_averageMxN( src, dst, p[0], p[1], F_BORDER_NONE, 0 );
}
INT FVALGAPI myfunc2( FHANDLE src, FHANDLE opt1, FHANDLE opt2, FHANDLE dst, VOID *param ){
return fnFIE_img_atan2( src, opt1, dst );
}
| [in] | hsrc | 入力画像ハンドル |
| [in] | hsrc_optional1 | 入力画像ハンドル 必要なければNULLを渡してください |
| [in] | hsrc_optional2 | 入力画像ハンドル 必要なければNULLを渡してください |
| [out] | hdst | 出力画像ハンドル |
| [in] | block_func | 並列化したい画像フィルタを記述したユーザー定義フィルタ関数の関数ポインタ |
| [in,out] | func_param | オプションパラメータ 各画素で block_func が実行される際に参照できます。必要がなければNULLを渡してください |
| [in] | block_width | 並列化する際、各々のスレッドが処理する幅(pixel) 1以上を指定してください。 |
| [in] | block_height | 並列化する際、各々のスレッドが処理する高さ(pixel) 1以上を指定してください。 |
| [in] | border_left | block_func が左方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_top | block_func が上方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_right | block_func が右方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_bottom | block_func が下方向にアクセスするサイズ。ゼロ以上を指定してください。 |
| [in] | border_mode | ボーダー処理モード
|
| [in] | border_value | ボーダー濃度値。 border_mode が F_BORDER_VALUE の場合のみ使用されます。 その他のモードの場合は、この値は無視されます。 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_IMAGE | 入力画像異常 | |
| F_ERR_INVALID_PARAM | パラメータ異常 | |
| F_ERR_NOMEMORY | メモリ不足 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_filter_template_channels | ( | FHANDLE | hsrc, | |
| FHANDLE | hdst, | |||
| F_TEMPLATE_FUNC_CHANNELS | pixels_func, | |||
| VOID * | func_param | |||
| ) |
複数チャネル対応 1画素単位フィルターテンプレート
入出力画像の同じ座標で各チャネル1画素を参照した、1座標単位の画像変換を行います。
変換内容はユーザーが引数pixels_func で自由に指定できます。
入力画像と出力画像は下記の条件を満たしている必要があります。
VOID( FVALGAPI * pixels_func )(VOID **src_pixels, VOID **dst_pixels, VOID *param);
VOID FVALGAPI myfunc( VOID **src, VOID **dst, VOID *param )
{
UCHAR **ps = (UCHAR**)src;
DOUBLE **pd = (DOUBLE**)dst;
MYSTRUCT *pstruct = (MYSTRUCT*)param;
*pd[0] = *ps[0] * pstruct->a + *ps[1] * pstruct->b + *ps[2] * pstruct->c;
*pd[1] = *ps[0] * pstruct->a*2+ *ps[1] * pstruct->b*2 + *ps[2] * pstruct->c*2;
*pd[2] = *ps[0] * pstruct->a*3+ *ps[1] * pstruct->b*3 + *ps[2] * pstruct->c*3;
}
| [in] | hsrc | 入力画像のハンドル |
| [out] | hdst | 出力画像のハンドル |
| [in] | pixels_func | 1ピクセルだけ処理する内容を記述した関数の関数ポインタ |
| [in] | func_param | オプションパラメータ 各画素で pixels_func が実行される際に参照できます。必要がなければNULLを渡してください |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが渡された | |
| F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |