Sets the 8-bit lookup table (LUT) of this
RasterImage.
Supported in Silverlight, Windows Phone 7
Syntax
Visual Basic (Declaration) | |
---|
Public Sub SetLookupTable( _
ByVal value() As RasterColor _
) |
Visual Basic (Usage) | Copy Code |
---|
Dim instance As RasterImage
Dim value() As RasterColor
instance.SetLookupTable(value) |
Parameters
- value
- An array of RasterColor structures which represent the lookup table (LUT) of this RasterImage.
Example
Visual Basic | Copy Code |
---|
Private Sub SetLookupTable()
RasterSupport.Unlock(RasterSupportType.Medical, "Use a valid key here")
DicomEngine.Startup()
' Get the path of the LEADTOOLS images directory
Dim strImagesDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "//LEADTOOLS Images//"
' Create a RasterCodecs class for saving out images
Dim codecs As RasterCodecs = New RasterCodecs()
' Load a dataset
Dim ds As DicomDataSet = New DicomDataSet()
ds.Load(strImagesDirectory & "IMAGE3.dcm", DicomDataSetLoadFlags.None)
' Get the image but do NOT auto-apply any of the LUTs
Dim element As DicomElement = ds.FindFirstElement(Nothing, DicomTag.PixelData, True)
Dim image As RasterImage = ds.GetImage(element, 0, 16, RasterByteOrder.Gray, DicomGetImageFlags.None)
image.UseLookupTable = True
' Save out the image without any LUTs applied. It should be black
codecs.Save(image, strImagesDirectory & "BeforeSetLookupTable.bmp", RasterImageFormat.Bmp, 8)
' Create a LUT
Dim lut As RasterColor() = New RasterColor(CInt(Math.Pow(2, 16)) - 1) {}
' Get the Minimum and Maximum values so we can calculate appropriate LUT values.
Dim cmdMinMax As MinMaxValuesCommand = New MinMaxValuesCommand()
cmdMinMax.Run(image)
Dim maxVal As Integer = cmdMinMax.MaximumValue
Dim minVal As Integer = cmdMinMax.MinimumValue
Dim i As Integer = 0
Do While i < lut.Length
lut(i).R = Convert.ToByte(Math.Min(255, ((i - minVal) * 255 / (maxVal - minVal))))
lut(i).G = lut(i).R
lut(i).B = lut(i).R
i += 1
Loop
' Set the new lookup table
image.SetLookupTable(lut)
' Save out the image with the LUT applied. It should look normal
codecs.Save(image, strImagesDirectory & "AfterSetLookupTable.bmp", RasterImageFormat.Bmp, 8)
DicomEngine.Shutdown()
End Sub |
C# | Copy Code |
---|
public void SetLookupTable()
{
RasterSupport.Unlock(RasterSupportType.Medical, "Use a valid key here");
DicomEngine.Startup();
// Create a RasterCodecs class for saving out images
RasterCodecs codecs = new RasterCodecs();
// Load a dataset
DicomDataSet ds = new DicomDataSet();
ds.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm"), DicomDataSetLoadFlags.None);
// Get the image but do NOT auto-apply any of the LUTs
DicomElement element = ds.FindFirstElement(null, DicomTag.PixelData, true);
RasterImage image = ds.GetImage(element, 0, 16, RasterByteOrder.Gray, DicomGetImageFlags.None);
image.UseLookupTable = true;
// Save out the image without any LUTs applied. It should be black
codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "BeforeSetLookupTable.bmp"), RasterImageFormat.Bmp, 8);
// Create a LUT
RasterColor[] lut = new RasterColor[(int)Math.Pow(2, 16)];
// Get the Minimum and Maximum values so we can calculate appropriate LUT values.
MinMaxValuesCommand cmdMinMax = new MinMaxValuesCommand();
cmdMinMax.Run(image);
int maxVal = cmdMinMax.MaximumValue;
int minVal = cmdMinMax.MinimumValue;
for(int i = 0; i < lut.Length; i++)
{
lut[i].R = Convert.ToByte(Math.Min(255, ((i - minVal) * 255 / (maxVal - minVal))));
lut[i].G = lut[i].R;
lut[i].B = lut[i].R;
}
// Set the new lookup table
image.SetLookupTable(lut);
// Save out the image with the LUT applied. It should look normal
codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "AfterSetLookupTable.bmp"), RasterImageFormat.Bmp, 8);
DicomEngine.Shutdown();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
} |
SilverlightCSharp | Copy Code |
---|
public void SetLookupTable(Stream dataSetStream, Stream destStream1, Stream destStream2)
{
RasterSupport.Unlock(RasterSupportType.Medical, "Use a valid key here");
// Create a RasterCodecs class for saving out images
RasterCodecs codecs = new RasterCodecs();
// Load a dataset
DicomDataSet ds = new DicomDataSet();
ds.Load(dataSetStream, DicomDataSetLoadFlags.None);
// Get the image but do NOT auto-apply any of the LUTs
DicomElement element = ds.FindFirstElement(null, DicomTag.PixelData, true);
RasterImage image = ds.GetImage(element, 0, 16, RasterByteOrder.Gray, DicomGetImageFlags.None);
image.UseLookupTable = true;
// Save out the image without any LUTs applied. It should be black
codecs.Save(image, destStream1, RasterImageFormat.Bmp, 8);
// Create a LUT
RasterColor[] lut = new RasterColor[(int)Math.Pow(2, 16)];
// Get the Minimum and Maximum values so we can calculate appropriate LUT values.
MinMaxValuesCommand cmdMinMax = new MinMaxValuesCommand();
cmdMinMax.Run(image);
int maxVal = cmdMinMax.MaximumValue;
int minVal = cmdMinMax.MinimumValue;
for (int i = 0; i < lut.Length; i++)
{
lut[i].R = Convert.ToByte(Math.Min(255, ((i - minVal) * 255 / (maxVal - minVal))));
lut[i].G = lut[i].R;
lut[i].B = lut[i].R;
}
// Set the new lookup table
image.SetLookupTable(lut);
// Save out the image with the LUT applied. It should look normal
codecs.Save(image, destStream2, RasterImageFormat.Bmp, 8);
DicomEngine.Shutdown();
} |
SilverlightVB | Copy Code |
---|
Public Sub SetLookupTable(ByVal dataSetStream As Stream, ByVal destStream1 As Stream, ByVal destStream2 As Stream)
RasterSupport.Unlock(RasterSupportType.Medical, "Use a valid key here")
' Create a RasterCodecs class for saving out images
Dim codecs As RasterCodecs = New RasterCodecs()
' Load a dataset
Dim ds As DicomDataSet = New DicomDataSet()
ds.Load(dataSetStream, DicomDataSetLoadFlags.None)
' Get the image but do NOT auto-apply any of the LUTs
Dim element As DicomElement = ds.FindFirstElement(Nothing, DicomTag.PixelData, True)
Dim image As RasterImage = ds.GetImage(element, 0, 16, RasterByteOrder.Gray, DicomGetImageFlags.None)
image.UseLookupTable = True
' Save out the image without any LUTs applied. It should be black
codecs.Save(image, destStream1, RasterImageFormat.Bmp, 8)
' Create a LUT
Dim lut As RasterColor() = New RasterColor(CInt(Math.Pow(2, 16)) - 1){}
' Get the Minimum and Maximum values so we can calculate appropriate LUT values.
Dim cmdMinMax As MinMaxValuesCommand = New MinMaxValuesCommand()
cmdMinMax.Run(image)
Dim maxVal As Integer = cmdMinMax.MaximumValue
Dim minVal As Integer = cmdMinMax.MinimumValue
Dim i As Integer = 0
Do While i < lut.Length
lut(i).R = Convert.ToByte(Math.Min(255, ((i - minVal) * 255 / (maxVal - minVal))))
lut(i).G = lut(i).R
lut(i).B = lut(i).R
i += 1
Loop
' Set the new lookup table
image.SetLookupTable(lut)
' Save out the image with the LUT applied. It should look normal
codecs.Save(image, destStream2, RasterImageFormat.Bmp, 8)
DicomEngine.Shutdown()
End Sub |
Remarks
Requirements
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7
See Also