有効画素マスク画像の例(アフィン変換での例)
アフィン変換 | 射影変換 | 平行移動 | warpping | |
---|---|---|---|---|
F_SAMPLING_NN | ○ | ○ | ○ | ○ |
F_SAMPLING_BILINEAR | ○ | ○ | ○ | ○ |
F_SAMPLING_CUBIC | ○ | ○ | ○ | ○ |
F_SAMPLING_LANCZOS | ○ | × | × | × |
F_SAMPLING_SUPER | ○ | × | × | × |
F_SAMPLING_ADAPT | × | ○ | × | × |
但し、処理対象の画像が2値画像(F_IMG_BIN)の場合は、F_SAMPLING_NNのみ利用可能です。
これら6手法のうち、NN, BILINEAR, CUBIC の3手法は、1≦拡大率 の場合に適した手法です。 1>拡大率 になる変換、つまり縮小をするときには、これらの手法はエイリアシング(aliasing)現像 を起こします。このエイリアシング(aliasing)現像を抑制するため、LANCZOS, SUPER, ADAPT の3種類のアンチエイリアシング(antialiasing)手法を用意しています。 これらの手法は処理時間がかかりますが、美しい結果画像を得ることが出来ます。
各補間法によるエイリアシングの違い(1/3に縮小した例)
関数 | |
INT FVALGAPI | fnFIE_geotrans_get_offset_matrix (const FMATRIX *vpTransMat, FMATRIX *vpOffsetMat, DOUBLE dSrcOffX, DOUBLE dSrcOffY, DOUBLE dDstOffX, DOUBLE dDstOffY) |
同次変換行列に入力座標系/出力座標系のオフセットを加える | |
INT FVALGAPI | fnFIE_geotrans_affine (FHANDLE hSrc, FHANDLE hDst, FHANDLE hMask, const FMATRIX *vpMat, INT bIsClearBack, INT iSamplingMode) |
画像のアフィン変換 | |
INT FVALGAPI | fnFIE_geotrans_perspective (FHANDLE hSrc, FHANDLE hDst, FHANDLE hMask, const FMATRIX *vpMat, INT bIsClearBack, INT iSamplingMode) |
画像の射影変換 | |
INT FVALGAPI | fnFIE_geotrans_warpping (FHANDLE hSrc, FHANDLE hMap, FHANDLE hDst, FHANDLE hMask, INT bIsClearBack, INT iSamplingMode) |
座標変換マップに従って座標を変換する | |
INT FVALGAPI | fnFIE_geotrans_shift (FHANDLE hSrc, FHANDLE hDst, FHANDLE hMask, DOUBLE dX, DOUBLE dY, INT bIsClearBack, INT iSamplingMode) |
画像の平行移動 | |
INT FVALGAPI | fnFIE_img_mirror (FHANDLE hsrc, FHANDLE hdst, INT direc) |
画像ミラー反転 | |
INT FVALGAPI | fnFIE_img_resize (FHANDLE hsrc, FHANDLE hdst) |
画像のリサイズ | |
INT FVALGAPI | fnFIE_img_transpose (FHANDLE hsrc, FHANDLE hdst) |
画像転置 | |
INT FVALGAPI | fnFIE_img_rotate_clockwise90 (FHANDLE hsrc, FHANDLE hdst, INT n) |
画像の回転(90度の倍数) |
INT FVALGAPI fnFIE_geotrans_get_offset_matrix | ( | const FMATRIX * | vpTransMat, | |
FMATRIX * | vpOffsetMat, | |||
DOUBLE | dSrcOffX, | |||
DOUBLE | dSrcOffY, | |||
DOUBLE | dDstOffX, | |||
DOUBLE | dDstOffY | |||
) |
同次変換行列に入力座標系/出力座標系のオフセットを加える
入力された同次変換行列Mに対して、入力側座標系の原点のオフセット( )と 出力側座標系の原点オフセット(
) を加えた新たな同次変換行列
を計算します。本関数はチャイルド画像を処理する場合などで、画像の左上画素の座標が(0,0)に なっていない場合にその原点位置を指定するために使います。
新たな幾何変換行列 は下記のように算出します。
の(i,j)成分を
、
の(i,j)成分を
と書くとすると、
各成分ごとに書くと、下記のようになります。
dS = M[2][2] + M[2][0] * dSrcOffX + M[2][1] * dSrcOffY M'[0][0] = M[0][0] - M[2][0] * dDstOffX M'[0][1] = M[0][1] - M[2][1] * dDstOffX M'[0][2] = M[0][2] + M[0][0] * dSrcOffX + M[0][1] * dSrcOffY - dS * dDstOffX M'[1][0] = M[1][0] - M[2][0] * dDstOffY M'[1][1] = M[1][1] - M[2][1] * dDstOffY M'[1][2] = M[1][2] + M[1][0] * dSrcOffX + M[1][1] * dSrcOffY - dS * dDstOffY M'[2][0] = M[2][0] M'[2][1] = M[2][1] M'[2][2] = S
画像の左上点の偏移量の定義は上記の図を参考にして下さい。
入力同次変換行列 vpTransMat (図中の変換行列 )と出力同次変換行列 vpOffsetMat (図中の変換行列
)は 3x3の正方行列です。
[in] | vpTransMat | 画像幾何変換の同次変換行列 |
[out] | vpOffsetMat | 偏移量を含めたの幾何変換の同次変換行列 |
[in] | dSrcOffX | 元画像の横方向の偏移量 |
[in] | dSrcOffY | 元画像の縦方向の偏移量 |
[in] | dDstOffX | 結果画像の横方向の偏移量 |
[in] | dDstOffY | 結果画像の縦方向の偏移量 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_PARAM | 入力行列或いは出力行列は3x3の正方行列ではない | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_geotrans_affine | ( | FHANDLE | hSrc, | |
FHANDLE | hDst, | |||
FHANDLE | hMask, | |||
const FMATRIX * | vpMat, | |||
INT | bIsClearBack, | |||
INT | iSamplingMode | |||
) |
画像のアフィン変換
処理対象画像を、幾何変換の同次変換行列 vpMat に従ってアフィン変換します。 処理対象画像と結果画像のサイズは異なっていても構いません。 但し、処理対象画像と結果画像の型とチャネル数は同じでなければいけません。
本関数は vpMat に従って下記の座標変換を行い、結果画像を作成します。
dst.x = src.x * vpMat->m[0][0] + src.y * vpMat->m[0][1] + vpMat->m[0][2] dst.y = src.x * vpMat->m[1][0] + src.y * vpMat->m[1][1] + vpMat->m[1][2]
vpMat は座標変換に使用する同次変換行列で、3x3の正方行列を指定します。 vpMat は下記の条件を満たしていなければいけません。
hMask に処理結果画像と同じサイズの2値画像を指定すると、出力画像中の有効画素を示す マスク画像を作成します。(マスク画像については 有効画素マスク画像 を参照して下さい) マスク画像 hMask の型はF_IMG_BINではなければいけません。 また、マスク画像の縦横サイズは結果画像と同じで、チャネル数は1でなければなりません。 これらの条件が満たされない場合は、F_ERR_INVALID_IMAGEを返します。 マスク画像が必要ない場合は hMask にNULLを指定して下さい。
bIsClear は結果画像中の領域外になる画素(入力座標系での座標が処理対象画像の外側になる画素) の処理方法の指定です。領域外の画素の濃度値を0クリアする場合は bIsClear にTRUE を指定します。 結果画像の元の濃度値を維持する場合は、 FALSE を指定します。
iSamplingMode は濃度補間方法の指定です。以下の5種類から選択できます。
[in] | hSrc | 処理対象画像( type: bin, uc8, us16, double, rgbq, rgbtri, s16, float ) |
[out] | hDst | 処理結果画像( type: bin, uc8, us16, double, rgbq, rgbtri, s16, float ) |
[out] | hMask | 処理結果画像の有効画素マスク画像( type: bin ) 画像サイズは hDst と同じ、チャネル数1であること。 マスク画像が不要な場合はNULLを指定する。 |
[in] | vpMat | アフィン変換の同次変換行列 |
[in] | bIsClearBack | 処理対象画像の領域外になる画素の処理方法
|
[in] | iSamplingMode | 濃度補間方法
|
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが入力された | |
F_ERR_CALC_IMPOSSIBLE | 変換行列の逆行列が計算不可能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include "fie.h" #include "oal_aloc.h" //メモリ管理 VOID geotrans_affine() { FHANDLE hsrc = NULL; //入力画像 FHANDLE hdst = NULL; //出力画像 INT width,height; //幅、高さ FMATRIX* pmat; //アフィン変換行列 DPNT_T from[10],to[10]; //対応点 //入力画像の読み込み fnFIE_load_png("fvc06.png", &hsrc, F_COLOR_IMG_TYPE_UC8); //幅と高さの取得 width = fnFIE_img_get_width(hsrc); height = fnFIE_img_get_height(hsrc); //出力画像の領域を確保 hdst = fnFIE_img_root_alloc(F_IMG_UC8, 1, width, height); // 3×3の行列を設定します。 pmat = fnFIE_mat_aalloc( 3, 3 ); // アフィン変換は同一直線上にない3組以上の座標列を設定します。 // 変換前の座標を設定します。 from[0].x = 0; from[0].y = 0; from[1].x = 10; from[1].y = 20; from[2].x = 50; from[2].y = 50; from[3].x = 130; from[3].y = 100; from[4].x = 150; from[4].y = 130; from[5].x = 180; from[5].y = 140; from[6].x = 200; from[6].y = 150; from[7].x = 230; from[7].y = 170; from[8].x = 240; from[8].y = 180; from[9].x = 256; from[9].y = 192; // 変換後の座標を設定します。 to[0].x = 20; to[0].y = 30; to[1].x = 40; to[1].y = 60; to[2].x = 80; to[2].y = 80; to[3].x = 100; to[3].y = 90; to[4].x = 110; to[4].y = 100; to[5].x = 130; to[5].y = 110; to[6].x = 150; to[6].y = 120; to[7].x = 170; to[7].y = 130; to[8].x = 140; to[8].y = 130; to[9].x = 150; to[9].y = 150; // アフィン変換行列を求めます。 fnFIE_geotrans_estimate_affine_matrix( pmat, from, to, 10 ); // 求めたアフィン変換行列より、画像のアフィン変換を行います。 // 三次畳み込み法により濃度補間で、結果画像を生成します。 // マスク画像は生成しません。 // 領域外になる画素は0でクリアします。 fnFIE_geotrans_affine( hsrc, hdst, NULL, pmat, TRUE, F_SAMPLING_CUBIC ); // 結果画像をPNG形式のファイルとして保存します。 fnFIE_save_png( "result.png", hdst, -1 ); //確保した領域の解放 fnFIE_mat_afree(pmat); fnFIE_free_object(hsrc); fnFIE_free_object(hdst); } INT main(VOID) { // FIEライブラリの使用前に必ずコールする必要があります。 fnFIE_setup(); geotrans_affine(); // 終了処理 fnFIE_teardown(); return 0; }
![]() 入力画像 | ![]() 処理結果画像 |
INT FVALGAPI fnFIE_geotrans_perspective | ( | FHANDLE | hSrc, | |
FHANDLE | hDst, | |||
FHANDLE | hMask, | |||
const FMATRIX * | vpMat, | |||
INT | bIsClearBack, | |||
INT | iSamplingMode | |||
) |
画像の射影変換
処理対象画像を、幾何変換の同次変換行列 vpMat に従って射影変換を行います。 処理対象画像と結果画像のサイズは異なっていても構いません。 但し、処理対象画像と結果画像の型とチャネル数は同じでなければいけません。
本関数は vpMat に従って下記の座標変換を行い、結果画像を作成します。
sum = src.x * vpMat->m[2][0] + src.y * vpMat->m[2][1] + vpMat->m[2][2] dst.x = ( src.x * vpMat->m[0][0] + src.y * vpMat->m[0][1] + vpMat->m[0][2] ) / sum dst.y = ( src.x * vpMat->m[1][0] + src.y * vpMat->m[1][1] + vpMat->m[1][2] ) / sum
vpMat は座標変換に使用する同次変換行列で、3x3の正方行列を指定します。 vpMat は下記の条件を満たしていなければいけません。
hMask に処理結果画像と同じサイズの2値画像を指定すると、出力画像中の有効画素を示す マスク画像を作成します。(マスク画像については 有効画素マスク画像 を参照して下さい) マスク画像 hMask の型はF_IMG_BINではなければいけません。 また、マスク画像の縦横サイズは結果画像と同じで、チャネル数は1でなければなりません。 これらの条件が満たされない場合は、F_ERR_INVALID_IMAGEを返します。 マスク画像が必要ない場合は hMask にNULLを指定して下さい。
bIsClear は結果画像中の領域外になる画素(入力座標系での座標が処理対象画像の外側になる画素) の処理方法の指定です。領域外の画素の濃度値を0クリアする場合は bIsClear にTRUE を指定します。 結果画像の元の濃度値を維持する場合は、 FALSE を指定します。
iSamplingMode は濃度補間方法の指定です。以下の4種類から選択できます。
[in] | hSrc | 処理対象画像( type: bin, uc8, us16, double ) |
[out] | hDst | 処理結果画像( type: bin, uc8, us16, double ) |
[out] | hMask | 処理結果画像の有効画素マスク画像( type: bin ) 画像サイズは hDst と同じ、チャネル数1であること。 マスク画像が不要な場合はNULLを指定する。 |
[in] | vpMat | 射影変換の同次変換行列 |
[in] | bIsClearBack | 処理対象画像の領域外になる画素の処理方法
|
[in] | iSamplingMode | 濃度補間方法
|
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが入力された | |
F_ERR_CALC_IMPOSSIBLE | 変換行列の逆行列が計算不可能 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include "fie.h" #include "oal_aloc.h" //メモリ管理 VOID geotrans_perspective() { FHANDLE hsrc = NULL; //入力画像 FHANDLE hdst = NULL; //出力画像 INT width,height; //幅、高さ FMATRIX* pmat; //射影変換行列 DPNT_T from[10],to[10]; //対応点 //入力画像の読み込み fnFIE_load_png("fvc06.png", &hsrc, F_COLOR_IMG_TYPE_UC8); //幅と高さの取得 width = fnFIE_img_get_width(hsrc); height = fnFIE_img_get_height(hsrc); //出力画像の領域を確保 hdst = fnFIE_img_root_alloc(F_IMG_UC8, 1, width, height); // 3×3の行列を設定します。 pmat = fnFIE_mat_aalloc( 3, 3 ); // 射影変換は同一直線上にない4組以上の座標列を設定します。 // 変換前の座標を設定します。 from[0].x = 0; from[0].y = 0; from[1].x = 256; from[1].y = 0; from[2].x = 256; from[2].y = 192; from[3].x = 0; from[3].y = 192; from[4].x = 50; from[4].y = 50; from[5].x = 100; from[5].y = 50; from[6].x = 100; from[6].y = 100; from[7].x = 50; from[7].y = 100; from[8].x = 128; from[8].y = 96; from[9].x = 130; from[9].y = 100; // 変換後の座標を設定します。 to[0].x = 200; to[0].y = 10; to[1].x = 220; to[1].y = 180; to[2].x = 30; to[2].y = 160; to[3].x = 60; to[3].y = 10; to[4].x = 150; to[4].y = 60; to[5].x = 190; to[5].y = 130; to[6].x = 60; to[6].y = 60; to[7].x = 110; to[7].y = 60; to[8].x = 128; to[8].y = 96; to[9].x = 130; to[9].y = 100; // 射影変換行列を求めます。 fnFIE_geotrans_estimate_perspective_matrix( pmat, from, to, 10 ); // 求めた射影変換行列より、画像の射影変換を行います。 // 三次畳み込み法により濃度補間で、結果画像を生成します。 // マスク画像は生成しません。 // 領域外になる画素は0でクリアします。 fnFIE_geotrans_perspective( hsrc, hdst, NULL, pmat, TRUE, F_SAMPLING_CUBIC ); // 結果画像をPNG形式のファイルとして保存します。 fnFIE_save_png( "result.png", hdst, -1 ); //確保した領域の解放 fnFIE_mat_afree(pmat); fnFIE_free_object(hsrc); fnFIE_free_object(hdst); } INT main(VOID) { // FIEライブラリの使用前に必ずコールする必要があります。 fnFIE_setup(); geotrans_perspective(); // 終了処理 fnFIE_teardown(); return 0; }
![]() 入力画像 | ![]() 処理結果画像 |
INT FVALGAPI fnFIE_geotrans_warpping | ( | FHANDLE | hSrc, | |
FHANDLE | hMap, | |||
FHANDLE | hDst, | |||
FHANDLE | hMask, | |||
INT | bIsClearBack, | |||
INT | iSamplingMode | |||
) |
座標変換マップに従って座標を変換する
処理対象画像を、予め作っておいた座標変換マップ hMap に従って座標を変換します。 処理対象画像と結果画像のサイズは異なっていても構いません。 但し、処理対象画像と結果画像の型とチャネル数は同じでなければなりません。
画像 hImg の座標(x,y)の濃度値を hImg(x,y) 、 hMap のi番目のチャネルを hMap[i] と表すと、 出力画像の濃度値は下式のように定義されます。
hDst(x,y) = hSrc( hMap[0](x,y), hMap[1](x,y) )
hMap は座標変換のマップ画像で、縦横サイズは hDst と同じ、 画像型F_IMG_DOUBLEまたはF_IMG_FLOAT、チャネル数2の画像を入力します。 マップ画像の各画素値は結果画像の変換前の座標値として使用されますので、 結果画像の変換前のX座標を hMap のチャネル0、Y座標はチャネル1に入力します。
hMap に入力されている座標値が処理対象画像 hSrc の外側を示す場合は、 無効画素として処理されます。また、処理対象画像のチャネル数が複数である場合には、 すべてのチャネルに同じ座標変換マップを使用します。
hMask に処理結果画像と同じサイズの2値画像を指定すると、出力画像中の有効画素を示す マスク画像を作成します。(マスク画像については 有効画素マスク画像 を参照して下さい) マスク画像 hMask の型はF_IMG_BINではなければいけません。 また、マスク画像の縦横サイズは結果画像と同じで、チャネル数は1でなければなりません。 これらの条件が満たされない場合は、F_ERR_INVALID_IMAGEを返します。 マスク画像が必要ない場合は hMask にNULLを指定して下さい。
bIsClear は結果画像中の領域外になる画素(入力座標系での座標が処理対象画像の外側になる画素) の処理方法の指定です。領域外の画素の濃度値を0クリアする場合は bIsClear にTRUE を指定します。 結果画像の元の濃度値を維持する場合は、 FALSE を指定します。
iSamplingMode は濃度補間方法の指定です。以下の3種類から選択できます。
[in] | hSrc | 処理対象画像( type: bin, uc8, us16, double ) |
[in] | hMap | 座標変換マップ画像( type: double, float ) |
[out] | hDst | 処理結果画像( type: bin, uc8, us16, double ) |
[out] | hMask | 処理結果画像の有効画素マスク画像( type: bin ) 画像サイズはhDstと同じ、チャネル数1であること。 マスク画像が不要な場合はNULLを指定する。 |
[in] | bIsClearBack | 処理対象画像の領域外になる画素の処理方法
|
[in] | iSamplingMode | 濃度補間方法
|
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが入力された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_geotrans_shift | ( | FHANDLE | hSrc, | |
FHANDLE | hDst, | |||
FHANDLE | hMask, | |||
DOUBLE | dX, | |||
DOUBLE | dY, | |||
INT | bIsClearBack, | |||
INT | iSamplingMode | |||
) |
画像の平行移動
処理対象画像を、パラメーター dX , dY で表される量だけ、平行移動します。 処理対象画像と結果画像のサイズは異なっていても構いません。 但し、処理対象画像と結果画像の型とチャネル数は同じでなければいけません。
入力座標と出力座標の関係は下式にて定義されます。
dst.x = src.x + dX dst.y = src.y + dY
hMask に処理結果画像と同じサイズの2値画像を指定すると、出力画像中の有効画素を示す マスク画像を作成します。(マスク画像については 有効画素マスク画像 を参照してください) マスク画像 hMask の型はF_IMG_BINではなければいけません。 また、マスク画像の縦横サイズは結果画像同じで、チャネル数は1でなければなりません。 これらの条件が満たされない場合は、F_ERR_INVALID_IMAGEを返します。 マスク画像が必要ない場合は hMask にNULLを指定して下さい。
bIsClear は結果画像中の領域外になる画素(入力座標系での座標が処理対象画像の外側になる画素) の処理方法の指定です。領域外の画素の濃度値を0クリアする場合は bIsClear にTRUE を指定します。 結果画像の元の濃度値を維持する場合は、 FALSE を指定します。
iSamplingMode は濃度補間方法の指定です。以下の3種類から選択できます。
[in] | hSrc | 処理対象画像( type: bin, uc8, us16, double ) |
[out] | hDst | 処理結果画像( type: bin, uc8, us16, double ) |
[out] | hMask | 処理結果画像の有効画素マスク画像( type: bin ) 画像サイズはhDstと同じ、チャネル数1であること。 マスク画像が不要な場合はNULLを指定する。 |
[in] | dX | x軸方向移動量 |
[in] | dY | y軸方向移動量 |
[in] | bIsClearBack | 処理対象画像の領域外になる画素の処理方法
|
[in] | iSamplingMode | 濃度補間方法
|
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが入力された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力画像 | ![]() 処理結果画像 |
INT FVALGAPI fnFIE_img_mirror | ( | FHANDLE | hsrc, | |
FHANDLE | hdst, | |||
INT | direc | |||
) |
画像ミラー反転
画像のミラー反転を行います。
入力画像と出力画像は下記の条件を全て満たしていなければいけません。
[in] | hsrc | 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri ) |
[out] | hdst | 出力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri ) |
[in] | direc | 反転方向
|
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像ハンドルが渡されたため、異常終了 | |
F_ERR_INVALID_PARAM | パラメータエラーにより異常終了 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力画像 | ![]() 処理結果画像 |
INT FVALGAPI fnFIE_img_resize | ( | FHANDLE | hsrc, | |
FHANDLE | hdst | |||
) |
画像のリサイズ
入力画像を出力画像のサイズに一致するようにリサイズします。 スケール変化率と濃度補間方法は画像サイズに応じて自動的に決定されます。
入力画像と出力画像の型、およびチャネル数は等しくなければなりません。
[in] | hsrc | 入力画像 (type: bin, uc8, s16, us16, double, rgbq) |
[out] | hdst | 出力画像 (type: bin, uc8, s16, us16, double, rgbq) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像が渡された | |
F_ERR_NOMEMORY | メモリ不足により異常終了 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_img_transpose | ( | FHANDLE | hsrc, | |
FHANDLE | hdst | |||
) |
画像転置
画像の転置を行います。 入力画像の濃度値をs, 出力画像の濃度値をdとすると、
d(x,y) = s(y,x)
となります。
[in] | hsrc | 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq ) |
[out] | hdst | 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq ) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像ハンドルが渡されたため、異常終了 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力画像 | ![]() 処理結果画像 |
INT FVALGAPI fnFIE_img_rotate_clockwise90 | ( | FHANDLE | hsrc, | |
FHANDLE | hdst, | |||
INT | n | |||
) |
画像の回転(90度の倍数)
処理対象画像 hsrc を、パラメーター n で示された回数に 90度時計回り方向で回転し、結果画像を hdst に出力します。 処理対象画像と結果画像のタイプ、及びチャネル数は同じでなければいけません。
結果画像のサイズは以下の条件を満たさなければなりません:
[in] | hsrc | 処理対象画像( type: bin, uc8, s16, us16, i32, ui32, i64, double, float, rgbq, rgbtri ) |
[out] | hdst | 処理結果画像( type: bin, uc8, s16, us16, i32, ui32, i64, double, float, rgbq, rgbtri ) |
[in] | n | 何回90度回転するかを示す係数。負の値も指定可能です。 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが入力された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
![]() 入力画像 | ![]() 処理結果画像 (n=2) |
![]() 処理結果画像 (n=1) | ![]() 処理結果画像 (n=3) |