在图片框中显示Simpleitk图像

时间:2014-06-04 13:40:55

标签: c# system.drawing itk simpleitk

我想在C#程序中使用simpleitk读取dicom或png图像,并将结果显示在pictureBox中。据我所知,图片框只允许“system.drawing.image”而不是itk。有没有办法做到这一点。  她是我的代码:

OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "PNG|*.png";
if (fd.ShowDialog() == DialogResult.OK)
{
    string file = fd.FileName;
    ImageFileReader reader = new ImageFileReader();
    reader.SetFileName(file);
    itk.simple.Image image = reader.Execute();
     Box.Image = image;
}

2 个答案:

答案 0 :(得分:3)

您需要访问SimpleITK所持有的原始图像缓冲区。这可以通过Image :: GetBufferAs“TYPE”方法访问。

以下是使用此方法的简要example

  // Cast so we know the the pixel type
  input = SimpleITK.Cast(input, PixelId.sitkFloat32);
  // calculate the nubmer of pixels
  VectorUInt32 size = input.GetSize();
  int len = 1;
  for (int dim = 0; dim < input.GetDimension(); dim++) {
    len *= (int)size[dim];
  }
  IntPtr buffer = input.GetBufferAsFloat();

我相信这可以转换为带有.Net的Bitmap

答案 1 :(得分:-2)

using (OpenFileDialog fd = new OpenFileDialog())
{
    fd.Filter = "PNG|*.png";

    if (fd.ShowDialog() == DialogResult.OK)
    {
        Box.Image = new Bitmap(fd.FileName);
    }
}