IplImage 相互変換クラス

Namespace: FVIL.Ipl
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public class IplImageConverter : ICloneable, 
	IFviCopyable, IDisposable
Visual Basic
Public Class IplImageConverter
	Implements ICloneable, IFviCopyable, IDisposable

Remarks

本ライブラリの画像オブジェクト と IplImage の間で画像データの相互変換を行うクラスです。

本クラスは Pointer フィールドに設定された IplImage 構造体へのポインタを介して操作を行います。
IplImage の確保と解放を行いませんので、外部で管理してください。

本ライブラリでは IplImage 構造体のパッキングサイズを 8 bytes に設定しています。
パッキングサイズが一致していない場合は、誤った値を参照するかアクセス違反を起こす場合がありますのでご注意ください。



基本仕様:

本クラスでは IplImage 構造体の下記のフィールドを参照して相互変換を行います。
下表の値の覧に記載されていない値には対応していません。
その他のフィールドの情報は無視します。

表) IplImage 構造体のフィールド:

フィールド説明
imageData有効なアドレス 画像データが格納された配列の先頭アドレスを示します。
dataOrder が IPL_DATA_ORDER_PIXEL の場合のみに対応します。
width1 以上 画像の幅をピクセル単位で示します。
WIL の画像オブジェクトの幅と一致している必要があります。
height1 以上 画像の高さをピクセル単位で示します。
WIL の画像オブジェクトの高さと一致している必要があります。
depth IPL_DEPTH_8U
IPL_DEPTH_16U
IPL_DEPTH_16S
IPL_DEPTH_32S
IPL_DEPTH_32F
IPL_DEPTH_64F
ピクセルの型を示します。
後述の "ピクセルの型について" をご参照ください。
nChannels1~4 画像のチャネル数を示します。
処理によって許容する条件が異なります。
チャネル指標の対応については、後述の "チャネル指標について" をご参照ください。
widthStep4 または 8 以上 画像データのパディングを含めた 1 行分のサイズをバイト単位で示します。
dataOrderIPL_DATA_ORDER_PIXEL 画像データの格納順を示します。
imageData をバイト単位に走査した場合、カラーコンポーネントが以下の順に並んでいることを示します。
3 チャネル数の場合: B0G0R0,B1G1R1,...,BnGnRn
4 チャネル数の場合: B0G0R0A0,B1G1R1A1,...,BnGnRnAn

Intel IPL では IPL_DATA_ORDER_PLANE も定義されていますが、本ライブラリでは対応していません。
origin IPL_ORIGIN_TL
IPL_ORIGIN_BL
画像データの原点を示します。
IPL_ORIGIN_TL の場合は画像データの左上から順に imageData に格納されていることを示します。
IPL_ORIGIN_BL の場合は画像データの左下から順に imageData に格納されていることを示します。



ピクセルの型について:

IplImage の depth と WIL の画像オブジェクトの画像種別との関係について下表に示します。
下表で (非対応) と書かれたものはデータ変換が行えないことを示します。
(対応なし) と書かれたものは一致する型が無い事を示します。
異なる型の間ではキャストによるデータ変換を行います。
各画素を単純にキャストしてコピーしており、飽和処理は行っていません。
ピクセルのサイズが大きい方から小さい方へコピーする際や符号付きと符号なしの組み合わせでは桁落ちや溢れが発生する可能性があります。

表) 型の互換性:

IplImage.depth 画像オブジェクト
CFviImage
(ImageType)
GDI 画像オブジェクト
CFviGdiImage
FIE 画像オブジェクト
FHANDLE
(f_imgtype)
IPL_DEPTH_1U(非対応)(非対応)(非対応)
IPL_DEPTH_8S(非対応)(非対応)(非対応)
IPL_DEPTH_8UUC88F_IMG_UC8
IPL_DEPTH_8U (x3)RGB2424F_IMG_RGBTRIPLE
IPL_DEPTH_8U (x4)RGB3232F_IMG_RGBQUAD
IPL_DEPTH_16UUS16(対応なし)F_IMG_US16
IPL_DEPTH_16SS16(対応なし)F_IMG_S16
IPL_DEPTH_32SI32(対応なし)F_IMG_I32
IPL_DEPTH_32FF32(対応なし)F_IMG_FLOAT
IPL_DEPTH_64FD64(対応なし)F_IMG_DOUBLE



チャネル指標について:

IplImage と WIL の画像オブジェクトのチャネル指標(または RGB フィールド)の関係について下表に示します。

表) チャネル指標の対応:

IPLUnpackRGB24RGB32
02BB
11GG
20RR
33(対応なし)A



画像データの複製 (1) (IPL ← WIL):

WIL の画像オブジェクトから IplImage へ変換する場合は下記メソッドを使用してください。
複製先の画像データ領域の再確保を行いませんので、予め 画像サイズを調整してください。


具体的な使用方法については各メソッドの説明をご参照ください。



画像データの複製 (2) (IPL → WIL):

IplImage から WIL の画像オブジェクトへ変換する場合は下記メソッドを使用してください。
複製先の画像データ領域の再確保を行いませんので、予め 画像サイズを調整してください。


具体的な使用方法については各メソッドの説明をご参照ください。



画像データの複製 (3) (IPL → WIL):

IplImage から WIL の画像オブジェクトへ変換する際に画像データ領域の確保も同時に行う場合は下記メソッドを使用してください。


具体的な使用方法については各メソッドの説明をご参照ください。



サイズ情報の取得 (IPL 用):

IplImage を確保する際に使用するサイズ情報を取得する場合は下記メソッドを使用してください。


具体的な使用方法については各メソッドの説明をご参照ください。



サイズ情報の取得 (WIL 用):

IplImage と互換性があるサイズ情報を取得する場合は下記メソッドを使用してください。


具体的な使用方法については各メソッドの説明をご参照ください。

Inheritance Hierarchy

System..::..Object
FVIL.Ipl..::..IplImageConverter

See Also