Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
[SerializableAttribute] public class CFviImage : CFviDataObject, IFviFileAccess, ISerializable, IXmlSerializable |
Visual Basic |
---|
<SerializableAttribute> Public Class CFviImage Inherits CFviDataObject Implements IFviFileAccess, ISerializable, IXmlSerializable |
Remarks
画像メモリを管理するクラスです。
プロパティ | 初期値 | 範囲 | 変更 |
---|---|---|---|
HorzSize | 640 (pixel) | 1~ | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
VertSize | 480 (pixel) | 1~ | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
ImageType | FVIL.ImageType.UC8 | FVIL.ImageType に定義された定数 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
Channel | 1 (チャネル) | 1~16 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
Bpp | 8 (bit) | ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
HorzByte | 640 (byte) | HorzSize と ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
MemSize | 307,200 (byte) | Size と ImageType に依存します。 | SetSize(Int32, Int32, ImageType, Int32) で決定します。 |
Depth | 8 (bit) | ImageType に依存します。 | 当プロパティから変更可能です。 |
ImageInfo | FVIL.ImageInfo.GRAY | FVIL.ImageInfo に定義された定数 | 当プロパティから変更可能です。 |
Window | X=0,Y=0,Width=640,Height=480 |
X: 0~HorzSize-1 Y: 0~VertSize-1 Width : 1~HorzSize Height: 1~VertSize | 当プロパティから変更可能です。 |
本クラスは、画像データ領域と処理ウィンドウを保有します。 画像データ領域は、実際に画像データを格納する物理的な領域です。 処理ウィンドウは、画像処理の対象となる部分を示した論理的な矩形の領域です。
画像データ領域は、縦横共に 1 以上の整数で任意のサイズを指定して確保できます。 画像種別(画素の型情報)は ImageType に定義されたものに限ります。 また、チャネル数を指定する事により、本クラス内に複数(1~16)の画像データ領域を持つ事ができます。 但し、各チャネルの領域サイズ及び画像種別は同一である必要があります。
処理ウィンドウは、縦横共に 1 以上の整数で任意のサイズを指定できます。 但し、画像データ領域を超えて設定する事はできません。 主に、画像処理の対象となる部分を示すものですが、一部の機能では、 処理ウィンドウに関係なく全面に対して処理を行うものがあります。 詳しくは、各機能の説明をご参照ください。
関連:
SetSize(Int32, Int32, ImageType, Int32)
Window
画像データ領域のサイズは任意ですが、内部的には、横方向メモリサイズが 4byte (32bit) で割り切れるよう確保されてます。 もし、HorzSize と ImageType から計算した結果が 4byte (32bit) で割り切れない場合は、パディング(Padding)が入ります。
下図は、HorzSize=17, VertSize=11, ImageType=FVIL.ImageType.UC8 の場合のメモリ構造を示したものです。 この場合、横方向の画像データは 17 画素(17x1=17byte)ですが、メモリ上では 4byte (32bit) で割り切れるように 3byte のパディングが入り、 物理的には 20byte の領域が確保されています。 物理的な横方向メモリサイズは HorzByte で取得できます。
次の図は、HorzSize=17, VertSize=11, ImageType=FVIL.ImageType.RGB24 の場合のメモリ構造を示したものです。 この場合、横方向の画像データは 17 画素(17x3=51byte)ですが、メモリ上では 4byte (32bit) で割り切れるように 1byte のパディングが入り、 物理的には 52byte の領域が確保されています。
関連:
HorzByte
本クラスで確保される2値画像データは、Windows の DIB形式と異なり、32bit でパッキングされています。 画素をポインタ走査する場合は、4byte 単位に行う必要があります。 詳しくは、 BinaryFormat の説明をご参照ください。 本クラスの2値画像データは FVIL.BinaryFormat.DwordOrder に該当します。
関連:
BinaryFormat
画像メモリの確保は、2種類の方法を用意しています。
種類 | 説明 |
---|---|
内部メモリ | 指定された画像サイズをインスタンス内部に確保します。 |
外部メモリ | ユーザまたは他のライブラリ等で確保したメモリを参照します。 |
関連:
Attach()()()()
Detach()()()()
IsAttach()()()()
データ変換:
このオブジェクトと他のオブジェクトのデータ変換の組み合わせを下表に示します。
オブジェクト | メソッド | 説明 |
---|---|---|
CFviGdiImage | CopyFrom(Object) |
指定された画像オブジェクトからデータをコピーします。
このオブジェクトの領域は変換前に再確保されます。
複製元の Bpp(1,8,24,32) によって変換後の画像種別(ImageType)を決定します
現在の Bppが 24 または 32 の時は、パッキング画像(RGB24, RGB32)に変換します。
また、このメソッドの他に キャスト を使用した記述も可能です。 |
System.Drawing.Bitmap | CopyFrom(Object) |
指定されたビットマップからデータをコピーします。
このオブジェクトの領域は変換前に再確保されます。
変換可能な条件は以下の通りです。 対応する System::Drawing::Imaging::PixelFormat
また、このメソッドの他に キャスト を使用した記述も可能です。 |
IplImage | IplImageConverter CopyFrom(Object) CopyTo(Object) |
Intel IPL の IplImage との相互変換を行います。 |
下表に示す関数は簡易的な画像フィルタを実行するものです。 これらの関数は、記述上の簡易さを目的としています。 多くの関数は、画像処理クラス(または関数)と比較すると処理時間がかかりますので処理時間を重視する場合は 関連するクラスまたは関数の使用を検討してください。
Inheritance Hierarchy
FVIL..::..CFviObject
FVIL.Data..::..CFviDataObject
FVIL.Data..::..CFviImage
FVIL.Data..::..CFviPattern