画像オブジェクト

Namespace: FVIL.Data
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

画像メモリを管理するクラスです。

■ トピック


初期値と範囲:

プロパティ初期値範囲変更
HorzSize640 (pixel)1~SetSize(Int32, Int32, ImageType, Int32) で決定します。
VertSize480 (pixel)1~SetSize(Int32, Int32, ImageType, Int32) で決定します。
ImageTypeFVIL.ImageType.UC8FVIL.ImageType に定義された定数SetSize(Int32, Int32, ImageType, Int32) で決定します。
Channel1 (チャネル)1~16SetSize(Int32, Int32, ImageType, Int32) で決定します。
Bpp8 (bit)ImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
HorzByte640 (byte)HorzSizeImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
MemSize307,200 (byte)SizeImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
Depth8 (bit)ImageType に依存します。当プロパティから変更可能です。
ImageInfoFVIL.ImageInfo.GRAYFVIL.ImageInfo に定義された定数当プロパティから変更可能です。
WindowX=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) で割り切れるよう確保されてます。 もし、HorzSizeImageType から計算した結果が 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値画像データの並び:

本クラスで確保される2値画像データは、Windows の DIB形式と異なり、32bit でパッキングされています。 画素をポインタ走査する場合は、4byte 単位に行う必要があります。 詳しくは、 BinaryFormat の説明をご参照ください。 本クラスの2値画像データは FVIL.BinaryFormat.DwordOrder に該当します。

関連:
BinaryFormat


[↑戻る]


内部メモリと外部メモリ:

画像メモリの確保は、2種類の方法を用意しています。

種類説明
内部メモリ指定された画像サイズをインスタンス内部に確保します。
外部メモリユーザまたは他のライブラリ等で確保したメモリを参照します。

関連:
Attach()()()()
Detach()()()()
IsAttach()()()()


[↑戻る]


データ変換:

このオブジェクトと他のオブジェクトのデータ変換の組み合わせを下表に示します。

オブジェクトメソッド説明
CFviGdiImageCopyFrom(Object) 指定された画像オブジェクトからデータをコピーします。 このオブジェクトの領域は変換前に再確保されます。 複製元の Bpp(1,8,24,32) によって変換後の画像種別(ImageType)を決定します 現在の Bppが 24 または 32 の時は、パッキング画像(RGB24, RGB32)に変換します。
また、このメソッドの他に キャスト を使用した記述も可能です。
System.Drawing.BitmapCopyFrom(Object) 指定されたビットマップからデータをコピーします。 このオブジェクトの領域は変換前に再確保されます。 変換可能な条件は以下の通りです。
対応する System::Drawing::Imaging::PixelFormat
  • Format1bppIndexed
  • Format8bppIndexed
  • Format24bppRgb
  • Format32bppRgb
  • Format32bppArgb

また、このメソッドの他に キャスト を使用した記述も可能です。
IplImageIplImageConverter
CopyFrom(Object)
CopyTo(Object)
Intel IPL の IplImage との相互変換を行います。

[↑戻る]


画像フィルタ:

下表に示す関数は簡易的な画像フィルタを実行するものです。 これらの関数は、記述上の簡易さを目的としています。 多くの関数は、画像処理クラス(または関数)と比較すると処理時間がかかりますので処理時間を重視する場合は 関連するクラスまたは関数の使用を検討してください。

内容メソッド関連するクラスまたは関数
画像データの比較Compare(CFviImage, Double, UInt32)fnFIE_img_compare(FHANDLE, FHANDLE, Boolean%)
画像データのコピーCopy(CFviImage, UInt32)fnFIE_img_copy_ex(FHANDLE, FHANDLE, Int32, Double, Double)
画像コピー (リージョン指定)Copy(CFviImage, Object, OriginMode)CFviAddScalar
CFviMaskOperation
画像データの塗り潰し (実数指定)Clear(Double, UInt32)fnFIE_img_clear(FHANDLE, Double)
画像データの塗り潰し (実数指定、チャネル毎)ClearForChannel(Int32, Double, UInt32)fnFIE_img_clear_ch(FHANDLE, Int32, Double)
画像データの塗り潰し (カラー指定)ClearRGB(Color, UInt32)(無し)
画像データの塗り潰し (カラー指定、チャネル毎)ClearRGBForChannel(Int32, Color, UInt32)(無し)
画像データの絶対値演算Abs(UInt32)CFviAbsOperation
画像データの濃度値反転Invert(UInt32)CFviInvertOperation
画像データの飽和処理Saturate(UInt32)(無し)
画像データの飽和処理SaturateWithRange(Int32, Double, Double, UInt32)(無し)
濃淡画像への変換ConvertToGray(Int32, Int32)CFviGrayScale
fnFIE_img_rgb_to_gray(FHANDLE, FHANDLE, Double, Double, Double, Int32)
カラー画像への変換ConvertToColor(Int32, Int32)CFviTrueColor
fnFIE_color_convert(FHANDLE, f_color_space, FHANDLE, f_color_space, FHANDLE)
任意の型の画像への変換ConvertToAny(Int32, Int32)CFviTypeConvert
回転画像の取得GetRotatedImage(Int32)fnFIE_img_rotate_clockwise90(FHANDLE, FHANDLE, Int32)
サイズ変更画像の取得GetScaledImage(Double, Double, SamplingMode)CFviScale
符号付き画像からカラー画像への変換SignedToRGB(Int32, CFviImage, UInt32)(無し)
2値画像からの点列取得GetPointsBIN(Int32, Int32, Int32)fnFIE_img_get_points_bin(FHANDLE, Int32, Int32, PNT_T_PTR, Int32%)
濃淡画像からの点列取得GetPointsGray(Int32, Double, Double, Int32)fnFIE_img_get_points_gray(FHANDLE, Double, Double, Int32, PNT_T_PTR, Int32%)
画像データの検索 (実数指定)Find(Int32, Double, Double, UInt32)(無し)
画像データの検索 (カラー指定)FindRGB(Int32, Color, Double, UInt32)(無し)
最小値の検索FindMinValue(Int32, UInt32)(無し)
最大値の検索FindMaxValue(Int32, UInt32)(無し)
ビット深度の計算CalcDepth()()()()(無し)
ビット深度の計算 (チャネル毎)CalcDepthForChannel(Int32)(無し)

[↑戻る]

Inheritance Hierarchy

See Also