LEADTOOLS(Leadtoolsアセンブリ)

フレームを表示

WindowLevelメソッド








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

パラメーター

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

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

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

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

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

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

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
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Controls
Imports Leadtools.Dicom
Imports Leadtools.Drawing
Imports Leadtools.Svg

      
Public Sub WindowLevelExample()
   Dim codecs As RasterCodecs = New RasterCodecs()
   ' Load an image that has BottomLeft ViewPerspective
   Dim image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP"))
   ' Change the image to 16-bit grayscale 
   Dim grayscaleCmd As GrayscaleCommand = New GrayscaleCommand(16)
   grayscaleCmd.Run(image)

   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 RasterColor() = New RasterColor(size - 1) {}

   ' fill the first half of the LUT with RED
   Dim x As Integer = 0
   Do While x < size / 2
      palette(x).R = 255
      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.ToByte(Math.Min(255, ((x - minVal) * 255 / (maxVal - minVal))))
      palette(x).G = palette(x).R
      palette(x).B = palette(x).R
      palette(x).Reserved = 0
      x += 1
   Loop
   image.WindowLevel(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 WindowLevelExample()
{
   RasterCodecs codecs = new RasterCodecs();
   // Load an image that has BottomLeft ViewPerspective
   RasterImage image = codecs.Load(Path.Combine(ImagesPath.Path, "IMAGE1.CMP"));
   // Change the image to 16-bit grayscale 
   GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);
   grayscaleCmd.Run(image);

   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));
   RasterColor[] palette = new RasterColor[size];

   // fill the first half of the LUT with RED
   for(int x = 0; x < size / 2; x++)
   {
      palette[x].R = 255;
      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.ToByte(Math.Min(255, ((x - minVal) * 255 / (maxVal - minVal))));
      palette[x].G = palette[x].R;
      palette[x].B = palette[x].R;
      palette[x].Reserved = 0;
   }
   image.WindowLevel(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing);

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

   image.Dispose();
   codecs.Dispose();
}
RasterImageExamples.prototype.WindowLevelExample = function ( )
{
   Tools.SetLicense ( ) ;

   with (Leadtools) {
      with (Leadtools.Codecs) {
         with (Leadtools.ImageProcessing.Core) {

            var codecs = new RasterCodecs();
            // Load an image that has BottomLeft ViewPerspective
            var srcFileName = "Assets\\Image1.cmp";
            var image;
            return Tools.AppInstallFolder().getFileAsync(srcFileName).then(function (loadFile) {
               return codecs.loadAsync(LeadStreamFactory.create(loadFile))
            })
               .then(function (img) {
                  image = img;

                  // Change the image to 16-bit grayscale 
                  var grayscaleCmd = new Leadtools.ImageProcessing.GrayscaleCommand(16);
                  grayscaleCmd.run(image);

                  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 = 255;
                     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(255, ((x - minVal) * 255 / (maxVal - minVal)))));
                     color.g = color.r;
                     color.b = color.r;
                     color.reserved = 0;
                     palette[x] = color;
                  }
                  image.windowLevel(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 WindowLevelExample()
{
   RasterCodecs codecs = new RasterCodecs();
   // Load an image that has BottomLeft ViewPerspective
   string srcFileName = @"Assets\Image1.cmp";
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));
   // Change the image to 16-bit grayscale 
   GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);
   grayscaleCmd.Run(image);

   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));

   RasterColor[] palette = new RasterColor[size];

   // fill the first half of the LUT with RED
   for (int x = 0; x < size / 2; x++)
   {
      palette[x].R = 255;
      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.ToByte(Math.Min(255, ((x - minVal) * 255 / (maxVal - minVal))));
      palette[x].G = palette[x].R;
      palette[x].B = palette[x].R;
      palette[x].Reserved = 0;
   }
   image.WindowLevel(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 WindowLevelExample(RasterImage image, Stream destStream)
{
   // Change the image to 16-bit grayscale 
   GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);
   grayscaleCmd.Run(image);
   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));
   RasterColor[] palette = new RasterColor[size];

   // fill the first half of the LUT with RED
   for (int x = 0; x < size / 2; x++)
   {
      palette[x].R = 255;
      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.ToByte(Math.Min(255, ((x - minVal) * 255 / (maxVal - minVal))));
      palette[x].G = palette[x].R;
      palette[x].B = palette[x].R;
      palette[x].Reserved = 0;
   }
   image.WindowLevel(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 WindowLevelExample(ByVal image As RasterImage, ByVal destStream As Stream)
   ' Change the image to 16-bit grayscale 
   Dim grayscaleCmd As GrayscaleCommand = New GrayscaleCommand(16)
   grayscaleCmd.Run(image)
   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 RasterColor() = New RasterColor(size - 1){}

   ' fill the first half of the LUT with RED
   Dim x As Integer = 0
   Do While x < size / 2
      palette(x).R = 255
      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.ToByte(Math.Min(255, ((x - minVal) * 255 / (maxVal - minVal))))
      palette(x).G = palette(x).R
      palette(x).B = palette(x).R
      palette(x).Reserved = 0
      x += 1
   Loop
   image.WindowLevel(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing)

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

   image.Dispose()
End Sub
必要条件

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

参照

参照

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