趣百科

LeadTools在图像中设定窗位的具体方法

编辑:Simone 2024-12-18 05:41:27 558 阅读

LeadTools在图像中设定窗位的具体方法

LeadTools是全球最优秀的图形、图像处理开发包,它可以处理各种格式的文件,并包含所有图形、图像的处理和转换功能,支持图形、图像、多媒体、条形码、OCR、Internet、DICOM等等,具有各种软硬件平台下的开发包,是不可多得优秀软件,其在医学图像处理方面的功能非常强大。

打开Visual Studio .NET。点击 文件->新建->项目…。打开新建项目对话框后,在模板中选择“Visual C#”或“Visual Basic”,随后选择“Windows窗体应用程序”。在名称栏中输入项目名称“WindowLevel”,并使用“浏览”按钮选择您工程的存储路径,点击“确定”。

在“解决方案资源管理器”中,右击“引用”,选择“添加引用”。根据当前工程的 Framework 版本和生成目标平台,选择添加相应的LeadTools控件,例如工程中的版本为 Framework 4.0、生成目标平台是 x86,则浏览选择Leadtools For .NET文件夹” \Bin\DotNet4\Win32”,选择以下的DLL“:

Leadtools.dll

Leadtools.Codecs.dll

Leadtools.Codecs.Bmp.dll

Leadtools.WinForms.dll

Leadtools.ImageProcessing.Core.dll

Leadtools.ImageProcessing.Color.dll

Leadtools.ImageProcessing.Utilities.dll

Leadtools.Dicom.dll

Leadtools.Drawing.dll

点击“确定”按钮,将以上所有的DLL添加到应用程序中。

从工具箱(视图->工具箱),添加两个Button控件(将button1的Text属性修改为“加载图像”,将button2的Text属性修改为“设定窗位并保存图像”),一个Panel控件(Name修改为panelImage)。如下图:

切换至Form1的代码视图(右击Form1,选择查看代码),将下面几行代码添加到文件开始处:

1: using Leadtools;

2: using Leadtools.Codecs;

3: using Leadtools.ImageProcessing;

4: using Leadtools.ImageProcessing.Core;

5: using Leadtools.ImageProcessing.Color;

6: using Leadtools.WinForms;

7: using Leadtools.Dicom;

8: using Leadtools.Drawing;

将以下变量添加至Form1类:

1: private RasterCodecs codecs;

2: private RasterImage image;

3: private RasterImageViewer imageViewer;

双击“加载图像”按钮,在button1 Click事件句柄中添加以下代码:

1: codecs = new RasterCodecs();

2: //加载图像

3: image = codecs.Load(Path.Combine(Application.StartupPath, @"..\..\Pic\IMAGE25pxp"));

4: //显示图像

5: imageViewer = new RasterImageViewer();

6: imageViewer.BackColor = Color.DarkCyan;

7: imageViewer.Dock = DockStyle.Fill;

8: imageViewer.InteractiveMode = RasterViewerInteractiveMode.Pan;

9: imageViewer.HorizontalAlignMode = RasterPaintAlignMode.Center;

10: imageViewer.VerticalAlignMode = RasterPaintAlignMode.Center;

11: imageViewer.AutoResetScaleFactor = false;

12: panelImage.Controls.Add(imageViewer);

13: imageViewer.BringToFront();

14: imageViewer.Image = image;

双击“设定窗位并保存图像”按钮,在button2 Click事件句柄中添加以下代码:

1: if (image == null)

2: {

3: MessageBox.Show("请首先加载图像!");

4: return;

5: }

6: // 将图像转换为16位灰度图像

7: GrayscaleCommand grayscaleCmd = new GrayscaleCommand(16);

8: grayscaleCmd.Run(image);

9:

10: MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand();

11: minMaxBitsCmd.Run(image);

12:

13: MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand();

14: minMaxValuesCmd.Run(image);

15:

16: int lowBit = minMaxBitsCmd.MinimumBit;

17: int highBit = minMaxBitsCmd.MaximumBit;

18:

19: int size = (1 << (image.HighBit - image.LowBit + 1));

20: RasterColor[] palette = new RasterColor[size];

21:

22: // 用红色填充LUT的前半部分

23: for (int x = 0; x < size / 2; x++)

24: {

25: palette[x].R = 255;

26: palette[x].G = 0;

27: palette[x].B = 0;

28: palette[x].Reserved = 0;

29: }

30:

31: int minVal = minMaxValuesCmd.MinimumValue;

32: int maxVal = minMaxValuesCmd.MaximumValue;

33:

34: //用灰度值填充后半部分

35: for (int x = (size / 2); x < size; x++)

36: {

37: palette[x].R = Convert.ToByte(Math.Min(255, ((x - minVal) * 255 / (maxVal - minVal))));

38: palette[x].G = palette[x].R;

39: palette[x].B = palette[x].R;

40: palette[x].Reserved = 0;

41: }

42: image.WindowLevel(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing);

43:

44: codecs.Save(image, Path.Combine(Application.StartupPath, @"..\..\Pic\WindowLevelResult.bmp"), RasterImageFormat.Bmp, 0);

编译、运行程序。结果如下图所示:

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/article/105580.html

相关推荐