ビット深度の計算

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

Syntax

C#
public virtual int CalcDepth()
Visual Basic
Public Overridable Function CalcDepth As Integer

Return Value

Type: Int32
ビット深度を 1~64 の間で返します。 画像種別が RGB24 または RGB32 の場合は、常に 8 を返します。

対応表:
画像種別ビット深度の範囲備考
BIN1 
UC81~8 
S161~15型の最小値(-32768) の場合は 15 を返します
US161~16 
I321~31型の最小値(-2147483648) の場合は 31 を返します
UI321~32 
I641~63型の最小値(-9223372036854775808) の場合は 63 を返します
F321~3232bpp を超える場合は 32 を返します
D641~6464bpp を超える場合は 64 を返します
RGB248常に 8 を返します
RGB328常に 8 を返します

Remarks

画像データから画素値の最大値と最小値を検索し、下記の範囲に収まる場合のビット深度を返します。
範囲) MAX(|最大値|,|最小値|) < (2depth)

例えば、-2<画素値<2 はビット深度 1 となり、-256<画素値<256 はビット深度 8 となります。

チャネル毎に計算する場合は、 CalcDepthForChannel(Int32) を使用してください。

このメソッドは、メンバのビット深度(Depth)を更新しません。 計算した結果を反映する場合は Depth に設定してください。

処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。

エラーコード:

ErrorCode メンバ内容
23FVIL.ErrorCode.NOT_ALLOCATED画像メモリが確保されていません。

Examples

下記は、画像の任意の位置に 126, 63, -127 を設定し、ビット深度を計算しています。 チャネル番号 2 の x=7,y=7 の位置にある画素値 -127 の絶対値が最大なので 7 が返ります。 計算した結果を Depth に設定して CFviDisplay で表示すると 0~127 の画素値が 0~255 にスケーリングされます。 (CFviDisplay は、符号付き画像を 256 階調で表示する為に このクラスの SignedToRGB(Int32, CFviImage, UInt32) メソッドを使用して RGB に変換しています)
C# Copy imageCopy
FVIL.Data.CFviImage  image = new FVIL.Data.CFviImage(320,240,FVIL.ImageType.D64,3);
image.SetPixelD64( 0,5,5,  126);    // 0x7E: Math.Abs(value) ≦ 2^7-1
image.SetPixelD64( 1,6,6,   63);    // 0x3F: Math.Abs(value) ≦ 2^6-1
image.SetPixelD64( 2,7,7, -127);    // 0x7F: Math.Abs(value) ≦ 2^7-1
Console.WriteLine( "depth={0}", image.CalcDepth() );

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also