【问题标题】:Rendering DICOM image using Fellow Oak DICOM使用 Fellow Oak DICOM 渲染 DICOM 图像
【发布时间】:2014-04-27 15:58:08
【问题描述】:

我需要从文件中提取 DICOM 图像并将其转换为标准位图。这是我的代码,使用 fo-dicom:

    Bitmap bmp;
    try
    {
        var image = new DicomImage(Context.Server.MapPath("~/IM-0001-0000.dcm"));
        bmp = new Bitmap(image.RenderImage());
    }
    catch (Exception exception)
    {
        //for breakpoint purposes
        throw;
    }

但是,它失败并显示以下消息:

No codec registered for tranfer syntax: JPEG 2000 Image Compression

我不是医学成像方面的专家,而且 Google 也没有发现任何有用的东西。我通过 NuGet 安装了 fo-dicom,所以我想所有必需的引用都已经在项目中了。我错过了什么?

【问题讨论】:

  • 我没有找到这个新的库的文档,你可能会更好地尝试他们的支持论坛,here is one post 关于相同的错误消息(虽然不同的传输语法),也许这篇文章可能会有所帮助。
  • @ChrisO 是的,我看过这篇文章,但还是没有运气。和 AFAIK,没有文档。有没有更好的选择?
  • ClearCanvas(开源)是一个更成熟的 SDK,因此它可能支持开箱即用的 JPEG 2000。 MergeCom(付费软件)也可能支持这一点。虽然我已经使用 DICOM 多年,但从来没有需要支持 JPEG 2000,但这种格式从未真正流行起来。 FWIW,常见的放射学数据集往往是 JPEG 无损(或未压缩),而心脏病学数据集往往是 JPEG 有损。
  • @ChrisO 我尝试了更多文件并设法打开了一个原始文件,但 JPEG 变体似乎都不起作用。我想我会尝试 ClearCanvas,尽管对于学生项目中不应超过 3 行代码的东西来说,这似乎太复杂了。
  • 好的,我刚刚用 NuGet 的 fo-dicom 尝试了一个 JPEG 2000 样本,我可以很好地解压一个样本文件,不会收到 no codec 错误消息。我认为线索是您的 ASP.NET 应用程序在加载本机 DLL 时遇到问题,让我尝试就该问题找到一些建议。 ASP 对本机 DLL 的路径有些奇怪,可能是找不到它们,这可能导致编解码器错误。

标签: c# asp.net dicom fo-dicom


【解决方案1】:

我有同样的问题,并通过将目标平台从 64 位更改为 32 位来解决它。 这就是您在 Visual Studio 2013 上可以做到的方式,但在其他版本中必须几乎相同 项目选项卡-->属性-->构建选项卡-->平台目标

【讨论】:

    【解决方案2】:

    我使用的是 fo-dicom 2.0.2,遇到了同样的问题,通过将 Dicom.Native.dll 与 .exe 放在同一目录中并安装 Visual C++ Redistributable Packages for Visual Studio 2013 来解决 https://www.microsoft.com/en-us/download/details.aspx?id=40784

    【讨论】:

    • 包含本机编解码器 DLL:s 的最可靠方法是确保设置了 Platform Target(项目属性,Build 选项卡)到 x64x86。如果 Platform Target 设置为任何其他值(例如 Any CPU),则构建脚本不知道要选择哪个本机 DLL,您应该在构建输出建议您选择 x64x86。请参阅上面的@srinced's 回复。
    • 确实,我有这些警告,但是当我遇到“没有为传输语法注册编解码器”的问题时,我尝试了所有选项(x64、x86 和任何 CPU),但没有成功。直接从项目运行时我没有任何问题,其他一些计算机有问题并通过安装 2013 vcredist_x86 解决。奇怪的是,在我的 Visual Studio 2013 平台上,我只能选择“活动(任何 CPU)”,我只能更改目标 CPU
    • 请注意,它不是你应该改变的VS工具栏中的解决方案平台,而是BuildPlatform Target /i> 项目属性页面的选项卡。 Platform Target 可以很好地设置为 Any CPU,即使选择的解决方案平台是 x86x64
    • 感谢 Anders 先生,找到了配置管理器并添加了 x86 CPU,警告消失了。我并不在乎,因为即使如此,该应用程序也能正常工作。学到了新东西,再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多