LEADTOOLS(Leadtoolsアセンブリ)

フレームを表示

WindowLevelFillLookupTableなメソッド








8ビットRGBクアッド(すなわちルックアップテーブル)でアップデートされる配列へのポインター。
グラデーションのための開始色値。
グラデーションのための終了色値。
ピクセル単位で、チャネル幅の低い値。
ウィンドウ幅の上限値(ピクセル単位)。

レベリングのために使われる低位ビットを示している値。

これは通常0で、highBitより少なくなければなりません。

レベリングのために使われる高位ビットを示している値。

これは低ビット以上で、11未満(12ビットのグレースケールの場合)または15未満(16ビットのグレースケールの場合)にする必要があります。
image極小値。この値は、MinMaxValuesCommandを使うことで取得できます。
image最大値。この値は、MinMaxValuesCommandを使うことで取得できます。

要因がフラグパラメーターで指定されているメソッド操作で適用されることを示す値。

このパラメーターが使われます。そして、フラグがある場合だけ、RasterPaletteWindowLevelFlags.ExponentialRasterPaletteWindowLevelFlags.LogarithmicまたはRasterPaletteWindowLevelFlags.Sigmoidはそうです。

RasterPaletteWindowLevelFlags.ExponentialまたはRasterPaletteWindowLevelFlags.Sigmoidが指定されるならば、その値は任意の整数(+/-)でありえます。RasterPaletteWindowLevelFlags.Logarithmicが指定されるならば、その値はなければなりません>>= 0要因= 0ならば、ルックアップテーブルは線形に塗りつぶされます。

ルックアップテーブルのどの範囲に値を設定するか、ルックアップテーブルのタイプ、およびルックアップテーブルが符号付きデータと符号なしデータのどちらを含むかを示すフラグ。
選択したLUT型に従って、ユーザーが割り当てた8ビットLUTにstartColorからendColorカラーまでの範囲の値を設定します。
構文
'Declaration
 
Public Shared Sub WindowLevelFillLookupTable( _
   ByVal lookupTable() As RasterColor, _
   ByVal startColor As RasterColor, _
   ByVal endColor As RasterColor, _
   ByVal low As Integer, _
   ByVal high As Integer, _
   ByVal lowBit As Integer, _
   ByVal highBit As Integer, _
   ByVal minValue As Integer, _
   ByVal maxValue As Integer, _
   ByVal factor As Integer, _
   ByVal flags As RasterPaletteWindowLevelFlags _
) 
'Usage
 
Dim lookupTable() As RasterColor
Dim startColor As RasterColor
Dim endColor As RasterColor
Dim low As Integer
Dim high As Integer
Dim lowBit As Integer
Dim highBit As Integer
Dim minValue As Integer
Dim maxValue As Integer
Dim factor As Integer
Dim flags As RasterPaletteWindowLevelFlags
 
RasterPalette.WindowLevelFillLookupTable(lookupTable, startColor, endColor, low, high, lowBit, highBit, minValue, maxValue, factor, flags)
+(BOOL)windowLevelFillLookupTable:(NSArray*)lookupTable
                       startColor:(LTRasterColor*)startColor
                         endColor:(LTRasterColor*)endColor
                              low:(int)low
                             high:(int)high
                           lowBit:(unsigned int)lowBit
                          highBit:(unsigned int)highBit
                         minValue:(int)minValue
                         maxValue:(int)maxValue
                           factor:(int)factor
                            flags:(LTRasterPaletteWindowLevelFlags)flags
                            error:(NSError**)outError;
            
 function Leadtools.RasterPalette.WindowLevelFillLookupTable( 
   lookupTable ,
   startColor ,
   endColor ,
   low ,
   high ,
   lowBit ,
   highBit ,
   minValue ,
   maxValue ,
   factor ,
   flags 
)

パラメーター

lookupTableな
8ビットRGBクアッド(すなわちルックアップテーブル)でアップデートされる配列へのポインター。
startColor
グラデーションのための開始色値。
endColor
グラデーションのための終了色値。
低い
ピクセル単位で、チャネル幅の低い値。
高さ
ウィンドウ幅の上限値(ピクセル単位)。
低ビット

レベリングのために使われる低位ビットを示している値。

これは通常0で、highBitより少なくなければなりません。
highBit

レベリングのために使われる高位ビットを示している値。

これは低ビット以上で、11未満(12ビットのグレースケールの場合)または15未満(16ビットのグレースケールの場合)にする必要があります。
minValue
image極小値。この値は、MinMaxValuesCommandを使うことで取得できます。
maxValue
image最大値。この値は、MinMaxValuesCommandを使うことで取得できます。
要因

要因がフラグパラメーターで指定されているメソッド操作で適用されることを示す値。

このパラメーターが使われます。そして、フラグがある場合だけ、RasterPaletteWindowLevelFlags.ExponentialRasterPaletteWindowLevelFlags.LogarithmicまたはRasterPaletteWindowLevelFlags.Sigmoidはそうです。

RasterPaletteWindowLevelFlags.ExponentialまたはRasterPaletteWindowLevelFlags.Sigmoidが指定されるならば、その値は任意の整数(+/-)でありえます。RasterPaletteWindowLevelFlags.Logarithmicが指定されるならば、その値はなければなりません>>= 0要因= 0ならば、ルックアップテーブルは線形に塗りつぶされます。

フラグ
ルックアップテーブルのどの範囲に値を設定するか、ルックアップテーブルのタイプ、およびルックアップテーブルが符号付きデータと符号なしデータのどちらを含むかを示すフラグ。
解説

このメソッドはメディカルツールキットで利用できます。

ルックアップテーブルタイプフラグによってルックアップテーブル(RasterImage.WindowLevelで使われる)に設定するために、このメソッドを使います。

ルックアップテーブルは、以下のように塗りつぶされます:

内部/外側 MinValue低い 低高さ high~maxValue
RasterPaletteWindowLevelFlags.Inside 単色の黒(0,0,0) startColorからendColorにわたっているカラーグラデーション 同一調の白(255,255,255)
RasterPaletteWindowLevelFlags.Outside 固体のカラー(startColor 単色の黒(0,0,0)から同一調の白(255、255、255)へのグレースケール値 固体のカラー(endColor
RasterPaletteWindowLevelFlags.Inside | RasterPaletteWindowLevelFlags.DicomStyle None startColorからendColorにわたっているカラーグラデーション None
RasterPaletteWindowLevelFlags.Outside | RasterPaletteWindowLevelFlags.DicomStyle 固体のカラー(startColor startColorからendColorにわたっているカラーグラデーション 固体のカラー(endColor

16ビットルックアップテーブルを塗りつぶすために、WindowLevelFillLookupTableExtを使います。

ウィンドウレベル調整を行った画像を保存できるファイル形式は、TIFFとDICOMのみです。

WindowLevelCommandを用いて、または、ウィンドウレベリングをサポートするファイルフォーマットからimageをロードすることによって、イメージは、RasterImage.WindowLevelを呼び出して、フラグパラメーターのためにRasterWindowLevelMode.PaintAndProcessingを指定することによるウィンドウレベル調整を行ったでありえます。

ウィンドウレベル調整を行ったimageが他のファイルフォーマットとして保存されるならば、画像データは保存される前に変換されます。詳細については、「Windowsレベル調整画像の保存」を参照してください。

LEADTOOLSは、10-16ビットグレースケールイメージ(8ビットLUTと16ビットLUT)のために、2種類のLUTをサポートします。一般的なグレースケール画像表示と処理は、8ビットLUTを用いてされます。ただし、16ビットLUTを使用して精度を高めることも可能です。若干の特別なビデオカードとモニターも、16ビットLUTを用いてグレースケールイメージの表示をサポートします。

詳細については、「LEADTOOLSによる画像処理入門」を参照してください。

詳細については、「グレースケールイメージ」を参照してください。

サンプル
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core

      
  Public Sub WindowLevelFillLookupTableExample()
   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")
   Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_WindowLevel.tif")

   ' Load an image as 8 bits/pixel
   Dim image As RasterImage = codecs.Load(srcFileName, 8, CodecsLoadByteOrder.Rgb, 1, 1)

   ' change the image to be 16-bit grayscale
   Dim grayscaleCmd As GrayscaleCommand = New GrayscaleCommand(16)
   grayscaleCmd.Run(image)

   ' get the lookup table size
   Dim lookupTableSize As Integer = 1 << (image.HighBit - image.LowBit + 1)

   ' get low/hight bits and minimum/maximum value of this grayscale image
   Dim minMaxBitsCmd As MinMaxBitsCommand = New MinMaxBitsCommand()
   minMaxBitsCmd.Run(image)

   Dim lowBit As Integer = minMaxBitsCmd.MinimumBit
   Dim highBit As Integer = minMaxBitsCmd.MaximumBit

   Dim minMaxValuesCmd As MinMaxValuesCommand = New MinMaxValuesCommand()
   minMaxValuesCmd.Run(image)
   Dim minVal As Integer = minMaxValuesCmd.MinimumValue
   Dim maxVal As Integer = minMaxValuesCmd.MaximumValue

   ' create the lookup table
   Dim lookupTable As RasterColor() = New RasterColor(lookupTableSize - 1) {}

   Dim flags As RasterPaletteWindowLevelFlags = RasterPaletteWindowLevelFlags.Inside Or RasterPaletteWindowLevelFlags.Linear

   If image.Signed Then
      flags = flags Or RasterPaletteWindowLevelFlags.Signed
   End If

   ' initialize the fill lookup table parameters
   Dim startColor As RasterColor = RasterColor.FromKnownColor(RasterKnownColor.Red)
   Dim endColor As RasterColor = RasterColor.FromKnownColor(RasterKnownColor.Blue)

   Dim low As Integer = 23000
   Dim high As Integer = 45000
   Dim factor As Integer = 10

   ' fill the lookup table
   RasterPalette.WindowLevelFillLookupTable(lookupTable, startColor, endColor, low, high, lowBit, highBit, minVal, maxVal, factor, flags)

   ' now do window level on the image
   image.WindowLevel(lowBit, highBit, lookupTable, RasterWindowLevelMode.PaintAndProcessing)

   ' save it back on disk
   codecs.Save(image, destFileName, RasterImageFormat.Tif, 16)

   ' Clean up
   image.Dispose()
End Sub

Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;

      
public void WindowLevelFillLookupTableExample()
{
   RasterCodecs codecs = new RasterCodecs();
   codecs.ThrowExceptionsOnInvalidImages = true;

   string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
   string destFileName = Path.Combine(ImagesPath.Path, "Image1_WindowLevel.tif");

   // Load an image as 8 bits/pixel
   RasterImage image = codecs.Load(srcFileName, 8, CodecsLoadByteOrder.Rgb, 1, 1);

   // change the image to be 16-bit grayscale
   GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);
   grayscaleCmd.Run(image);

   // get the lookup table size
   int lookupTableSize = 1 << (image.HighBit - image.LowBit + 1);

   // get low/hight bits and minimum/maximum value of this grayscale image
   MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();
   minMaxBitsCmd.Run(image);

   int lowBit = minMaxBitsCmd.MinimumBit;
   int highBit= minMaxBitsCmd.MaximumBit;

   MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();
   minMaxValuesCmd.Run(image);
   int minVal = minMaxValuesCmd.MinimumValue;
   int maxVal = minMaxValuesCmd.MaximumValue;

   // create the lookup table
   RasterColor[] lookupTable = new RasterColor[lookupTableSize];

   RasterPaletteWindowLevelFlags flags =
      RasterPaletteWindowLevelFlags.Inside |
      RasterPaletteWindowLevelFlags.Linear;

   if(image.Signed)
      flags |= RasterPaletteWindowLevelFlags.Signed;

   // initialize the fill lookup table parameters
   RasterColor startColor= RasterColor.FromKnownColor(RasterKnownColor.Red);
   RasterColor endColor = RasterColor.FromKnownColor(RasterKnownColor.Blue);

   int low = 23000;
   int high = 45000;
   int factor = 10;

   // fill the lookup table
   RasterPalette.WindowLevelFillLookupTable(
      lookupTable,
      startColor,
      endColor,
      low,
      high,
      lowBit,
      highBit,
      minVal,
      maxVal,
      factor,
      flags);

   // now do window level on the image
   image.WindowLevel(
      lowBit,
      highBit,
      lookupTable,
      RasterWindowLevelMode.PaintAndProcessing);

   // save it back on disk
   codecs.Save(image, destFileName, RasterImageFormat.Tif, 16);

   // Clean up
   image.Dispose();
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;

      
public async Task WindowLevelFillLookupTableExample()
{
   RasterCodecs codecs = new RasterCodecs();
   codecs.ThrowExceptionsOnInvalidImages = true;

   string srcFileName = @"Assets\Image1.cmp";
   string destFileName = @"Image1_WindowLevel.tif";

   // Load an image as 8 bits/pixel
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   ILeadStream loadStream = LeadStreamFactory.Create(loadFile);
   RasterImage srcImage = await codecs.LoadAsync(loadStream, 8, CodecsLoadByteOrder.Bgr, 1, 1);
   Assert.IsTrue(srcImage.BitsPerPixel == 8);

   // change the image to be 16-bit grayscale
   GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);
   grayscaleCmd.Run(srcImage);

   // get the lookup table size
   int lookupTableSize = 1 << (srcImage.HighBit - srcImage.LowBit + 1);

   // get low/hight bits and minimum/maximum value of this grayscale image
   MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();
   minMaxBitsCmd.Run(srcImage);

   int lowBit = minMaxBitsCmd.MinimumBit;
   int highBit= minMaxBitsCmd.MaximumBit;

   MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();
   minMaxValuesCmd.Run(srcImage);
   int minVal = minMaxValuesCmd.MinimumValue;
   int maxVal = minMaxValuesCmd.MaximumValue;

   // create the lookup table
   RasterColor[] lookupTable = new RasterColor[lookupTableSize];

   RasterPaletteWindowLevelFlags flags =
      RasterPaletteWindowLevelFlags.Inside |
      RasterPaletteWindowLevelFlags.Linear;

   if (srcImage.Signed)
      flags |= RasterPaletteWindowLevelFlags.Signed;

   // initialize the fill lookup table parameters
   RasterColor startColor= RasterColorHelper.FromKnownColor(RasterKnownColor.Red);
   RasterColor endColor = RasterColorHelper.FromKnownColor(RasterKnownColor.Blue);

   int low = 23000;
   int high = 45000;
   int factor = 10;

   // fill the lookup table
   RasterPalette.WindowLevelFillLookupTable(
      lookupTable,
      startColor,
      endColor,
      low,
      high,
      lowBit,
      highBit,
      minVal,
      maxVal,
      factor,
      flags);

   // now do window level on the image
   srcImage.WindowLevel(
      lowBit,
      highBit,
      lookupTable,
      RasterWindowLevelMode.PaintAndProcessing);

   // save it back on disk
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName);
   ILeadStream saveStream = LeadStreamFactory.Create(saveFile);
   await codecs.SaveAsync(srcImage, saveStream, RasterImageFormat.Tif, 16);

   // Clean up
   srcImage.Dispose();
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.Windows.Media;

public void WindowLevelFillLookupTableExample(RasterImage image, Stream destStream)
{
   // image should be 8 bits/pixel
   RasterCodecs codecs = new RasterCodecs();
   codecs.ThrowExceptionsOnInvalidImages = true;
   // change the image to be 16-bit grayscale
   GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);
   grayscaleCmd.Run(image);

   // get the lookup table size
   int lookupTableSize = 1 << (image.HighBit - image.LowBit + 1);

   // get low/hight bits and minimum/maximum value of this grayscale image
   MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();
   minMaxBitsCmd.Run(image);

   int lowBit = minMaxBitsCmd.MinimumBit;
   int highBit= minMaxBitsCmd.MaximumBit;

   MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();
   minMaxValuesCmd.Run(image);
   int minVal = minMaxValuesCmd.MinimumValue;
   int maxVal = minMaxValuesCmd.MaximumValue;

   // create the lookup table
   RasterColor[] lookupTable = new RasterColor[lookupTableSize];

   RasterPaletteWindowLevelFlags flags =
      RasterPaletteWindowLevelFlags.Inside |
      RasterPaletteWindowLevelFlags.Linear;

   if(image.Signed)
      flags |= RasterPaletteWindowLevelFlags.Signed;

   // initialize the fill lookup table parameters
   RasterColor startColor = RasterColorConverter.FromColor(Colors.Red);
   RasterColor endColor = RasterColorConverter.FromColor(Colors.Blue);

   int low = 23000;
   int high = 45000;
   int factor = 10;

   // fill the lookup table
   RasterPalette.WindowLevelFillLookupTable(
      lookupTable,
      startColor,
      endColor,
      low,
      high,
      lowBit,
      highBit,
      minVal,
      maxVal,
      factor,
      flags);

   // now do window level on the image
   image.WindowLevel(
      lowBit,
      highBit,
      lookupTable,
      RasterWindowLevelMode.PaintAndProcessing);

   // save it back on disk
   codecs.Save(image, destStream, RasterImageFormat.Tif, 16);

   // Clean up
   image.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.Windows.Media

Public Sub WindowLevelFillLookupTableExample(ByVal image As RasterImage, ByVal destStream As Stream)
   ' image should be 8 bits/pixel
   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True
   ' change the image to be 16-bit grayscale
   Dim grayscaleCmd As GrayscaleCommand = New GrayscaleCommand(16)
   grayscaleCmd.Run(image)

   ' get the lookup table size
   Dim lookupTableSize As Integer = 1 << (image.HighBit - image.LowBit + 1)

   ' get low/hight bits and minimum/maximum value of this grayscale image
   Dim minMaxBitsCmd As MinMaxBitsCommand = New MinMaxBitsCommand()
   minMaxBitsCmd.Run(image)

   Dim lowBit As Integer = minMaxBitsCmd.MinimumBit
   Dim highBit As Integer= minMaxBitsCmd.MaximumBit

   Dim minMaxValuesCmd As MinMaxValuesCommand = New MinMaxValuesCommand()
   minMaxValuesCmd.Run(image)
   Dim minVal As Integer = minMaxValuesCmd.MinimumValue
   Dim maxVal As Integer = minMaxValuesCmd.MaximumValue

   ' create the lookup table
   Dim lookupTable As RasterColor() = New RasterColor(lookupTableSize - 1){}

   Dim flags As RasterPaletteWindowLevelFlags = RasterPaletteWindowLevelFlags.Inside Or RasterPaletteWindowLevelFlags.Linear

   If image.Signed Then
      flags = flags Or RasterPaletteWindowLevelFlags.Signed
   End If

   ' initialize the fill lookup table parameters
   Dim startColor As RasterColor = RasterColorConverter.FromColor(Colors.Red)
   Dim endColor As RasterColor = RasterColorConverter.FromColor(Colors.Blue)

   Dim low As Integer = 23000
   Dim high As Integer = 45000
   Dim factor As Integer = 10

   ' fill the lookup table
   RasterPalette.WindowLevelFillLookupTable(lookupTable, startColor, endColor, low, high, lowBit, highBit, minVal, maxVal, factor, flags)

   ' now do window level on the image
   image.WindowLevel(lowBit, highBit, lookupTable, RasterWindowLevelMode.PaintAndProcessing)

   ' save it back on disk
   codecs.Save(image, destStream, RasterImageFormat.Tif, 16)

   ' Clean up
   image.Dispose()
End Sub
必要条件

ターゲットプラットホーム

参照

参照

RasterPaletteクラス
RasterPaletteメンバ