LEADTOOLS(Leadtoolsアセンブリ)

フレームを表示

WindowLevelExtメソッド








レベリングのために使われる低位ビットを示している値。0の≦LowBitHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。
レベリングのために使われる高位ビットを示している値。0の≦LowBitHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。
ユーザーを実装するのに用いられることができるオプションの16ビットルックアップテーブルは、変換を定義しました。0~2が乗に発生した明度値ごとに(HighBitLowBit + 1)-1、カラーを格納するルックアップテーブルの対応するエントリが、なければなりません。パレットnullであるならば、変換は通常のシフト(右であるか左の)です、そして、描画されたimageは8または16ビットグレースケールです。パレットnullでないならば、描画されたimageは48ビットimageです。
パレットが描画とimage処理方法によって、または、描画メソッドだけによって使われるかどうか示している値。
このRasterImage用に、描画または描画画像処理メソッドのウィンドウレベルオプションを設定します。
構文
public void WindowLevelExt( 
   int lowBit,
   int highBit,
   RasterColor16[] palette,
   RasterWindowLevelMode mode
)
'Declaration
 
Public Sub WindowLevelExt( _
   ByVal lowBit As Integer, _
   ByVal highBit As Integer, _
   ByVal palette() As RasterColor16, _
   ByVal mode As RasterWindowLevelMode _
) 
'Usage
 
Dim instance As RasterImage
Dim lowBit As Integer
Dim highBit As Integer
Dim palette() As RasterColor16
Dim mode As RasterWindowLevelMode
 
instance.WindowLevelExt(lowBit, highBit, palette, mode)
public void WindowLevelExt( 
   int lowBit,
   int highBit,
   RasterColor16[] palette,
   RasterWindowLevelMode mode
)
- (BOOL)windowLevelExt:(NSInteger)lowBitValue 
               highBit:(NSInteger)highBitValue 
               palette:(nullable NSArray<LTRasterColor16 *> *)palette 
                  mode:(LTRasterWindowLevelMode)mode 
                 error:(NSError **)error
            
public void windowLevelExt(
  int lowBit, 
  int highBit, 
  RasterColor16[] palette, 
  RasterWindowLevelMode mode
)
            
 function Leadtools.RasterImage.WindowLevelExt( 
   lowBit ,
   highBit ,
   palette ,
   mode 
)

パラメーター

低ビット
レベリングのために使われる低位ビットを示している値。0の≦LowBitHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。
highBit
レベリングのために使われる高位ビットを示している値。0の≦LowBitHighBit≦(12ビットのグレースケールの場合は11、16ビットのグレースケールは15)。
パレット
ユーザーを実装するのに用いられることができるオプションの16ビットルックアップテーブルは、変換を定義しました。0~2が乗に発生した明度値ごとに(HighBitLowBit + 1)-1、カラーを格納するルックアップテーブルの対応するエントリが、なければなりません。パレットnullであるならば、変換は通常のシフト(右であるか左の)です、そして、描画されたimageは8または16ビットグレースケールです。パレットnullでないならば、描画されたimageは48ビットimageです。
モード
パレットが描画とimage処理方法によって、または、描画メソッドだけによって使われるかどうか示している値。
解説

このメソッドは(ドキュメント/Medicalのみ)ツールキットで利用できます。

「オンデマンドで」ウィンドウレベリングを描画メソッドに提供して、画像データを変えません。ウィンドウに画像データを変換することは、image(使用WindowLevelExt)をレベル調整しました。

RasterWindowLevelMode.PaintAndProcessingが指定されるならば、すべてのimage処理方法はパレットを考慮に入れます。

ウィンドウレベル調整を行った画像を保存できるファイル形式は、TIFFとDICOMのみです。WindowLevelExtを用いて、または、ウィンドウレベリングをサポートするファイルフォーマットからimageをロードすることによって、イメージは、WindowLevelExtを呼び出して、モードパラメーターのためにRasterWindowLevelMode.PaintAndProcessingを指定することによるウィンドウレベル調整を行ったでありえます。ウィンドウレベル調整を行ったimageが他のファイルフォーマットとして保存されるならば、画像データは保存される前に変換されます。詳細については、「Windowsレベル調整画像の保存」を参照してください。

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

8ビットパレットを使うこの関数のバージョンのために、WindowLevelを参照します。

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

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

サンプル
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Controls
Imports Leadtools.Dicom
Imports Leadtools.Drawing
Imports Leadtools.Svg

      
Public Sub WindowLevelExtExample()
   Dim codecs As RasterCodecs = New RasterCodecs()
   ' Load a 16-bit grayscale image
   Dim image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE2.DCM"))
   ' Get the min and max values
   Dim minMaxBitsCmd As MinMaxBitsCommand = New MinMaxBitsCommand()
   minMaxBitsCmd.Run(image)

   Dim minMaxValuesCmd As MinMaxValuesCommand = New MinMaxValuesCommand()
   minMaxValuesCmd.Run(image)

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

   Dim size As Integer = (1 << (image.HighBit - image.LowBit + 1))
   Dim palette As RasterColor16() = New RasterColor16(size - 1) {}

   ' fill the first half of the LUT with RED
   Dim x As Integer = 0
   Do While x < size / 2
      palette(x).R = RasterColor16.MaximumComponent
      palette(x).G = 0
      palette(x).B = 0
      palette(x).Reserved = 0
      x += 1
   Loop

   Dim minVal As Integer = minMaxValuesCmd.MinimumValue
   Dim maxVal As Integer = minMaxValuesCmd.MaximumValue

   ' Fill the rest with gray values 
   x = (size \ 2)
   Do While x < size
      palette(x).R = Convert.ToUInt16(Math.Min(RasterColor16.MaximumComponent, _
                                               (Convert.ToUInt32(x - minVal) * RasterColor16.MaximumComponent) / (maxVal - minVal)))
      palette(x).G = palette(x).R
      palette(x).B = palette(x).R
      palette(x).Reserved = 0
      x += 1
   Loop
   image.WindowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing)

   codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_WindowLevel.BMP"), RasterImageFormat.Bmp, 0)

   image.Dispose()
   codecs.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;
using Leadtools.ImageProcessing.Color;
using Leadtools.Dicom;
using Leadtools.Drawing;
using Leadtools.Controls;
using Leadtools.Svg;

      
public void WindowLevelExtExample()
{
   RasterCodecs codecs = new RasterCodecs();
   // Load a 16-bit grayscale image
   RasterImage image = codecs.Load(Path.Combine(ImagesPath.Path,"IMAGE2.DCM"));
   // Get the min and max values
   MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();
   minMaxBitsCmd.Run(image);

   MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();
   minMaxValuesCmd.Run(image);

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

   int size = (1 << (image.HighBit - image.LowBit + 1));
   RasterColor16[] palette = new RasterColor16[size];

   // fill the first half of the LUT with RED
   for(int x = 0; x < size / 2; x++)
   {
      palette[x].R = RasterColor16.MaximumComponent;
      palette[x].G = 0;
      palette[x].B = 0;
      palette[x].Reserved = 0;
   }

   int minVal = minMaxValuesCmd.MinimumValue;
   int maxVal = minMaxValuesCmd.MaximumValue;

   // Fill the rest with gray values 
   for(int x = (size / 2); x < size; x++)
   {
      palette[x].R = Convert.ToUInt16(Math.Min(RasterColor16.MaximumComponent, (Convert.ToUInt32(x - minVal) * RasterColor16.MaximumComponent) / (maxVal - minVal)));
      palette[x].G = palette[x].R;
      palette[x].B = palette[x].R;
      palette[x].Reserved = 0;
   }
   image.WindowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing);

   codecs.Save(image, Path.Combine(ImagesPath.Path, "IMAGE1_WindowLevel.BMP"), RasterImageFormat.Bmp, 0);

   image.Dispose();
   codecs.Dispose();
}
RasterImageExamples.prototype.WindowLevelExtExample = function () {
   Tools.SetLicense();
   with (Leadtools) {
      with (Leadtools.Codecs) {
         with (Leadtools.ImageProcessing.Core) {


            var codecs = new RasterCodecs();
            // Load a 16-bit grayscale image
            var srcFileName = "Assets\\IMAGE2.DCM";
            var image;
            return Tools.AppInstallFolder().getFileAsync(srcFileName).then(function (loadFile) {
               return codecs.loadAsync(LeadStreamFactory.create(loadFile))
            })
                  .then(function (img) {
                     image = img;
                     // Get the min and max values
                     var minMaxBitsCmd = new MinMaxBitsCommand();
                     minMaxBitsCmd.run(image);

                     var minMaxValuesCmd = new MinMaxValuesCommand();
                     minMaxValuesCmd.run(image);

                     var lowBit = minMaxBitsCmd.minimumBit;
                     var highBit = minMaxBitsCmd.maximumBit;

                     var size = (1 << (image.highBit - image.lowBit + 1));
                     var palette = new Array(size);

                     // fill the first half of the LUT with RED
                     for (var x = 0; x < size / 2; x++) {
                        var color = [];
                        color.a = 255;
                        color.r = RasterColor16Helper.maximumComponent;
                        color.g = 0;
                        color.b = 0;
                        color.reserved = 0;
                        palette[x] = color;
                     }

                     var minVal = minMaxValuesCmd.minimumValue;
                     var maxVal = minMaxValuesCmd.maximumValue;

                     // Fill the rest with gray values 
                     for (var x = (size / 2) ; x < size; x++) {
                        var color = [];
                        color.a = 255;
                        color.r = Math.floor(Math.max(0, (Math.min(RasterColor16Helper.maximumComponent, Tools.ToUInt32(x - minVal) * RasterColor16Helper.maximumComponent / (maxVal - minVal)))));
                        color.g = color.r;
                        color.b = color.r;
                        color.reserved = 0;

                        palette[x] = color;
                     }
                     mage.windowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.paintAndProcessing);

                     return Tools.AppLocalFolder().createFileAsync("IMAGE1_WindowLevel.bmp")
                  })
                  .then(function (saveFile) {
                     var saveStream = LeadStreamFactory.create(saveFile);
                     return codecs.saveAsync(image, saveStream, RasterImageFormat.bmp, 0)
                  })
                  .then(function () {

                     image.close();
                     codecs.close();
                  });
         }
      }
   }
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Dicom;

      
public async Task WindowLevelExtExample()
{
   RasterCodecs codecs = new RasterCodecs();
   // Load a 16-bit grayscale image
   string srcFileName = @"Assets\IMAGE2.DCM";
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));
   // Get the min and max values
   MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();
   minMaxBitsCmd.Run(image);

   MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();
   minMaxValuesCmd.Run(image);

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

   int size = (1 << (image.HighBit - image.LowBit + 1));
   RasterColor16[] palette = new RasterColor16[size];

   // fill the first half of the LUT with RED
   for (int x = 0; x < size / 2; x++)
   {
      palette[x].R = RasterColor16Helper.MaximumComponent;
      palette[x].G = 0;
      palette[x].B = 0;
      palette[x].Reserved = 0;
   }

   int minVal = minMaxValuesCmd.MinimumValue;
   int maxVal = minMaxValuesCmd.MaximumValue;

   // Fill the rest with gray values 
   for (int x = (size / 2); x < size; x++)
   {
      palette[x].R = Convert.ToUInt16(Math.Min(RasterColor16Helper.MaximumComponent, (Convert.ToUInt32(x - minVal) * RasterColor16Helper.MaximumComponent) / (maxVal - minVal)));
      palette[x].G = palette[x].R;
      palette[x].B = palette[x].R;
      palette[x].Reserved = 0;
   }
   image.WindowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing);

   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync("IMAGE1_WindowLevel.bmp");
   ILeadStream saveStream = LeadStreamFactory.Create(saveFile);
   await codecs.SaveAsync(image, saveStream, RasterImageFormat.Bmp, 0);

   image.Dispose();
   codecs.Dispose();
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Dicom;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.ImageProcessing.Color;
using Leadtools.Examples;
using Leadtools.Windows.Media;

public void WindowLevelExtExample(RasterImage image, Stream destStream)
{
   // Get the min and max values
   MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();
   minMaxBitsCmd.Run(image);
   MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();
   minMaxValuesCmd.Run(image);

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

   int size = (1 << (image.HighBit - image.LowBit + 1));
   RasterColor16[] palette = new RasterColor16[size];

   // fill the first half of the LUT with RED
   for (int x = 0; x < size / 2; x++)
   {
      palette[x].R = RasterColor16.MaximumComponent;
      palette[x].G = 0;
      palette[x].B = 0;
      palette[x].Reserved = 0;
   }

   int minVal = minMaxValuesCmd.MinimumValue;
   int maxVal = minMaxValuesCmd.MaximumValue;

   // Fill the rest with gray values 
   for (int x = (size / 2); x < size; x++)
   {
      palette[x].R = Convert.ToUInt16(Math.Min(RasterColor16.MaximumComponent, (Convert.ToUInt32(x - minVal) * RasterColor16.MaximumComponent) / (maxVal - minVal)));
      palette[x].G = palette[x].R;
      palette[x].B = palette[x].R;
      palette[x].Reserved = 0;
   }
   image.WindowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing);

   RasterCodecs codecs = new RasterCodecs();
   codecs.Save(image, destStream, RasterImageFormat.Bmp, 0);

   image.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Dicom
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Windows.Media

Public Sub WindowLevelExtExample(ByVal image As RasterImage, ByVal destStream As Stream)
   ' Get the min and max values
   Dim minMaxBitsCmd As MinMaxBitsCommand = New MinMaxBitsCommand()
   minMaxBitsCmd.Run(image)
   Dim minMaxValuesCmd As MinMaxValuesCommand = New MinMaxValuesCommand()
   minMaxValuesCmd.Run(image)

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

   Dim size As Integer = (1 << (image.HighBit - image.LowBit + 1))
   Dim palette As RasterColor16() = New RasterColor16(size - 1){}

   ' fill the first half of the LUT with RED
   Dim x As Integer = 0
   Do While x < size / 2
      palette(x).R = RasterColor16.MaximumComponent
      palette(x).G = 0
      palette(x).B = 0
      palette(x).Reserved = 0
      x += 1
   Loop

   Dim minVal As Integer = minMaxValuesCmd.MinimumValue
   Dim maxVal As Integer = minMaxValuesCmd.MaximumValue

   ' Fill the rest with gray values 
   x = (size / 2)
   Do While x < size
      palette(x).R = Convert.ToUInt16(Math.Min(RasterColor16.MaximumComponent, (Convert.ToUInt32(x - minVal) * RasterColor16.MaximumComponent) / (maxVal - minVal)))
      palette(x).G = palette(x).R
      palette(x).B = palette(x).R
      palette(x).Reserved = 0
      x += 1
   Loop
   image.WindowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing)

   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.Save(image, destStream, RasterImageFormat.Bmp, 0)

   image.Dispose()
End Sub
必要条件

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

参照

参照

RasterImageクラス
RasterImageメンバ
WindowLevelメソッド
Leadtools.ImageProcessing.Core.WindowLevelCommand
WindowLevelExtメソッド